diff --git a/.env.example b/.env.example index db61606..ea0665b 100644 --- a/.env.example +++ b/.env.example @@ -3,7 +3,6 @@ APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost -APP_URL_API="${APP_URL}/api/" LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null @@ -30,7 +29,7 @@ REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp -MAIL_HOST=mailhog +MAIL_HOST=mailpit MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null @@ -38,24 +37,11 @@ MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" -AWS_PUBLIC_ACCESS_KEY_ID= -AWS_PUBLIC_SECRET_ACCESS_KEY= -AWS_PUBLIC_DEFAULT_REGION="us-west-002" -AWS_PUBLIC_BUCKET= -AWS_PUBLIC_USE_PATH_STYLE_ENDPOINT=false -AWS_PUBLIC_ENDPOINT= -AWS_PUBLIC_URL= - -AWS_PRIVATE_ACCESS_KEY_ID= -AWS_PRIVATE_SECRET_ACCESS_KEY= -AWS_PRIVATE_DEFAULT_REGION="us-west-002" -AWS_PRIVATE_BUCKET= -AWS_PRIVATE_USE_PATH_STYLE_ENDPOINT=false -AWS_PRIVATE_ENDPOINT= -AWS_PRIVATE_URL= - -CLOUDFLARE_ZONE_ID= -CLOUDFLARE_API_KEY= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID= PUSHER_APP_KEY= @@ -65,6 +51,7 @@ PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=mt1 +VITE_APP_NAME="${APP_NAME}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" diff --git a/.env.testing b/.env.testing deleted file mode 100644 index 999d7c8..0000000 --- a/.env.testing +++ /dev/null @@ -1,59 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY=base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= -APP_DEBUG=true -APP_URL=http://127.0.0.1 -APP_URL_API="${APP_URL}/api/" - -LOG_CHANNEL=stack -LOG_LEVEL=debug - -DB_CONNECTION=sqlite -DB_DATABASE=:memory: - -BROADCAST_DRIVER=log -CACHE_DRIVER=array -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=log -MAIL_HOST=null -MAIL_PORT=null -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - -CONTACT_ADDRESS="hello@stemmechanics.com.au" -CONTACT_SUBJECT="Contact from website" - -STORAGE_LOCAL_URL="${APP_URL}/api/media/%ID%/download" -STORAGE_PUBLIC_URL="${APP_URL}/uploads/%NAME%" \ No newline at end of file diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6c27ec2..0000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -.github/ -.vscode/ -vendor/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0e015c6..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - env: { - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:vue/vue3-strongly-recommended", - "prettier", - "plugin:jsdoc/recommended", - "plugin:@typescript-eslint/recommended", - ], - rules: { - "vue/multi-word-component-names": "off", - indent: ["off", 4, { ignoredNodes: ["ConditionalExpression"] }], - "@typescript-eslint/no-inferrable-types": "off", - }, - plugins: ["jsdoc", "@typescript-eslint"], - parser: "vue-eslint-parser", - parserOptions: { - parser: "@typescript-eslint/parser", - }, -}; diff --git a/.gitattributes b/.gitattributes index 7dbbf41..fcb21d3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -* text=auto +* text=auto eol=lf *.blade.php diff=html *.css diff=css diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 461cddb..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,15 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml deleted file mode 100644 index 003cbd5..0000000 --- a/.github/workflows/laravel.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Laravel - -on: - push: - branches: ["main"] - -jobs: - laravel-tests: - runs-on: ubuntu-latest - - steps: - - uses: shivammathur/setup-php@v2 - with: - php-version: "8.1" - - uses: actions/checkout@v3 - - name: Copy .env - run: php -r "file_exists('.env') || copy('.env.example', '.env');" - - name: Install Dependencies - run: composer install -q --no-interaction --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache - - name: Create Database - run: | - mkdir -p database - touch database/database.sqlite - - name: Execute tests (Unit and Feature tests) via PHPUnit - env: - DB_CONNECTION: sqlite - DB_DATABASE: database/database.sqlite - run: vendor/bin/phpunit - - name: Install Node.js - uses: actions/setup-node@v2 - with: - node-version: "16.x" - - name: Install dependencies - run: npm ci - - name: Run Vue tests - env: - LARAVEL_BYPASS_ENV_CHECK: "1" - run: npm run test diff --git a/.gitignore b/.gitignore index d7d0c27..7fe978f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,258 +1,19 @@ -### Composer ### -composer.phar -/vendor/ - -# composer.lock - -### Laravel ### -node_modules/ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json npm-debug.log yarn-error.log - -# Laravel 4 specific -bootstrap/compiled.php -app/storage/ - -# Laravel 5 & Lumen specific -public/storage -public/hot - -# Laravel 5 & Lumen specific with changed public path -public_html/storage -public_html/hot - -storage/*.key -.env -Homestead.yaml -Homestead.json -/.vagrant -/.phpunit.cache - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### macOS Patch ### -# iCloud generated files -*.icloud - -### Node ### -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -### Node Patch ### -# Serverless Webpack directories -.webpack/ - -# Optional stylelint cache - -# SvelteKit build / generate output -.svelte-kit - -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets - -# Local History for Visual Studio Code -.history/ - -# Built Visual Studio Code Extensions -*.vsix - -### VisualStudioCode Patch ### -# Ignore all local history of files -.history -.ionide - -### Vue ### -# gitignore template for Vue.js projects -# -# Recommended template: Node.gitignore - -# TODO: where does this rule come from? -docs/_book - -# TODO: where does this rule come from? -test/ - -### Vuejs ### -# Recommended template: Node.gitignore - -dist/ - -### This Project ### -/public/uploads -/public/build -*.key - -### TinyMCE ### -/public/tinymce -!/public/tinymce/skins/ui/stemmech/ - -### Synk ### -.dccache - -### TempCodeRunner ### -tempCodeRunnerFile.* - -### PHPUnit ### -.phpunit.result.cache -.gitignore - -### Codesniffer ### -phpcs.phar -phpcbf.phar +/.fleet +/.idea +/.vscode diff --git a/.ls-lint.yml b/.ls-lint.yml deleted file mode 100644 index 1269e23..0000000 --- a/.ls-lint.yml +++ /dev/null @@ -1,14 +0,0 @@ -ls: - resources/js/store: - .ts: pascalcase - "*": - .js: camelcase - .ts: camelcase - .vue: pascalcase - .dir: snakecase - .type.ts: camelcase -ignore: - - node_modules - - vendor - - public/build - - public/tinymce diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 57d158c..0000000 --- a/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "bracketSameLine": true, - "tabWidth": 4, - "htmlWhitespaceSensitivity": "css" -} diff --git a/.vscode/settings.json b/.vscode/settings.json index 65f2c6a..4988eb6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,20 +1,5 @@ { - "editor.formatOnType": true, - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - // "source.organizeImports": true // <-- when enabled, breaks tinymce required import order - }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[vue]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[php]": { - // "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" - "editor.defaultFormatter": "wongjn.php-sniffer" - }, - "cSpell.words": ["TIMESTAMPDIFF"] + "files.associations": { + "*.css": "tailwindcss" + } } diff --git a/README.md b/README.md index bf0ddd9..1824fc1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Laravel Logo

-Build Status +Build Status Total Downloads Latest Stable Version License @@ -31,23 +31,23 @@ If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Lar ## Laravel Sponsors -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). ### Premium Partners - **[Vehikl](https://vehikl.com/)** - **[Tighten Co.](https://tighten.co)** +- **[WebReinvent](https://webreinvent.com/)** - **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** - **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** - **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Jump24](https://jump24.co.uk)** +- **[Redberry](https://redberry.international/laravel/)** +- **[Active Logic](https://activelogic.com)** +- **[byte5](https://byte5.de)** - **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** ## Contributing diff --git a/_ide_helper.php b/_ide_helper.php deleted file mode 100644 index fea124a..0000000 --- a/_ide_helper.php +++ /dev/null @@ -1,23355 +0,0 @@ - - * @see https://github.com/barryvdh/laravel-ide-helper - */ - - namespace Illuminate\Support\Facades { - /** - * - * - * @see \Illuminate\Foundation\Application - */ - class App { - /** - * Get the version number of the application. - * - * @return string - * @static - */ - public static function version() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->version(); - } - /** - * Run the given array of bootstrap classes. - * - * @param string[] $bootstrappers - * @return void - * @static - */ - public static function bootstrapWith($bootstrappers) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->bootstrapWith($bootstrappers); - } - /** - * Register a callback to run after loading the environment. - * - * @param \Closure $callback - * @return void - * @static - */ - public static function afterLoadingEnvironment($callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->afterLoadingEnvironment($callback); - } - /** - * Register a callback to run before a bootstrapper. - * - * @param string $bootstrapper - * @param \Closure $callback - * @return void - * @static - */ - public static function beforeBootstrapping($bootstrapper, $callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->beforeBootstrapping($bootstrapper, $callback); - } - /** - * Register a callback to run after a bootstrapper. - * - * @param string $bootstrapper - * @param \Closure $callback - * @return void - * @static - */ - public static function afterBootstrapping($bootstrapper, $callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->afterBootstrapping($bootstrapper, $callback); - } - /** - * Determine if the application has been bootstrapped before. - * - * @return bool - * @static - */ - public static function hasBeenBootstrapped() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->hasBeenBootstrapped(); - } - /** - * Set the base path for the application. - * - * @param string $basePath - * @return \Illuminate\Foundation\Application - * @static - */ - public static function setBasePath($basePath) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->setBasePath($basePath); - } - /** - * Get the path to the application "app" directory. - * - * @param string $path - * @return string - * @static - */ - public static function path($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->path($path); - } - /** - * Set the application directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useAppPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useAppPath($path); - } - /** - * Get the base path of the Laravel installation. - * - * @param string $path - * @return string - * @static - */ - public static function basePath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->basePath($path); - } - /** - * Get the path to the bootstrap directory. - * - * @param string $path - * @return string - * @static - */ - public static function bootstrapPath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->bootstrapPath($path); - } - /** - * Set the bootstrap file directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useBootstrapPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useBootstrapPath($path); - } - /** - * Get the path to the application configuration files. - * - * @param string $path - * @return string - * @static - */ - public static function configPath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->configPath($path); - } - /** - * Set the configuration directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useConfigPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useConfigPath($path); - } - /** - * Get the path to the database directory. - * - * @param string $path - * @return string - * @static - */ - public static function databasePath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->databasePath($path); - } - /** - * Set the database directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useDatabasePath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useDatabasePath($path); - } - /** - * Get the path to the language files. - * - * @param string $path - * @return string - * @static - */ - public static function langPath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->langPath($path); - } - /** - * Set the language file directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useLangPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useLangPath($path); - } - /** - * Get the path to the public / web directory. - * - * @param string $path - * @return string - * @static - */ - public static function publicPath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->publicPath($path); - } - /** - * Set the public / web directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function usePublicPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->usePublicPath($path); - } - /** - * Get the path to the storage directory. - * - * @param string $path - * @return string - * @static - */ - public static function storagePath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->storagePath($path); - } - /** - * Set the storage directory. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useStoragePath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useStoragePath($path); - } - /** - * Get the path to the resources directory. - * - * @param string $path - * @return string - * @static - */ - public static function resourcePath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->resourcePath($path); - } - /** - * Get the path to the views directory. - * - * This method returns the first configured path in the array of view paths. - * - * @param string $path - * @return string - * @static - */ - public static function viewPath($path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->viewPath($path); - } - /** - * Join the given paths together. - * - * @param string $basePath - * @param string $path - * @return string - * @static - */ - public static function joinPaths($basePath, $path = '') - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->joinPaths($basePath, $path); - } - /** - * Get the path to the environment file directory. - * - * @return string - * @static - */ - public static function environmentPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->environmentPath(); - } - /** - * Set the directory for the environment file. - * - * @param string $path - * @return \Illuminate\Foundation\Application - * @static - */ - public static function useEnvironmentPath($path) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->useEnvironmentPath($path); - } - /** - * Set the environment file to be loaded during bootstrapping. - * - * @param string $file - * @return \Illuminate\Foundation\Application - * @static - */ - public static function loadEnvironmentFrom($file) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->loadEnvironmentFrom($file); - } - /** - * Get the environment file the application is using. - * - * @return string - * @static - */ - public static function environmentFile() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->environmentFile(); - } - /** - * Get the fully qualified path to the environment file. - * - * @return string - * @static - */ - public static function environmentFilePath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->environmentFilePath(); - } - /** - * Get or check the current application environment. - * - * @param string|array $environments - * @return string|bool - * @static - */ - public static function environment(...$environments) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->environment(...$environments); - } - /** - * Determine if the application is in the local environment. - * - * @return bool - * @static - */ - public static function isLocal() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isLocal(); - } - /** - * Determine if the application is in the production environment. - * - * @return bool - * @static - */ - public static function isProduction() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isProduction(); - } - /** - * Detect the application's current environment. - * - * @param \Closure $callback - * @return string - * @static - */ - public static function detectEnvironment($callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->detectEnvironment($callback); - } - /** - * Determine if the application is running in the console. - * - * @return bool - * @static - */ - public static function runningInConsole() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->runningInConsole(); - } - /** - * Determine if the application is running unit tests. - * - * @return bool - * @static - */ - public static function runningUnitTests() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->runningUnitTests(); - } - /** - * Determine if the application is running with debug mode enabled. - * - * @return bool - * @static - */ - public static function hasDebugModeEnabled() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->hasDebugModeEnabled(); - } - /** - * Register all of the configured providers. - * - * @return void - * @static - */ - public static function registerConfiguredProviders() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->registerConfiguredProviders(); - } - /** - * Register a service provider with the application. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @param bool $force - * @return \Illuminate\Support\ServiceProvider - * @static - */ - public static function register($provider, $force = false) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->register($provider, $force); - } - /** - * Get the registered service provider instance if it exists. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @return \Illuminate\Support\ServiceProvider|null - * @static - */ - public static function getProvider($provider) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getProvider($provider); - } - /** - * Get the registered service provider instances if any exist. - * - * @param \Illuminate\Support\ServiceProvider|string $provider - * @return array - * @static - */ - public static function getProviders($provider) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getProviders($provider); - } - /** - * Resolve a service provider instance from the class name. - * - * @param string $provider - * @return \Illuminate\Support\ServiceProvider - * @static - */ - public static function resolveProvider($provider) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->resolveProvider($provider); - } - /** - * Load and boot all of the remaining deferred providers. - * - * @return void - * @static - */ - public static function loadDeferredProviders() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->loadDeferredProviders(); - } - /** - * Load the provider for a deferred service. - * - * @param string $service - * @return void - * @static - */ - public static function loadDeferredProvider($service) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->loadDeferredProvider($service); - } - /** - * Register a deferred provider and service. - * - * @param string $provider - * @param string|null $service - * @return void - * @static - */ - public static function registerDeferredProvider($provider, $service = null) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->registerDeferredProvider($provider, $service); - } - /** - * Resolve the given type from the container. - * - * @param string $abstract - * @param array $parameters - * @return mixed - * @static - */ - public static function make($abstract, $parameters = []) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->make($abstract, $parameters); - } - /** - * Determine if the given abstract type has been bound. - * - * @param string $abstract - * @return bool - * @static - */ - public static function bound($abstract) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->bound($abstract); - } - /** - * Determine if the application has booted. - * - * @return bool - * @static - */ - public static function isBooted() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isBooted(); - } - /** - * Boot the application's service providers. - * - * @return void - * @static - */ - public static function boot() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->boot(); - } - /** - * Register a new boot listener. - * - * @param callable $callback - * @return void - * @static - */ - public static function booting($callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->booting($callback); - } - /** - * Register a new "booted" listener. - * - * @param callable $callback - * @return void - * @static - */ - public static function booted($callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->booted($callback); - } - /** - * {@inheritdoc} - * - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function handle($request, $type = 1, $catch = true) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->handle($request, $type, $catch); - } - /** - * Determine if middleware has been disabled for the application. - * - * @return bool - * @static - */ - public static function shouldSkipMiddleware() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->shouldSkipMiddleware(); - } - /** - * Get the path to the cached services.php file. - * - * @return string - * @static - */ - public static function getCachedServicesPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getCachedServicesPath(); - } - /** - * Get the path to the cached packages.php file. - * - * @return string - * @static - */ - public static function getCachedPackagesPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getCachedPackagesPath(); - } - /** - * Determine if the application configuration is cached. - * - * @return bool - * @static - */ - public static function configurationIsCached() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->configurationIsCached(); - } - /** - * Get the path to the configuration cache file. - * - * @return string - * @static - */ - public static function getCachedConfigPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getCachedConfigPath(); - } - /** - * Determine if the application routes are cached. - * - * @return bool - * @static - */ - public static function routesAreCached() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->routesAreCached(); - } - /** - * Get the path to the routes cache file. - * - * @return string - * @static - */ - public static function getCachedRoutesPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getCachedRoutesPath(); - } - /** - * Determine if the application events are cached. - * - * @return bool - * @static - */ - public static function eventsAreCached() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->eventsAreCached(); - } - /** - * Get the path to the events cache file. - * - * @return string - * @static - */ - public static function getCachedEventsPath() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getCachedEventsPath(); - } - /** - * Add new prefix to list of absolute path prefixes. - * - * @param string $prefix - * @return \Illuminate\Foundation\Application - * @static - */ - public static function addAbsoluteCachePathPrefix($prefix) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->addAbsoluteCachePathPrefix($prefix); - } - /** - * Get an instance of the maintenance mode manager implementation. - * - * @return \Illuminate\Contracts\Foundation\MaintenanceMode - * @static - */ - public static function maintenanceMode() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->maintenanceMode(); - } - /** - * Determine if the application is currently down for maintenance. - * - * @return bool - * @static - */ - public static function isDownForMaintenance() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isDownForMaintenance(); - } - /** - * Throw an HttpException with the given data. - * - * @param int $code - * @param string $message - * @param array $headers - * @return \Illuminate\Foundation\never - * @throws \Symfony\Component\HttpKernel\Exception\HttpException - * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - * @static - */ - public static function abort($code, $message = '', $headers = []) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->abort($code, $message, $headers); - } - /** - * Register a terminating callback with the application. - * - * @param callable|string $callback - * @return \Illuminate\Foundation\Application - * @static - */ - public static function terminating($callback) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->terminating($callback); - } - /** - * Terminate the application. - * - * @return void - * @static - */ - public static function terminate() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->terminate(); - } - /** - * Get the service providers that have been loaded. - * - * @return array - * @static - */ - public static function getLoadedProviders() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getLoadedProviders(); - } - /** - * Determine if the given service provider is loaded. - * - * @param string $provider - * @return bool - * @static - */ - public static function providerIsLoaded($provider) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->providerIsLoaded($provider); - } - /** - * Get the application's deferred services. - * - * @return array - * @static - */ - public static function getDeferredServices() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getDeferredServices(); - } - /** - * Set the application's deferred services. - * - * @param array $services - * @return void - * @static - */ - public static function setDeferredServices($services) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->setDeferredServices($services); - } - /** - * Add an array of services to the application's deferred services. - * - * @param array $services - * @return void - * @static - */ - public static function addDeferredServices($services) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->addDeferredServices($services); - } - /** - * Determine if the given service is a deferred service. - * - * @param string $service - * @return bool - * @static - */ - public static function isDeferredService($service) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isDeferredService($service); - } - /** - * Configure the real-time facade namespace. - * - * @param string $namespace - * @return void - * @static - */ - public static function provideFacades($namespace) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->provideFacades($namespace); - } - /** - * Get the current application locale. - * - * @return string - * @static - */ - public static function getLocale() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getLocale(); - } - /** - * Get the current application locale. - * - * @return string - * @static - */ - public static function currentLocale() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->currentLocale(); - } - /** - * Get the current application fallback locale. - * - * @return string - * @static - */ - public static function getFallbackLocale() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getFallbackLocale(); - } - /** - * Set the current application locale. - * - * @param string $locale - * @return void - * @static - */ - public static function setLocale($locale) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->setLocale($locale); - } - /** - * Set the current application fallback locale. - * - * @param string $fallbackLocale - * @return void - * @static - */ - public static function setFallbackLocale($fallbackLocale) - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->setFallbackLocale($fallbackLocale); - } - /** - * Determine if the application locale is the given locale. - * - * @param string $locale - * @return bool - * @static - */ - public static function isLocale($locale) - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isLocale($locale); - } - /** - * Register the core class aliases in the container. - * - * @return void - * @static - */ - public static function registerCoreContainerAliases() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->registerCoreContainerAliases(); - } - /** - * Flush the container of all bindings and resolved instances. - * - * @return void - * @static - */ - public static function flush() - { - /** @var \Illuminate\Foundation\Application $instance */ - $instance->flush(); - } - /** - * Get the application namespace. - * - * @return string - * @throws \RuntimeException - * @static - */ - public static function getNamespace() - { - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getNamespace(); - } - /** - * Define a contextual binding. - * - * @param array|string $concrete - * @return \Illuminate\Contracts\Container\ContextualBindingBuilder - * @static - */ - public static function when($concrete) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->when($concrete); - } - /** - * Returns true if the container can return an entry for the given identifier. - * - * Returns false otherwise. - * - * `has($id)` returning true does not mean that `get($id)` will not throw an exception. - * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. - * - * @return bool - * @param string $id Identifier of the entry to look for. - * @return bool - * @static - */ - public static function has($id) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->has($id); - } - /** - * Determine if the given abstract type has been resolved. - * - * @param string $abstract - * @return bool - * @static - */ - public static function resolved($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->resolved($abstract); - } - /** - * Determine if a given type is shared. - * - * @param string $abstract - * @return bool - * @static - */ - public static function isShared($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isShared($abstract); - } - /** - * Determine if a given string is an alias. - * - * @param string $name - * @return bool - * @static - */ - public static function isAlias($name) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->isAlias($name); - } - /** - * Register a binding with the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @param bool $shared - * @return void - * @throws \TypeError - * @static - */ - public static function bind($abstract, $concrete = null, $shared = false) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->bind($abstract, $concrete, $shared); - } - /** - * Determine if the container has a method binding. - * - * @param string $method - * @return bool - * @static - */ - public static function hasMethodBinding($method) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->hasMethodBinding($method); - } - /** - * Bind a callback to resolve with Container::call. - * - * @param array|string $method - * @param \Closure $callback - * @return void - * @static - */ - public static function bindMethod($method, $callback) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->bindMethod($method, $callback); - } - /** - * Get the method binding for the given method. - * - * @param string $method - * @param mixed $instance - * @return mixed - * @static - */ - public static function callMethodBinding($method, $instance) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->callMethodBinding($method, $instance); - } - /** - * Add a contextual binding to the container. - * - * @param string $concrete - * @param string $abstract - * @param \Closure|string $implementation - * @return void - * @static - */ - public static function addContextualBinding($concrete, $abstract, $implementation) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->addContextualBinding($concrete, $abstract, $implementation); - } - /** - * Register a binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @param bool $shared - * @return void - * @static - */ - public static function bindIf($abstract, $concrete = null, $shared = false) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->bindIf($abstract, $concrete, $shared); - } - /** - * Register a shared binding in the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - * @static - */ - public static function singleton($abstract, $concrete = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->singleton($abstract, $concrete); - } - /** - * Register a shared binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - * @static - */ - public static function singletonIf($abstract, $concrete = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->singletonIf($abstract, $concrete); - } - /** - * Register a scoped binding in the container. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - * @static - */ - public static function scoped($abstract, $concrete = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->scoped($abstract, $concrete); - } - /** - * Register a scoped binding if it hasn't already been registered. - * - * @param string $abstract - * @param \Closure|string|null $concrete - * @return void - * @static - */ - public static function scopedIf($abstract, $concrete = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->scopedIf($abstract, $concrete); - } - /** - * "Extend" an abstract type in the container. - * - * @param string $abstract - * @param \Closure $closure - * @return void - * @throws \InvalidArgumentException - * @static - */ - public static function extend($abstract, $closure) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->extend($abstract, $closure); - } - /** - * Register an existing instance as shared in the container. - * - * @param string $abstract - * @param mixed $instance - * @return mixed - * @static - */ - public static function instance($abstract, $instance) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->instance($abstract, $instance); - } - /** - * Assign a set of tags to a given binding. - * - * @param array|string $abstracts - * @param array|mixed $tags - * @return void - * @static - */ - public static function tag($abstracts, $tags) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->tag($abstracts, $tags); - } - /** - * Resolve all of the bindings for a given tag. - * - * @param string $tag - * @return \Illuminate\Container\iterable - * @static - */ - public static function tagged($tag) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->tagged($tag); - } - /** - * Alias a type to a different name. - * - * @param string $abstract - * @param string $alias - * @return void - * @throws \LogicException - * @static - */ - public static function alias($abstract, $alias) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->alias($abstract, $alias); - } - /** - * Bind a new callback to an abstract's rebind event. - * - * @param string $abstract - * @param \Closure $callback - * @return mixed - * @static - */ - public static function rebinding($abstract, $callback) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->rebinding($abstract, $callback); - } - /** - * Refresh an instance on the given target and method. - * - * @param string $abstract - * @param mixed $target - * @param string $method - * @return mixed - * @static - */ - public static function refresh($abstract, $target, $method) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->refresh($abstract, $target, $method); - } - /** - * Wrap the given closure such that its dependencies will be injected when executed. - * - * @param \Closure $callback - * @param array $parameters - * @return \Closure - * @static - */ - public static function wrap($callback, $parameters = []) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->wrap($callback, $parameters); - } - /** - * Call the given Closure / class@method and inject its dependencies. - * - * @param callable|string $callback - * @param array $parameters - * @param string|null $defaultMethod - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function call($callback, $parameters = [], $defaultMethod = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->call($callback, $parameters, $defaultMethod); - } - /** - * Get a closure to resolve the given type from the container. - * - * @param string $abstract - * @return \Closure - * @static - */ - public static function factory($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->factory($abstract); - } - /** - * An alias function name for make(). - * - * @param string|callable $abstract - * @param array $parameters - * @return mixed - * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @static - */ - public static function makeWith($abstract, $parameters = []) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->makeWith($abstract, $parameters); - } - /** - * Finds an entry of the container by its identifier and returns it. - * - * @return mixed - * @param string $id Identifier of the entry to look for. - * @throws NotFoundExceptionInterface No entry was found for **this** identifier. - * @throws ContainerExceptionInterface Error while retrieving the entry. - * @return mixed Entry. - * @static - */ - public static function get($id) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->get($id); - } - /** - * Instantiate a concrete instance of the given type. - * - * @param \Closure|string $concrete - * @return mixed - * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @throws \Illuminate\Contracts\Container\CircularDependencyException - * @static - */ - public static function build($concrete) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->build($concrete); - } - /** - * Register a new before resolving callback for all types. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - * @static - */ - public static function beforeResolving($abstract, $callback = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->beforeResolving($abstract, $callback); - } - /** - * Register a new resolving callback. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - * @static - */ - public static function resolving($abstract, $callback = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->resolving($abstract, $callback); - } - /** - * Register a new after resolving callback for all types. - * - * @param \Closure|string $abstract - * @param \Closure|null $callback - * @return void - * @static - */ - public static function afterResolving($abstract, $callback = null) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->afterResolving($abstract, $callback); - } - /** - * Get the container's bindings. - * - * @return array - * @static - */ - public static function getBindings() - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getBindings(); - } - /** - * Get the alias for an abstract if available. - * - * @param string $abstract - * @return string - * @static - */ - public static function getAlias($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->getAlias($abstract); - } - /** - * Remove all of the extender callbacks for a given type. - * - * @param string $abstract - * @return void - * @static - */ - public static function forgetExtenders($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->forgetExtenders($abstract); - } - /** - * Remove a resolved instance from the instance cache. - * - * @param string $abstract - * @return void - * @static - */ - public static function forgetInstance($abstract) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->forgetInstance($abstract); - } - /** - * Clear all of the instances from the container. - * - * @return void - * @static - */ - public static function forgetInstances() - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->forgetInstances(); - } - /** - * Clear all of the scoped instances from the container. - * - * @return void - * @static - */ - public static function forgetScopedInstances() - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->forgetScopedInstances(); - } - /** - * Get the globally available instance of the container. - * - * @return static - * @static - */ - public static function getInstance() - { //Method inherited from \Illuminate\Container\Container - return \Illuminate\Foundation\Application::getInstance(); - } - /** - * Set the shared instance of the container. - * - * @param \Illuminate\Contracts\Container\Container|null $container - * @return \Illuminate\Contracts\Container\Container|static - * @static - */ - public static function setInstance($container = null) - { //Method inherited from \Illuminate\Container\Container - return \Illuminate\Foundation\Application::setInstance($container); - } - /** - * Determine if a given offset exists. - * - * @param string $key - * @return bool - * @static - */ - public static function offsetExists($key) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->offsetExists($key); - } - /** - * Get the value at a given offset. - * - * @param string $key - * @return mixed - * @static - */ - public static function offsetGet($key) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - return $instance->offsetGet($key); - } - /** - * Set the value at a given offset. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function offsetSet($key, $value) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->offsetSet($key, $value); - } - /** - * Unset the value at a given offset. - * - * @param string $key - * @return void - * @static - */ - public static function offsetUnset($key) - { //Method inherited from \Illuminate\Container\Container - /** @var \Illuminate\Foundation\Application $instance */ - $instance->offsetUnset($key); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Foundation\Application::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Foundation\Application::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Foundation\Application::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Foundation\Application::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Foundation\Console\Kernel - */ - class Artisan { - /** - * Re-route the Symfony command events to their Laravel counterparts. - * - * @internal - * @return \App\Console\Kernel - * @static - */ - public static function rerouteSymfonyCommandEvents() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->rerouteSymfonyCommandEvents(); - } - /** - * Run the console application. - * - * @param \Symfony\Component\Console\Input\InputInterface $input - * @param \Symfony\Component\Console\Output\OutputInterface|null $output - * @return int - * @static - */ - public static function handle($input, $output = null) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->handle($input, $output); - } - /** - * Terminate the application. - * - * @param \Symfony\Component\Console\Input\InputInterface $input - * @param int $status - * @return void - * @static - */ - public static function terminate($input, $status) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->terminate($input, $status); - } - /** - * Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time. - * - * @param \DateTimeInterface|\Carbon\CarbonInterval|float|int $threshold - * @param callable $handler - * @return void - * @static - */ - public static function whenCommandLifecycleIsLongerThan($threshold, $handler) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->whenCommandLifecycleIsLongerThan($threshold, $handler); - } - /** - * When the command being handled started. - * - * @return \Illuminate\Support\Carbon|null - * @static - */ - public static function commandStartedAt() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->commandStartedAt(); - } - /** - * Register a Closure based command with the application. - * - * @param string $signature - * @param \Closure $callback - * @return \Illuminate\Foundation\Console\ClosureCommand - * @static - */ - public static function command($signature, $callback) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->command($signature, $callback); - } - /** - * Register the given command with the console application. - * - * @param \Symfony\Component\Console\Command\Command $command - * @return void - * @static - */ - public static function registerCommand($command) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->registerCommand($command); - } - /** - * Run an Artisan console command by name. - * - * @param string $command - * @param array $parameters - * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer - * @return int - * @throws \Symfony\Component\Console\Exception\CommandNotFoundException - * @static - */ - public static function call($command, $parameters = [], $outputBuffer = null) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->call($command, $parameters, $outputBuffer); - } - /** - * Queue the given console command. - * - * @param string $command - * @param array $parameters - * @return \Illuminate\Foundation\Bus\PendingDispatch - * @static - */ - public static function queue($command, $parameters = []) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->queue($command, $parameters); - } - /** - * Get all of the commands registered with the console. - * - * @return array - * @static - */ - public static function all() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->all(); - } - /** - * Get the output for the last run command. - * - * @return string - * @static - */ - public static function output() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - return $instance->output(); - } - /** - * Bootstrap the application for artisan commands. - * - * @return void - * @static - */ - public static function bootstrap() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->bootstrap(); - } - /** - * Bootstrap the application without booting service providers. - * - * @return void - * @static - */ - public static function bootstrapWithoutBootingProviders() - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->bootstrapWithoutBootingProviders(); - } - /** - * Set the Artisan application instance. - * - * @param \Illuminate\Console\Application|null $artisan - * @return void - * @static - */ - public static function setArtisan($artisan) - { //Method inherited from \Illuminate\Foundation\Console\Kernel - /** @var \App\Console\Kernel $instance */ - $instance->setArtisan($artisan); - } - - } - /** - * - * - * @see \Illuminate\Auth\AuthManager - * @see \Illuminate\Auth\SessionGuard - */ - class Auth { - /** - * Attempt to get the guard from the local cache. - * - * @param string|null $name - * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard - * @static - */ - public static function guard($name = null) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->guard($name); - } - /** - * Create a session based authentication guard. - * - * @param string $name - * @param array $config - * @return \Illuminate\Auth\SessionGuard - * @static - */ - public static function createSessionDriver($name, $config) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->createSessionDriver($name, $config); - } - /** - * Create a token based authentication guard. - * - * @param string $name - * @param array $config - * @return \Illuminate\Auth\TokenGuard - * @static - */ - public static function createTokenDriver($name, $config) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->createTokenDriver($name, $config); - } - /** - * Get the default authentication driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default guard driver the factory should serve. - * - * @param string $name - * @return void - * @static - */ - public static function shouldUse($name) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - $instance->shouldUse($name); - } - /** - * Set the default authentication driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Register a new callback based request guard. - * - * @param string $driver - * @param callable $callback - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function viaRequest($driver, $callback) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->viaRequest($driver, $callback); - } - /** - * Get the user resolver callback. - * - * @return \Closure - * @static - */ - public static function userResolver() - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->userResolver(); - } - /** - * Set the callback to be used to resolve users. - * - * @param \Closure $userResolver - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function resolveUsersUsing($userResolver) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->resolveUsersUsing($userResolver); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Register a custom provider creator Closure. - * - * @param string $name - * @param \Closure $callback - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function provider($name, $callback) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->provider($name, $callback); - } - /** - * Determines if any guards have already been resolved. - * - * @return bool - * @static - */ - public static function hasResolvedGuards() - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->hasResolvedGuards(); - } - /** - * Forget all of the resolved guard instances. - * - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function forgetGuards() - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->forgetGuards(); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Auth\AuthManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->setApplication($app); - } - /** - * Create the user provider implementation for the driver. - * - * @param string|null $provider - * @return \Illuminate\Contracts\Auth\UserProvider|null - * @throws \InvalidArgumentException - * @static - */ - public static function createUserProvider($provider = null) - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->createUserProvider($provider); - } - /** - * Get the default user provider name. - * - * @return string - * @static - */ - public static function getDefaultUserProvider() - { - /** @var \Illuminate\Auth\AuthManager $instance */ - return $instance->getDefaultUserProvider(); - } - /** - * Get the currently authenticated user. - * - * @return \App\Models\User|null - * @static - */ - public static function user() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->user(); - } - /** - * Get the ID for the currently authenticated user. - * - * @return int|string|null - * @static - */ - public static function id() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->id(); - } - /** - * Log a user into the application without sessions or cookies. - * - * @param array $credentials - * @return bool - * @static - */ - public static function once($credentials = []) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->once($credentials); - } - /** - * Log the given user ID into the application without sessions or cookies. - * - * @param mixed $id - * @return \App\Models\User|false - * @static - */ - public static function onceUsingId($id) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->onceUsingId($id); - } - /** - * Validate a user's credentials. - * - * @param array $credentials - * @return bool - * @static - */ - public static function validate($credentials = []) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->validate($credentials); - } - /** - * Attempt to authenticate using HTTP Basic Auth. - * - * @param string $field - * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException - * @static - */ - public static function basic($field = 'email', $extraConditions = []) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->basic($field, $extraConditions); - } - /** - * Perform a stateless HTTP Basic login attempt. - * - * @param string $field - * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException - * @static - */ - public static function onceBasic($field = 'email', $extraConditions = []) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->onceBasic($field, $extraConditions); - } - /** - * Attempt to authenticate a user using the given credentials. - * - * @param array $credentials - * @param bool $remember - * @return bool - * @static - */ - public static function attempt($credentials = [], $remember = false) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->attempt($credentials, $remember); - } - /** - * Attempt to authenticate a user with credentials and additional callbacks. - * - * @param array $credentials - * @param array|callable|null $callbacks - * @param bool $remember - * @return bool - * @static - */ - public static function attemptWhen($credentials = [], $callbacks = null, $remember = false) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->attemptWhen($credentials, $callbacks, $remember); - } - /** - * Log the given user ID into the application. - * - * @param mixed $id - * @param bool $remember - * @return \App\Models\User|false - * @static - */ - public static function loginUsingId($id, $remember = false) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->loginUsingId($id, $remember); - } - /** - * Log a user into the application. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @param bool $remember - * @return void - * @static - */ - public static function login($user, $remember = false) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->login($user, $remember); - } - /** - * Log the user out of the application. - * - * @return void - * @static - */ - public static function logout() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->logout(); - } - /** - * Log the user out of the application on their current device only. - * - * This method does not cycle the "remember" token. - * - * @return void - * @static - */ - public static function logoutCurrentDevice() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->logoutCurrentDevice(); - } - /** - * Invalidate other sessions for the current user. - * - * The application must be using the AuthenticateSession middleware. - * - * @param string $password - * @param string $attribute - * @return \App\Models\User|null - * @throws \Illuminate\Auth\AuthenticationException - * @static - */ - public static function logoutOtherDevices($password, $attribute = 'password') - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->logoutOtherDevices($password, $attribute); - } - /** - * Register an authentication attempt event listener. - * - * @param mixed $callback - * @return void - * @static - */ - public static function attempting($callback) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->attempting($callback); - } - /** - * Get the last user we attempted to authenticate. - * - * @return \App\Models\User - * @static - */ - public static function getLastAttempted() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getLastAttempted(); - } - /** - * Get a unique identifier for the auth session value. - * - * @return string - * @static - */ - public static function getName() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getName(); - } - /** - * Get the name of the cookie used to store the "recaller". - * - * @return string - * @static - */ - public static function getRecallerName() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getRecallerName(); - } - /** - * Determine if the user was authenticated via "remember me" cookie. - * - * @return bool - * @static - */ - public static function viaRemember() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->viaRemember(); - } - /** - * Set the number of minutes the remember me cookie should be valid for. - * - * @param int $minutes - * @return \Illuminate\Auth\SessionGuard - * @static - */ - public static function setRememberDuration($minutes) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->setRememberDuration($minutes); - } - /** - * Get the cookie creator instance used by the guard. - * - * @return \Illuminate\Contracts\Cookie\QueueingFactory - * @throws \RuntimeException - * @static - */ - public static function getCookieJar() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getCookieJar(); - } - /** - * Set the cookie creator instance used by the guard. - * - * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie - * @return void - * @static - */ - public static function setCookieJar($cookie) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->setCookieJar($cookie); - } - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static - */ - public static function getDispatcher() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getDispatcher(); - } - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static - */ - public static function setDispatcher($events) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->setDispatcher($events); - } - /** - * Get the session store used by the guard. - * - * @return \Illuminate\Contracts\Session\Session - * @static - */ - public static function getSession() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getSession(); - } - /** - * Return the currently cached user. - * - * @return \App\Models\User|null - * @static - */ - public static function getUser() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getUser(); - } - /** - * Set the current user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return \Illuminate\Auth\SessionGuard - * @static - */ - public static function setUser($user) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->setUser($user); - } - /** - * Get the current request instance. - * - * @return \Symfony\Component\HttpFoundation\Request - * @static - */ - public static function getRequest() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getRequest(); - } - /** - * Set the current request instance. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Illuminate\Auth\SessionGuard - * @static - */ - public static function setRequest($request) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->setRequest($request); - } - /** - * Get the timebox instance used by the guard. - * - * @return \Illuminate\Support\Timebox - * @static - */ - public static function getTimebox() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getTimebox(); - } - /** - * Determine if the current user is authenticated. If not, throw an exception. - * - * @return \App\Models\User - * @throws \Illuminate\Auth\AuthenticationException - * @static - */ - public static function authenticate() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->authenticate(); - } - /** - * Determine if the guard has a user instance. - * - * @return bool - * @static - */ - public static function hasUser() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->hasUser(); - } - /** - * Determine if the current user is authenticated. - * - * @return bool - * @static - */ - public static function check() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->check(); - } - /** - * Determine if the current user is a guest. - * - * @return bool - * @static - */ - public static function guest() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->guest(); - } - /** - * Forget the current user. - * - * @return \Illuminate\Auth\SessionGuard - * @static - */ - public static function forgetUser() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->forgetUser(); - } - /** - * Get the user provider used by the guard. - * - * @return \Illuminate\Contracts\Auth\UserProvider - * @static - */ - public static function getProvider() - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - return $instance->getProvider(); - } - /** - * Set the user provider used by the guard. - * - * @param \Illuminate\Contracts\Auth\UserProvider $provider - * @return void - * @static - */ - public static function setProvider($provider) - { - /** @var \Illuminate\Auth\SessionGuard $instance */ - $instance->setProvider($provider); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Auth\SessionGuard::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Auth\SessionGuard::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Auth\SessionGuard::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Auth\SessionGuard::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\View\Compilers\BladeCompiler - */ - class Blade { - /** - * Compile the view at the given path. - * - * @param string|null $path - * @return void - * @static - */ - public static function compile($path = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->compile($path); - } - /** - * Get the path currently being compiled. - * - * @return string - * @static - */ - public static function getPath() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getPath(); - } - /** - * Set the path currently being compiled. - * - * @param string $path - * @return void - * @static - */ - public static function setPath($path) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->setPath($path); - } - /** - * Compile the given Blade template contents. - * - * @param string $value - * @return string - * @static - */ - public static function compileString($value) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->compileString($value); - } - /** - * Evaluate and render a Blade string to HTML. - * - * @param string $string - * @param array $data - * @param bool $deleteCachedView - * @return string - * @static - */ - public static function render($string, $data = [], $deleteCachedView = false) - { - return \Illuminate\View\Compilers\BladeCompiler::render($string, $data, $deleteCachedView); - } - /** - * Render a component instance to HTML. - * - * @param \Illuminate\View\Component $component - * @return string - * @static - */ - public static function renderComponent($component) - { - return \Illuminate\View\Compilers\BladeCompiler::renderComponent($component); - } - /** - * Strip the parentheses from the given expression. - * - * @param string $expression - * @return string - * @static - */ - public static function stripParentheses($expression) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->stripParentheses($expression); - } - /** - * Register a custom Blade compiler. - * - * @param callable $compiler - * @return void - * @static - */ - public static function extend($compiler) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->extend($compiler); - } - /** - * Get the extensions used by the compiler. - * - * @return array - * @static - */ - public static function getExtensions() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getExtensions(); - } - /** - * Register an "if" statement directive. - * - * @param string $name - * @param callable $callback - * @return void - * @static - */ - public static function if($name, $callback) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->if($name, $callback); - } - /** - * Check the result of a condition. - * - * @param string $name - * @param mixed $parameters - * @return bool - * @static - */ - public static function check($name, ...$parameters) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->check($name, ...$parameters); - } - /** - * Register a class-based component alias directive. - * - * @param string $class - * @param string|null $alias - * @param string $prefix - * @return void - * @static - */ - public static function component($class, $alias = null, $prefix = '') - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->component($class, $alias, $prefix); - } - /** - * Register an array of class-based components. - * - * @param array $components - * @param string $prefix - * @return void - * @static - */ - public static function components($components, $prefix = '') - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->components($components, $prefix); - } - /** - * Get the registered class component aliases. - * - * @return array - * @static - */ - public static function getClassComponentAliases() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getClassComponentAliases(); - } - /** - * Register a new anonymous component path. - * - * @param string $path - * @param string|null $prefix - * @return void - * @static - */ - public static function anonymousComponentPath($path, $prefix = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->anonymousComponentPath($path, $prefix); - } - /** - * Register an anonymous component namespace. - * - * @param string $directory - * @param string|null $prefix - * @return void - * @static - */ - public static function anonymousComponentNamespace($directory, $prefix = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->anonymousComponentNamespace($directory, $prefix); - } - /** - * Register a class-based component namespace. - * - * @param string $namespace - * @param string $prefix - * @return void - * @static - */ - public static function componentNamespace($namespace, $prefix) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->componentNamespace($namespace, $prefix); - } - /** - * Get the registered anonymous component paths. - * - * @return array - * @static - */ - public static function getAnonymousComponentPaths() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getAnonymousComponentPaths(); - } - /** - * Get the registered anonymous component namespaces. - * - * @return array - * @static - */ - public static function getAnonymousComponentNamespaces() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getAnonymousComponentNamespaces(); - } - /** - * Get the registered class component namespaces. - * - * @return array - * @static - */ - public static function getClassComponentNamespaces() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getClassComponentNamespaces(); - } - /** - * Register a component alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - * @static - */ - public static function aliasComponent($path, $alias = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->aliasComponent($path, $alias); - } - /** - * Register an include alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - * @static - */ - public static function include($path, $alias = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->include($path, $alias); - } - /** - * Register an include alias directive. - * - * @param string $path - * @param string|null $alias - * @return void - * @static - */ - public static function aliasInclude($path, $alias = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->aliasInclude($path, $alias); - } - /** - * Register a handler for custom directives. - * - * @param string $name - * @param callable $handler - * @return void - * @throws \InvalidArgumentException - * @static - */ - public static function directive($name, $handler) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->directive($name, $handler); - } - /** - * Get the list of custom directives. - * - * @return array - * @static - */ - public static function getCustomDirectives() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getCustomDirectives(); - } - /** - * Indicate that the following callable should be used to prepare strings for compilation. - * - * @param callable $callback - * @return \Illuminate\View\Compilers\BladeCompiler - * @static - */ - public static function prepareStringsForCompilationUsing($callback) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->prepareStringsForCompilationUsing($callback); - } - /** - * Register a new precompiler. - * - * @param callable $precompiler - * @return void - * @static - */ - public static function precompiler($precompiler) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->precompiler($precompiler); - } - /** - * Set the echo format to be used by the compiler. - * - * @param string $format - * @return void - * @static - */ - public static function setEchoFormat($format) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->setEchoFormat($format); - } - /** - * Set the "echo" format to double encode entities. - * - * @return void - * @static - */ - public static function withDoubleEncoding() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->withDoubleEncoding(); - } - /** - * Set the "echo" format to not double encode entities. - * - * @return void - * @static - */ - public static function withoutDoubleEncoding() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->withoutDoubleEncoding(); - } - /** - * Indicate that component tags should not be compiled. - * - * @return void - * @static - */ - public static function withoutComponentTags() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->withoutComponentTags(); - } - /** - * Get the path to the compiled version of a view. - * - * @param string $path - * @return string - * @static - */ - public static function getCompiledPath($path) - { //Method inherited from \Illuminate\View\Compilers\Compiler - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->getCompiledPath($path); - } - /** - * Determine if the view at the given path is expired. - * - * @param string $path - * @return bool - * @throws \ErrorException - * @static - */ - public static function isExpired($path) - { //Method inherited from \Illuminate\View\Compilers\Compiler - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->isExpired($path); - } - /** - * Get a new component hash for a component name. - * - * @param string $component - * @return string - * @static - */ - public static function newComponentHash($component) - { - return \Illuminate\View\Compilers\BladeCompiler::newComponentHash($component); - } - /** - * Compile a class component opening. - * - * @param string $component - * @param string $alias - * @param string $data - * @param string $hash - * @return string - * @static - */ - public static function compileClassComponentOpening($component, $alias, $data, $hash) - { - return \Illuminate\View\Compilers\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash); - } - /** - * Compile the end-component statements into valid PHP. - * - * @return string - * @static - */ - public static function compileEndComponentClass() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->compileEndComponentClass(); - } - /** - * Sanitize the given component attribute value. - * - * @param mixed $value - * @return mixed - * @static - */ - public static function sanitizeComponentAttribute($value) - { - return \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($value); - } - /** - * Compile an end-once block into valid PHP. - * - * @return string - * @static - */ - public static function compileEndOnce() - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->compileEndOnce(); - } - /** - * Add a handler to be executed before echoing a given class. - * - * @param string|callable $class - * @param callable|null $handler - * @return void - * @static - */ - public static function stringable($class, $handler = null) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->stringable($class, $handler); - } - /** - * Compile Blade echos into valid PHP. - * - * @param string $value - * @return string - * @static - */ - public static function compileEchos($value) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->compileEchos($value); - } - /** - * Apply the echo handler for the value if it exists. - * - * @param string $value - * @return string - * @static - */ - public static function applyEchoHandler($value) - { - /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - return $instance->applyEchoHandler($value); - } - - } - /** - * - * - * @method static mixed auth(\Illuminate\Http\Request $request) - * @method static mixed validAuthenticationResponse(\Illuminate\Http\Request $request, mixed $result) - * @method static void broadcast(array $channels, string $event, array $payload = []) - * @method static array|null resolveAuthenticatedUser(\Illuminate\Http\Request $request) - * @method static void resolveAuthenticatedUserUsing(\Closure $callback) - * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(\Illuminate\Contracts\Broadcasting\HasBroadcastChannel|string $channel, callable|string $callback, array $options = []) - * @method static \Illuminate\Support\Collection getChannels() - * @see \Illuminate\Broadcasting\BroadcastManager - * @see \Illuminate\Broadcasting\Broadcasters\Broadcaster - */ - class Broadcast { - /** - * Register the routes for handling broadcast channel authentication and sockets. - * - * @param array|null $attributes - * @return void - * @static - */ - public static function routes($attributes = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->routes($attributes); - } - /** - * Register the routes for handling broadcast user authentication. - * - * @param array|null $attributes - * @return void - * @static - */ - public static function userRoutes($attributes = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->userRoutes($attributes); - } - /** - * Register the routes for handling broadcast authentication and sockets. - * - * Alias of "routes" method. - * - * @param array|null $attributes - * @return void - * @static - */ - public static function channelRoutes($attributes = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->channelRoutes($attributes); - } - /** - * Get the socket ID for the given request. - * - * @param \Illuminate\Http\Request|null $request - * @return string|null - * @static - */ - public static function socket($request = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->socket($request); - } - /** - * Begin broadcasting an event. - * - * @param mixed|null $event - * @return \Illuminate\Broadcasting\PendingBroadcast - * @static - */ - public static function event($event = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->event($event); - } - /** - * Queue the given event for broadcast. - * - * @param mixed $event - * @return void - * @static - */ - public static function queue($event) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->queue($event); - } - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - * @static - */ - public static function connection($driver = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->connection($driver); - } - /** - * Get a driver instance. - * - * @param string|null $name - * @return mixed - * @static - */ - public static function driver($name = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->driver($name); - } - /** - * Get a Pusher instance for the given configuration. - * - * @param array $config - * @return \Pusher\Pusher - * @static - */ - public static function pusher($config) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->pusher($config); - } - /** - * Get an Ably instance for the given configuration. - * - * @param array $config - * @return \Ably\AblyRest - * @static - */ - public static function ably($config) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->ably($config); - } - /** - * Get the default driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Disconnect the given disk and remove from local cache. - * - * @param string|null $name - * @return void - * @static - */ - public static function purge($name = null) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - $instance->purge($name); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Broadcasting\BroadcastManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get the application instance used by the manager. - * - * @return \Illuminate\Contracts\Foundation\Application - * @static - */ - public static function getApplication() - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->getApplication(); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Broadcasting\BroadcastManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->setApplication($app); - } - /** - * Forget all of the resolved driver instances. - * - * @return \Illuminate\Broadcasting\BroadcastManager - * @static - */ - public static function forgetDrivers() - { - /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ - return $instance->forgetDrivers(); - } - - } - /** - * - * - * @see \Illuminate\Bus\Dispatcher - * @see \Illuminate\Support\Testing\Fakes\BusFake - */ - class Bus { - /** - * Dispatch a command to its appropriate handler. - * - * @param mixed $command - * @return mixed - * @static - */ - public static function dispatch($command) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->dispatch($command); - } - /** - * Dispatch a command to its appropriate handler in the current process. - * - * Queueable jobs will be dispatched to the "sync" queue. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - * @static - */ - public static function dispatchSync($command, $handler = null) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->dispatchSync($command, $handler); - } - /** - * Dispatch a command to its appropriate handler in the current process without using the synchronous queue. - * - * @param mixed $command - * @param mixed $handler - * @return mixed - * @static - */ - public static function dispatchNow($command, $handler = null) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->dispatchNow($command, $handler); - } - /** - * Attempt to find the batch with the given ID. - * - * @param string $batchId - * @return \Illuminate\Bus\Batch|null - * @static - */ - public static function findBatch($batchId) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->findBatch($batchId); - } - /** - * Create a new batch of queueable jobs. - * - * @param \Illuminate\Support\Collection|array|mixed $jobs - * @return \Illuminate\Bus\PendingBatch - * @static - */ - public static function batch($jobs) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->batch($jobs); - } - /** - * Create a new chain of queueable jobs. - * - * @param \Illuminate\Support\Collection|array $jobs - * @return \Illuminate\Foundation\Bus\PendingChain - * @static - */ - public static function chain($jobs) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->chain($jobs); - } - /** - * Determine if the given command has a handler. - * - * @param mixed $command - * @return bool - * @static - */ - public static function hasCommandHandler($command) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->hasCommandHandler($command); - } - /** - * Retrieve the handler for a command. - * - * @param mixed $command - * @return bool|mixed - * @static - */ - public static function getCommandHandler($command) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->getCommandHandler($command); - } - /** - * Dispatch a command to its appropriate handler behind a queue. - * - * @param mixed $command - * @return mixed - * @throws \RuntimeException - * @static - */ - public static function dispatchToQueue($command) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->dispatchToQueue($command); - } - /** - * Dispatch a command to its appropriate handler after the current process. - * - * @param mixed $command - * @param mixed $handler - * @return void - * @static - */ - public static function dispatchAfterResponse($command, $handler = null) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - $instance->dispatchAfterResponse($command, $handler); - } - /** - * Set the pipes through which commands should be piped before dispatching. - * - * @param array $pipes - * @return \Illuminate\Bus\Dispatcher - * @static - */ - public static function pipeThrough($pipes) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->pipeThrough($pipes); - } - /** - * Map a command to a handler. - * - * @param array $map - * @return \Illuminate\Bus\Dispatcher - * @static - */ - public static function map($map) - { - /** @var \Illuminate\Bus\Dispatcher $instance */ - return $instance->map($map); - } - /** - * Specify the jobs that should be dispatched instead of faked. - * - * @param array|string $jobsToDispatch - * @return \Illuminate\Support\Testing\Fakes\BusFake - * @static - */ - public static function except($jobsToDispatch) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->except($jobsToDispatch); - } - /** - * Assert if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertDispatched($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatched($command, $callback); - } - /** - * Assert if a job was pushed a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - * @static - */ - public static function assertDispatchedTimes($command, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedTimes($command, $times); - } - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotDispatched($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertNotDispatched($command, $callback); - } - /** - * Assert that no jobs were dispatched. - * - * @return void - * @static - */ - public static function assertNothingDispatched() - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertNothingDispatched(); - } - /** - * Assert if a job was explicitly dispatched synchronously based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertDispatchedSync($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedSync($command, $callback); - } - /** - * Assert if a job was pushed synchronously a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - * @static - */ - public static function assertDispatchedSyncTimes($command, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedSyncTimes($command, $times); - } - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotDispatchedSync($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertNotDispatchedSync($command, $callback); - } - /** - * Assert if a job was dispatched after the response was sent based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertDispatchedAfterResponse($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedAfterResponse($command, $callback); - } - /** - * Assert if a job was pushed after the response was sent a number of times. - * - * @param string|\Closure $command - * @param int $times - * @return void - * @static - */ - public static function assertDispatchedAfterResponseTimes($command, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedAfterResponseTimes($command, $times); - } - /** - * Determine if a job was dispatched based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotDispatchedAfterResponse($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertNotDispatchedAfterResponse($command, $callback); - } - /** - * Assert if a chain of jobs was dispatched. - * - * @param array $expectedChain - * @return void - * @static - */ - public static function assertChained($expectedChain) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertChained($expectedChain); - } - /** - * Assert if a job was dispatched with an empty chain based on a truth-test callback. - * - * @param string|\Closure $command - * @param callable|null $callback - * @return void - * @static - */ - public static function assertDispatchedWithoutChain($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertDispatchedWithoutChain($command, $callback); - } - /** - * Assert if a batch was dispatched based on a truth-test callback. - * - * @param callable $callback - * @return void - * @static - */ - public static function assertBatched($callback) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertBatched($callback); - } - /** - * Assert the number of batches that have been dispatched. - * - * @param int $count - * @return void - * @static - */ - public static function assertBatchCount($count) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertBatchCount($count); - } - /** - * Assert that no batched jobs were dispatched. - * - * @return void - * @static - */ - public static function assertNothingBatched() - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - $instance->assertNothingBatched(); - } - /** - * Get all of the jobs matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function dispatched($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->dispatched($command, $callback); - } - /** - * Get all of the jobs dispatched synchronously matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function dispatchedSync($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->dispatchedSync($command, $callback); - } - /** - * Get all of the jobs dispatched after the response was sent matching a truth-test callback. - * - * @param string $command - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function dispatchedAfterResponse($command, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->dispatchedAfterResponse($command, $callback); - } - /** - * Get all of the pending batches matching a truth-test callback. - * - * @param callable $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function batched($callback) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->batched($callback); - } - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - * @static - */ - public static function hasDispatched($command) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->hasDispatched($command); - } - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - * @static - */ - public static function hasDispatchedSync($command) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->hasDispatchedSync($command); - } - /** - * Determine if there are any stored commands for a given class. - * - * @param string $command - * @return bool - * @static - */ - public static function hasDispatchedAfterResponse($command) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->hasDispatchedAfterResponse($command); - } - /** - * Dispatch an empty job batch for testing. - * - * @param string $name - * @return \Illuminate\Bus\Batch - * @static - */ - public static function dispatchFakeBatch($name = '') - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->dispatchFakeBatch($name); - } - /** - * Record the fake pending batch dispatch. - * - * @param \Illuminate\Bus\PendingBatch $pendingBatch - * @return \Illuminate\Bus\Batch - * @static - */ - public static function recordPendingBatch($pendingBatch) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->recordPendingBatch($pendingBatch); - } - /** - * Specify if commands should be serialized and restored when being batched. - * - * @param bool $serializeAndRestore - * @return \Illuminate\Support\Testing\Fakes\BusFake - * @static - */ - public static function serializeAndRestore($serializeAndRestore = true) - { - /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ - return $instance->serializeAndRestore($serializeAndRestore); - } - - } - /** - * - * - * @see \Illuminate\Cache\CacheManager - * @mixin \Illuminate\Cache\Repository - */ - class Cache { - /** - * Get a cache store instance by name, wrapped in a repository. - * - * @param string|null $name - * @return \Illuminate\Contracts\Cache\Repository - * @static - */ - public static function store($name = null) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->store($name); - } - /** - * Get a cache driver instance. - * - * @param string|null $driver - * @return \Illuminate\Contracts\Cache\Repository - * @static - */ - public static function driver($driver = null) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->driver($driver); - } - /** - * Resolve the given store. - * - * @param string $name - * @return \Illuminate\Contracts\Cache\Repository - * @throws \InvalidArgumentException - * @static - */ - public static function resolve($name) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->resolve($name); - } - /** - * Create a new cache repository with the given implementation. - * - * @param \Illuminate\Contracts\Cache\Store $store - * @return \Illuminate\Cache\Repository - * @static - */ - public static function repository($store) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->repository($store); - } - /** - * Re-set the event dispatcher on all resolved cache repositories. - * - * @return void - * @static - */ - public static function refreshEventDispatcher() - { - /** @var \Illuminate\Cache\CacheManager $instance */ - $instance->refreshEventDispatcher(); - } - /** - * Get the default cache driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default cache driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Unset the given driver instances. - * - * @param array|string|null $name - * @return \Illuminate\Cache\CacheManager - * @static - */ - public static function forgetDriver($name = null) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->forgetDriver($name); - } - /** - * Disconnect the given driver and remove from local cache. - * - * @param string|null $name - * @return void - * @static - */ - public static function purge($name = null) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - $instance->purge($name); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Cache\CacheManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Cache\CacheManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Cache\CacheManager $instance */ - return $instance->setApplication($app); - } - /** - * Determine if an item exists in the cache. - * - * @param array|string $key - * @return bool - * @static - */ - public static function has($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->has($key); - } - /** - * Determine if an item doesn't exist in the cache. - * - * @param string $key - * @return bool - * @static - */ - public static function missing($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->missing($key); - } - /** - * Retrieve an item from the cache by key. - * - * @template TCacheValue - * @param array|string $key - * @param \Illuminate\Cache\TCacheValue|\Illuminate\Cache\(\Closure(): TCacheValue) $default - * @return \Illuminate\Cache\(TCacheValue is null ? mixed : TCacheValue) - * @static - */ - public static function get($key, $default = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->get($key, $default); - } - /** - * Retrieve multiple items from the cache by key. - * - * Items not found in the cache will have a null value. - * - * @param array $keys - * @return array - * @static - */ - public static function many($keys) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->many($keys); - } - /** - * Obtains multiple cache items by their unique keys. - * - * @return \Illuminate\Cache\iterable - * @param \Psr\SimpleCache\iterable $keys A list of keys that can be obtained in a single operation. - * @param mixed $default Default value to return for keys that do not exist. - * @return \Psr\SimpleCache\iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $keys is neither an array nor a Traversable, - * or if any of the $keys are not a legal value. - * @static - */ - public static function getMultiple($keys, $default = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->getMultiple($keys, $default); - } - /** - * Retrieve an item from the cache and delete it. - * - * @template TCacheValue - * @param array|string $key - * @param \Illuminate\Cache\TCacheValue|\Illuminate\Cache\(\Closure(): TCacheValue) $default - * @return \Illuminate\Cache\(TCacheValue is null ? mixed : TCacheValue) - * @static - */ - public static function pull($key, $default = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->pull($key, $default); - } - /** - * Store an item in the cache. - * - * @param array|string $key - * @param mixed $value - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static - */ - public static function put($key, $value, $ttl = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->put($key, $value, $ttl); - } - /** - * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time. - * - * @return bool - * @param string $key The key of the item to store. - * @param mixed $value The value of the item to store, must be serializable. - * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and - * the driver supports TTL then the library may set a default value - * for it or let the driver take care of that. - * @return bool True on success and false on failure. - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if the $key string is not a legal value. - * @static - */ - public static function set($key, $value, $ttl = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->set($key, $value, $ttl); - } - /** - * Store multiple items in the cache for a given number of seconds. - * - * @param array $values - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static - */ - public static function putMany($values, $ttl = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->putMany($values, $ttl); - } - /** - * Persists a set of key => value pairs in the cache, with an optional TTL. - * - * @return bool - * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation. - * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and - * the driver supports TTL then the library may set a default value - * for it or let the driver take care of that. - * @return bool True on success and false on failure. - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $values is neither an array nor a Traversable, - * or if any of the $values are not a legal value. - * @static - */ - public static function setMultiple($values, $ttl = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->setMultiple($values, $ttl); - } - /** - * Store an item in the cache if the key does not exist. - * - * @param string $key - * @param mixed $value - * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static - */ - public static function add($key, $value, $ttl = null) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->add($key, $value, $ttl); - } - /** - * Increment the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - * @static - */ - public static function increment($key, $value = 1) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->increment($key, $value); - } - /** - * Decrement the value of an item in the cache. - * - * @param string $key - * @param mixed $value - * @return int|bool - * @static - */ - public static function decrement($key, $value = 1) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->decrement($key, $value); - } - /** - * Store an item in the cache indefinitely. - * - * @param string $key - * @param mixed $value - * @return bool - * @static - */ - public static function forever($key, $value) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->forever($key, $value); - } - /** - * Get an item from the cache, or execute the given Closure and store the result. - * - * @template TCacheValue - * @param string $key - * @param \Closure|\DateTimeInterface|\DateInterval|int|null $ttl - * @param \Closure(): TCacheValue $callback - * @return \Illuminate\Cache\TCacheValue - * @static - */ - public static function remember($key, $ttl, $callback) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->remember($key, $ttl, $callback); - } - /** - * Get an item from the cache, or execute the given Closure and store the result forever. - * - * @template TCacheValue - * @param string $key - * @param \Closure(): TCacheValue $callback - * @return \Illuminate\Cache\TCacheValue - * @static - */ - public static function sear($key, $callback) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->sear($key, $callback); - } - /** - * Get an item from the cache, or execute the given Closure and store the result forever. - * - * @template TCacheValue - * @param string $key - * @param \Closure(): TCacheValue $callback - * @return \Illuminate\Cache\TCacheValue - * @static - */ - public static function rememberForever($key, $callback) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->rememberForever($key, $callback); - } - /** - * Remove an item from the cache. - * - * @param string $key - * @return bool - * @static - */ - public static function forget($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->forget($key); - } - /** - * Delete an item from the cache by its unique key. - * - * @return bool - * @param string $key The unique cache key of the item to delete. - * @return bool True if the item was successfully removed. False if there was an error. - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if the $key string is not a legal value. - * @static - */ - public static function delete($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->delete($key); - } - /** - * Deletes multiple cache items in a single operation. - * - * @return bool - * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted. - * @return bool True if the items were successfully removed. False if there was an error. - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $keys is neither an array nor a Traversable, - * or if any of the $keys are not a legal value. - * @static - */ - public static function deleteMultiple($keys) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->deleteMultiple($keys); - } - /** - * Wipes clean the entire cache's keys. - * - * @return bool - * @return bool True on success and false on failure. - * @static - */ - public static function clear() - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->clear(); - } - /** - * Begin executing a new tags operation if the store supports it. - * - * @param array|mixed $names - * @return \Illuminate\Cache\TaggedCache - * @throws \BadMethodCallException - * @static - */ - public static function tags($names) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->tags($names); - } - /** - * Determine if the current store supports tags. - * - * @return bool - * @static - */ - public static function supportsTags() - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->supportsTags(); - } - /** - * Get the default cache time. - * - * @return int|null - * @static - */ - public static function getDefaultCacheTime() - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->getDefaultCacheTime(); - } - /** - * Set the default cache time in seconds. - * - * @param int|null $seconds - * @return \Illuminate\Cache\Repository - * @static - */ - public static function setDefaultCacheTime($seconds) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->setDefaultCacheTime($seconds); - } - /** - * Get the cache store implementation. - * - * @return \Illuminate\Contracts\Cache\Store - * @static - */ - public static function getStore() - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->getStore(); - } - /** - * Set the cache store implementation. - * - * @param \Illuminate\Contracts\Cache\Store $store - * @return static - * @static - */ - public static function setStore($store) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->setStore($store); - } - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static - */ - public static function getEventDispatcher() - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->getEventDispatcher(); - } - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static - */ - public static function setEventDispatcher($events) - { - /** @var \Illuminate\Cache\Repository $instance */ - $instance->setEventDispatcher($events); - } - /** - * Determine if a cached value exists. - * - * @param string $key - * @return bool - * @static - */ - public static function offsetExists($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->offsetExists($key); - } - /** - * Retrieve an item from the cache by key. - * - * @param string $key - * @return mixed - * @static - */ - public static function offsetGet($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->offsetGet($key); - } - /** - * Store an item in the cache for the default time. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function offsetSet($key, $value) - { - /** @var \Illuminate\Cache\Repository $instance */ - $instance->offsetSet($key, $value); - } - /** - * Remove an item from the cache. - * - * @param string $key - * @return void - * @static - */ - public static function offsetUnset($key) - { - /** @var \Illuminate\Cache\Repository $instance */ - $instance->offsetUnset($key); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Cache\Repository::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Cache\Repository::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Cache\Repository::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Cache\Repository::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Cache\Repository $instance */ - return $instance->macroCall($method, $parameters); - } - /** - * Get a lock instance. - * - * @param string $name - * @param int $seconds - * @param string|null $owner - * @return \Illuminate\Contracts\Cache\Lock - * @static - */ - public static function lock($name, $seconds = 0, $owner = null) - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->lock($name, $seconds, $owner); - } - /** - * Restore a lock instance using the owner identifier. - * - * @param string $name - * @param string $owner - * @return \Illuminate\Contracts\Cache\Lock - * @static - */ - public static function restoreLock($name, $owner) - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->restoreLock($name, $owner); - } - /** - * Remove all items from the cache. - * - * @return bool - * @static - */ - public static function flush() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->flush(); - } - /** - * Remove all expired tag set entries. - * - * @return void - * @static - */ - public static function flushStaleTags() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - $instance->flushStaleTags(); - } - /** - * Get the Redis connection instance. - * - * @return \Illuminate\Redis\Connections\Connection - * @static - */ - public static function connection() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->connection(); - } - /** - * Get the Redis connection instance that should be used to manage locks. - * - * @return \Illuminate\Redis\Connections\Connection - * @static - */ - public static function lockConnection() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->lockConnection(); - } - /** - * Specify the name of the connection that should be used to store data. - * - * @param string $connection - * @return void - * @static - */ - public static function setConnection($connection) - { - /** @var \Illuminate\Cache\RedisStore $instance */ - $instance->setConnection($connection); - } - /** - * Specify the name of the connection that should be used to manage locks. - * - * @param string $connection - * @return \Illuminate\Cache\RedisStore - * @static - */ - public static function setLockConnection($connection) - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->setLockConnection($connection); - } - /** - * Get the Redis database instance. - * - * @return \Illuminate\Contracts\Redis\Factory - * @static - */ - public static function getRedis() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->getRedis(); - } - /** - * Get the cache key prefix. - * - * @return string - * @static - */ - public static function getPrefix() - { - /** @var \Illuminate\Cache\RedisStore $instance */ - return $instance->getPrefix(); - } - /** - * Set the cache key prefix. - * - * @param string $prefix - * @return void - * @static - */ - public static function setPrefix($prefix) - { - /** @var \Illuminate\Cache\RedisStore $instance */ - $instance->setPrefix($prefix); - } - - } - /** - * - * - * @see \Illuminate\Config\Repository - */ - class Config { - /** - * Determine if the given configuration value exists. - * - * @param string $key - * @return bool - * @static - */ - public static function has($key) - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->has($key); - } - /** - * Get the specified configuration value. - * - * @param array|string $key - * @param mixed $default - * @return mixed - * @static - */ - public static function get($key, $default = null) - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->get($key, $default); - } - /** - * Get many configuration values. - * - * @param array $keys - * @return array - * @static - */ - public static function getMany($keys) - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->getMany($keys); - } - /** - * Set a given configuration value. - * - * @param array|string $key - * @param mixed $value - * @return void - * @static - */ - public static function set($key, $value = null) - { - /** @var \Illuminate\Config\Repository $instance */ - $instance->set($key, $value); - } - /** - * Prepend a value onto an array configuration value. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function prepend($key, $value) - { - /** @var \Illuminate\Config\Repository $instance */ - $instance->prepend($key, $value); - } - /** - * Push a value onto an array configuration value. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function push($key, $value) - { - /** @var \Illuminate\Config\Repository $instance */ - $instance->push($key, $value); - } - /** - * Get all of the configuration items for the application. - * - * @return array - * @static - */ - public static function all() - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->all(); - } - /** - * Determine if the given configuration option exists. - * - * @param string $key - * @return bool - * @static - */ - public static function offsetExists($key) - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->offsetExists($key); - } - /** - * Get a configuration option. - * - * @param string $key - * @return mixed - * @static - */ - public static function offsetGet($key) - { - /** @var \Illuminate\Config\Repository $instance */ - return $instance->offsetGet($key); - } - /** - * Set a configuration option. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function offsetSet($key, $value) - { - /** @var \Illuminate\Config\Repository $instance */ - $instance->offsetSet($key, $value); - } - /** - * Unset a configuration option. - * - * @param string $key - * @return void - * @static - */ - public static function offsetUnset($key) - { - /** @var \Illuminate\Config\Repository $instance */ - $instance->offsetUnset($key); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Config\Repository::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Config\Repository::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Config\Repository::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Config\Repository::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Cookie\CookieJar - */ - class Cookie { - /** - * Create a new cookie instance. - * - * @param string $name - * @param string $value - * @param int $minutes - * @param string|null $path - * @param string|null $domain - * @param bool|null $secure - * @param bool $httpOnly - * @param bool $raw - * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie - * @static - */ - public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); - } - /** - * Create a cookie that lasts "forever" (400 days). - * - * @param string $name - * @param string $value - * @param string|null $path - * @param string|null $domain - * @param bool|null $secure - * @param bool $httpOnly - * @param bool $raw - * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie - * @static - */ - public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); - } - /** - * Expire the given cookie. - * - * @param string $name - * @param string|null $path - * @param string|null $domain - * @return \Symfony\Component\HttpFoundation\Cookie - * @static - */ - public static function forget($name, $path = null, $domain = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->forget($name, $path, $domain); - } - /** - * Determine if a cookie has been queued. - * - * @param string $key - * @param string|null $path - * @return bool - * @static - */ - public static function hasQueued($key, $path = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->hasQueued($key, $path); - } - /** - * Get a queued cookie instance. - * - * @param string $key - * @param mixed $default - * @param string|null $path - * @return \Symfony\Component\HttpFoundation\Cookie|null - * @static - */ - public static function queued($key, $default = null, $path = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->queued($key, $default, $path); - } - /** - * Queue a cookie to send with the next response. - * - * @param mixed $parameters - * @return void - * @static - */ - public static function queue(...$parameters) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->queue(...$parameters); - } - /** - * Queue a cookie to expire with the next response. - * - * @param string $name - * @param string|null $path - * @param string|null $domain - * @return void - * @static - */ - public static function expire($name, $path = null, $domain = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->expire($name, $path, $domain); - } - /** - * Remove a cookie from the queue. - * - * @param string $name - * @param string|null $path - * @return void - * @static - */ - public static function unqueue($name, $path = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - $instance->unqueue($name, $path); - } - /** - * Set the default path and domain for the jar. - * - * @param string $path - * @param string|null $domain - * @param bool|null $secure - * @param string|null $sameSite - * @return \Illuminate\Cookie\CookieJar - * @static - */ - public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); - } - /** - * Get the cookies which have been queued for the next request. - * - * @return \Symfony\Component\HttpFoundation\Cookie[] - * @static - */ - public static function getQueuedCookies() - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->getQueuedCookies(); - } - /** - * Flush the cookies which have been queued for the next request. - * - * @return \Illuminate\Cookie\CookieJar - * @static - */ - public static function flushQueuedCookies() - { - /** @var \Illuminate\Cookie\CookieJar $instance */ - return $instance->flushQueuedCookies(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Cookie\CookieJar::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Cookie\CookieJar::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Cookie\CookieJar::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Encryption\Encrypter - */ - class Crypt { - /** - * Determine if the given key and cipher combination is valid. - * - * @param string $key - * @param string $cipher - * @return bool - * @static - */ - public static function supported($key, $cipher) - { - return \Illuminate\Encryption\Encrypter::supported($key, $cipher); - } - /** - * Create a new encryption key for the given cipher. - * - * @param string $cipher - * @return string - * @static - */ - public static function generateKey($cipher) - { - return \Illuminate\Encryption\Encrypter::generateKey($cipher); - } - /** - * Encrypt the given value. - * - * @param mixed $value - * @param bool $serialize - * @return string - * @throws \Illuminate\Contracts\Encryption\EncryptException - * @static - */ - public static function encrypt($value, $serialize = true) - { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->encrypt($value, $serialize); - } - /** - * Encrypt a string without serialization. - * - * @param string $value - * @return string - * @throws \Illuminate\Contracts\Encryption\EncryptException - * @static - */ - public static function encryptString($value) - { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->encryptString($value); - } - /** - * Decrypt the given value. - * - * @param string $payload - * @param bool $unserialize - * @return mixed - * @throws \Illuminate\Contracts\Encryption\DecryptException - * @static - */ - public static function decrypt($payload, $unserialize = true) - { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->decrypt($payload, $unserialize); - } - /** - * Decrypt the given string without unserialization. - * - * @param string $payload - * @return string - * @throws \Illuminate\Contracts\Encryption\DecryptException - * @static - */ - public static function decryptString($payload) - { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->decryptString($payload); - } - /** - * Get the encryption key that the encrypter is currently using. - * - * @return string - * @static - */ - public static function getKey() - { - /** @var \Illuminate\Encryption\Encrypter $instance */ - return $instance->getKey(); - } - - } - /** - * - * - * @see https://carbon.nesbot.com/docs/ - * @see https://github.com/briannesbitt/Carbon/blob/master/src/Carbon/Factory.php - * @method static \Illuminate\Support\Carbon create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) - * @method static \Illuminate\Support\Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) - * @method static \Illuminate\Support\Carbon|false createFromFormat($format, $time, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimeString($time, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestamp($timestamp, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestampMs($timestamp, $tz = null) - * @method static \Illuminate\Support\Carbon createFromTimestampUTC($timestamp) - * @method static \Illuminate\Support\Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) - * @method static \Illuminate\Support\Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) - * @method static void disableHumanDiffOption($humanDiffOption) - * @method static void enableHumanDiffOption($humanDiffOption) - * @method static mixed executeWithLocale($locale, $func) - * @method static \Illuminate\Support\Carbon fromSerialized($value) - * @method static array getAvailableLocales() - * @method static array getDays() - * @method static int getHumanDiffOptions() - * @method static array getIsoUnits() - * @method static array getLastErrors() - * @method static string getLocale() - * @method static int getMidDayAt() - * @method static \Illuminate\Support\Carbon|null getTestNow() - * @method static \Symfony\Component\Translation\TranslatorInterface getTranslator() - * @method static int getWeekEndsAt() - * @method static int getWeekStartsAt() - * @method static array getWeekendDays() - * @method static bool hasFormat($date, $format) - * @method static bool hasMacro($name) - * @method static bool hasRelativeKeywords($time) - * @method static bool hasTestNow() - * @method static \Illuminate\Support\Carbon instance($date) - * @method static bool isImmutable() - * @method static bool isModifiableUnit($unit) - * @method static bool isMutable() - * @method static bool isStrictModeEnabled() - * @method static bool localeHasDiffOneDayWords($locale) - * @method static bool localeHasDiffSyntax($locale) - * @method static bool localeHasDiffTwoDayWords($locale) - * @method static bool localeHasPeriodSyntax($locale) - * @method static bool localeHasShortUnits($locale) - * @method static void macro($name, $macro) - * @method static \Illuminate\Support\Carbon|null make($var) - * @method static \Illuminate\Support\Carbon maxValue() - * @method static \Illuminate\Support\Carbon minValue() - * @method static void mixin($mixin) - * @method static \Illuminate\Support\Carbon now($tz = null) - * @method static \Illuminate\Support\Carbon parse($time = null, $tz = null) - * @method static string pluralUnit(string $unit) - * @method static void resetMonthsOverflow() - * @method static void resetToStringFormat() - * @method static void resetYearsOverflow() - * @method static void serializeUsing($callback) - * @method static void setHumanDiffOptions($humanDiffOptions) - * @method static bool setLocale($locale) - * @method static void setMidDayAt($hour) - * @method static void setTestNow($testNow = null) - * @method static void setToStringFormat($format) - * @method static void setTranslator(\Symfony\Component\Translation\TranslatorInterface $translator) - * @method static void setUtf8($utf8) - * @method static void setWeekEndsAt($day) - * @method static void setWeekStartsAt($day) - * @method static void setWeekendDays($days) - * @method static bool shouldOverflowMonths() - * @method static bool shouldOverflowYears() - * @method static string singularUnit(string $unit) - * @method static \Illuminate\Support\Carbon today($tz = null) - * @method static \Illuminate\Support\Carbon tomorrow($tz = null) - * @method static void useMonthsOverflow($monthsOverflow = true) - * @method static void useStrictMode($strictModeEnabled = true) - * @method static void useYearsOverflow($yearsOverflow = true) - * @method static \Illuminate\Support\Carbon yesterday($tz = null) - * @see \Illuminate\Support\DateFactory - */ - class Date { - /** - * Use the given handler when generating dates (class name, callable, or factory). - * - * @param mixed $handler - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function use($handler) - { - return \Illuminate\Support\DateFactory::use($handler); - } - /** - * Use the default date class when generating dates. - * - * @return void - * @static - */ - public static function useDefault() - { - \Illuminate\Support\DateFactory::useDefault(); - } - /** - * Execute the given callable on each date creation. - * - * @param callable $callable - * @return void - * @static - */ - public static function useCallable($callable) - { - \Illuminate\Support\DateFactory::useCallable($callable); - } - /** - * Use the given date type (class) when generating dates. - * - * @param string $dateClass - * @return void - * @static - */ - public static function useClass($dateClass) - { - \Illuminate\Support\DateFactory::useClass($dateClass); - } - /** - * Use the given Carbon factory when generating dates. - * - * @param object $factory - * @return void - * @static - */ - public static function useFactory($factory) - { - \Illuminate\Support\DateFactory::useFactory($factory); - } - - } - /** - * - * - * @see \Illuminate\Database\DatabaseManager - */ - class DB { - /** - * Get a database connection instance. - * - * @param string|null $name - * @return \Illuminate\Database\Connection - * @static - */ - public static function connection($name = null) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->connection($name); - } - /** - * Register a custom Doctrine type. - * - * @param string $class - * @param string $name - * @param string $type - * @return void - * @throws \Doctrine\DBAL\Exception - * @throws \RuntimeException - * @static - */ - public static function registerDoctrineType($class, $name, $type) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->registerDoctrineType($class, $name, $type); - } - /** - * Disconnect from the given database and remove from local cache. - * - * @param string|null $name - * @return void - * @static - */ - public static function purge($name = null) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->purge($name); - } - /** - * Disconnect from the given database. - * - * @param string|null $name - * @return void - * @static - */ - public static function disconnect($name = null) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->disconnect($name); - } - /** - * Reconnect to the given database. - * - * @param string|null $name - * @return \Illuminate\Database\Connection - * @static - */ - public static function reconnect($name = null) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->reconnect($name); - } - /** - * Set the default database connection for the callback execution. - * - * @param string $name - * @param callable $callback - * @return mixed - * @static - */ - public static function usingConnection($name, $callback) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->usingConnection($name, $callback); - } - /** - * Get the default connection name. - * - * @return string - * @static - */ - public static function getDefaultConnection() - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->getDefaultConnection(); - } - /** - * Set the default connection name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultConnection($name) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->setDefaultConnection($name); - } - /** - * Get all of the support drivers. - * - * @return string[] - * @static - */ - public static function supportedDrivers() - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->supportedDrivers(); - } - /** - * Get all of the drivers that are actually available. - * - * @return string[] - * @static - */ - public static function availableDrivers() - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->availableDrivers(); - } - /** - * Register an extension connection resolver. - * - * @param string $name - * @param callable $resolver - * @return void - * @static - */ - public static function extend($name, $resolver) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->extend($name, $resolver); - } - /** - * Remove an extension connection resolver. - * - * @param string $name - * @return void - * @static - */ - public static function forgetExtension($name) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->forgetExtension($name); - } - /** - * Return all of the created connections. - * - * @return array - * @static - */ - public static function getConnections() - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->getConnections(); - } - /** - * Set the database reconnector callback. - * - * @param callable $reconnector - * @return void - * @static - */ - public static function setReconnector($reconnector) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - $instance->setReconnector($reconnector); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Database\DatabaseManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->setApplication($app); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Database\DatabaseManager::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Database\DatabaseManager::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Database\DatabaseManager::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Database\DatabaseManager::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Database\DatabaseManager $instance */ - return $instance->macroCall($method, $parameters); - } - /** - * Determine if the connected database is a MariaDB database. - * - * @return bool - * @static - */ - public static function isMaria() - { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->isMaria(); - } - /** - * Get a schema builder instance for the connection. - * - * @return \Illuminate\Database\Schema\MySqlBuilder - * @static - */ - public static function getSchemaBuilder() - { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaBuilder(); - } - /** - * Get the schema state for the connection. - * - * @param \Illuminate\Filesystem\Filesystem|null $files - * @param callable|null $processFactory - * @return \Illuminate\Database\Schema\MySqlSchemaState - * @static - */ - public static function getSchemaState($files = null, $processFactory = null) - { - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaState($files, $processFactory); - } - /** - * Set the query grammar to the default implementation. - * - * @return void - * @static - */ - public static function useDefaultQueryGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultQueryGrammar(); - } - /** - * Set the schema grammar to the default implementation. - * - * @return void - * @static - */ - public static function useDefaultSchemaGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultSchemaGrammar(); - } - /** - * Set the query post processor to the default implementation. - * - * @return void - * @static - */ - public static function useDefaultPostProcessor() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->useDefaultPostProcessor(); - } - /** - * Begin a fluent query against a database table. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string $table - * @param string|null $as - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function table($table, $as = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->table($table, $as); - } - /** - * Get a new query builder instance. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function query() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->query(); - } - /** - * Run a select statement and return a single result. - * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return mixed - * @static - */ - public static function selectOne($query, $bindings = [], $useReadPdo = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->selectOne($query, $bindings, $useReadPdo); - } - /** - * Run a select statement and return the first column of the first row. - * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return mixed - * @throws \Illuminate\Database\MultipleColumnsSelectedException - * @static - */ - public static function scalar($query, $bindings = [], $useReadPdo = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->scalar($query, $bindings, $useReadPdo); - } - /** - * Run a select statement against the database. - * - * @param string $query - * @param array $bindings - * @return array - * @static - */ - public static function selectFromWriteConnection($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->selectFromWriteConnection($query, $bindings); - } - /** - * Run a select statement against the database. - * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return array - * @static - */ - public static function select($query, $bindings = [], $useReadPdo = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->select($query, $bindings, $useReadPdo); - } - /** - * Run a select statement against the database and returns all of the result sets. - * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return array - * @static - */ - public static function selectResultSets($query, $bindings = [], $useReadPdo = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->selectResultSets($query, $bindings, $useReadPdo); - } - /** - * Run a select statement against the database and returns a generator. - * - * @param string $query - * @param array $bindings - * @param bool $useReadPdo - * @return \Generator - * @static - */ - public static function cursor($query, $bindings = [], $useReadPdo = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->cursor($query, $bindings, $useReadPdo); - } - /** - * Run an insert statement against the database. - * - * @param string $query - * @param array $bindings - * @return bool - * @static - */ - public static function insert($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->insert($query, $bindings); - } - /** - * Run an update statement against the database. - * - * @param string $query - * @param array $bindings - * @return int - * @static - */ - public static function update($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->update($query, $bindings); - } - /** - * Run a delete statement against the database. - * - * @param string $query - * @param array $bindings - * @return int - * @static - */ - public static function delete($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->delete($query, $bindings); - } - /** - * Execute an SQL statement and return the boolean result. - * - * @param string $query - * @param array $bindings - * @return bool - * @static - */ - public static function statement($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->statement($query, $bindings); - } - /** - * Run an SQL statement and get the number of rows affected. - * - * @param string $query - * @param array $bindings - * @return int - * @static - */ - public static function affectingStatement($query, $bindings = []) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->affectingStatement($query, $bindings); - } - /** - * Run a raw, unprepared query against the PDO connection. - * - * @param string $query - * @return bool - * @static - */ - public static function unprepared($query) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->unprepared($query); - } - /** - * Execute the given callback in "dry run" mode. - * - * @param \Closure $callback - * @return array - * @static - */ - public static function pretend($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->pretend($callback); - } - /** - * Bind values to their parameters in the given statement. - * - * @param \PDOStatement $statement - * @param array $bindings - * @return void - * @static - */ - public static function bindValues($statement, $bindings) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->bindValues($statement, $bindings); - } - /** - * Prepare the query bindings for execution. - * - * @param array $bindings - * @return array - * @static - */ - public static function prepareBindings($bindings) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->prepareBindings($bindings); - } - /** - * Log a query in the connection's query log. - * - * @param string $query - * @param array $bindings - * @param float|null $time - * @return void - * @static - */ - public static function logQuery($query, $bindings, $time = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->logQuery($query, $bindings, $time); - } - /** - * Register a callback to be invoked when the connection queries for longer than a given amount of time. - * - * @param \DateTimeInterface|\Carbon\CarbonInterval|float|int $threshold - * @param callable $handler - * @return void - * @static - */ - public static function whenQueryingForLongerThan($threshold, $handler) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->whenQueryingForLongerThan($threshold, $handler); - } - /** - * Allow all the query duration handlers to run again, even if they have already run. - * - * @return void - * @static - */ - public static function allowQueryDurationHandlersToRunAgain() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->allowQueryDurationHandlersToRunAgain(); - } - /** - * Get the duration of all run queries in milliseconds. - * - * @return float - * @static - */ - public static function totalQueryDuration() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->totalQueryDuration(); - } - /** - * Reset the duration of all run queries. - * - * @return void - * @static - */ - public static function resetTotalQueryDuration() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->resetTotalQueryDuration(); - } - /** - * Reconnect to the database if a PDO connection is missing. - * - * @return void - * @static - */ - public static function reconnectIfMissingConnection() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->reconnectIfMissingConnection(); - } - /** - * Register a hook to be run just before a database query is executed. - * - * @param \Closure $callback - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function beforeExecuting($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->beforeExecuting($callback); - } - /** - * Register a database query listener with the connection. - * - * @param \Closure $callback - * @return void - * @static - */ - public static function listen($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->listen($callback); - } - /** - * Get a new raw query expression. - * - * @param mixed $value - * @return \Illuminate\Contracts\Database\Query\Expression - * @static - */ - public static function raw($value) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->raw($value); - } - /** - * Escape a value for safe SQL embedding. - * - * @param string|float|int|bool|null $value - * @param bool $binary - * @return string - * @static - */ - public static function escape($value, $binary = false) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->escape($value, $binary); - } - /** - * Determine if the database connection has modified any database records. - * - * @return bool - * @static - */ - public static function hasModifiedRecords() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->hasModifiedRecords(); - } - /** - * Indicate if any records have been modified. - * - * @param bool $value - * @return void - * @static - */ - public static function recordsHaveBeenModified($value = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->recordsHaveBeenModified($value); - } - /** - * Set the record modification state. - * - * @param bool $value - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setRecordModificationState($value) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setRecordModificationState($value); - } - /** - * Reset the record modification state. - * - * @return void - * @static - */ - public static function forgetRecordModificationState() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->forgetRecordModificationState(); - } - /** - * Indicate that the connection should use the write PDO connection for reads. - * - * @param bool $value - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function useWriteConnectionWhenReading($value = true) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->useWriteConnectionWhenReading($value); - } - /** - * Is Doctrine available? - * - * @return bool - * @static - */ - public static function isDoctrineAvailable() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->isDoctrineAvailable(); - } - /** - * Indicates whether native alter operations will be used when dropping, renaming, or modifying columns, even if Doctrine DBAL is installed. - * - * @return bool - * @static - */ - public static function usingNativeSchemaOperations() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->usingNativeSchemaOperations(); - } - /** - * Get a Doctrine Schema Column instance. - * - * @param string $table - * @param string $column - * @return \Doctrine\DBAL\Schema\Column - * @static - */ - public static function getDoctrineColumn($table, $column) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineColumn($table, $column); - } - /** - * Get the Doctrine DBAL schema manager for the connection. - * - * @return \Doctrine\DBAL\Schema\AbstractSchemaManager - * @static - */ - public static function getDoctrineSchemaManager() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineSchemaManager(); - } - /** - * Get the Doctrine DBAL database connection instance. - * - * @return \Doctrine\DBAL\Connection - * @static - */ - public static function getDoctrineConnection() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDoctrineConnection(); - } - /** - * Get the current PDO connection. - * - * @return \PDO - * @static - */ - public static function getPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getPdo(); - } - /** - * Get the current PDO connection parameter without executing any reconnect logic. - * - * @return \PDO|\Closure|null - * @static - */ - public static function getRawPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getRawPdo(); - } - /** - * Get the current PDO connection used for reading. - * - * @return \PDO - * @static - */ - public static function getReadPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getReadPdo(); - } - /** - * Get the current read PDO connection parameter without executing any reconnect logic. - * - * @return \PDO|\Closure|null - * @static - */ - public static function getRawReadPdo() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getRawReadPdo(); - } - /** - * Set the PDO connection. - * - * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setPdo($pdo) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setPdo($pdo); - } - /** - * Set the PDO connection used for reading. - * - * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setReadPdo($pdo) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setReadPdo($pdo); - } - /** - * Get the database connection name. - * - * @return string|null - * @static - */ - public static function getName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getName(); - } - /** - * Get the database connection full name. - * - * @return string|null - * @static - */ - public static function getNameWithReadWriteType() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getNameWithReadWriteType(); - } - /** - * Get an option from the configuration options. - * - * @param string|null $option - * @return mixed - * @static - */ - public static function getConfig($option = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getConfig($option); - } - /** - * Get the PDO driver name. - * - * @return string - * @static - */ - public static function getDriverName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDriverName(); - } - /** - * Get the query grammar used by the connection. - * - * @return \Illuminate\Database\Query\Grammars\Grammar - * @static - */ - public static function getQueryGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getQueryGrammar(); - } - /** - * Set the query grammar used by the connection. - * - * @param \Illuminate\Database\Query\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setQueryGrammar($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setQueryGrammar($grammar); - } - /** - * Get the schema grammar used by the connection. - * - * @return \Illuminate\Database\Schema\Grammars\Grammar - * @static - */ - public static function getSchemaGrammar() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getSchemaGrammar(); - } - /** - * Set the schema grammar used by the connection. - * - * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setSchemaGrammar($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setSchemaGrammar($grammar); - } - /** - * Get the query post processor used by the connection. - * - * @return \Illuminate\Database\Query\Processors\Processor - * @static - */ - public static function getPostProcessor() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getPostProcessor(); - } - /** - * Set the query post processor used by the connection. - * - * @param \Illuminate\Database\Query\Processors\Processor $processor - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setPostProcessor($processor) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setPostProcessor($processor); - } - /** - * Get the event dispatcher used by the connection. - * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static - */ - public static function getEventDispatcher() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getEventDispatcher(); - } - /** - * Set the event dispatcher instance on the connection. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setEventDispatcher($events) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setEventDispatcher($events); - } - /** - * Unset the event dispatcher for this connection. - * - * @return void - * @static - */ - public static function unsetEventDispatcher() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->unsetEventDispatcher(); - } - /** - * Set the transaction manager instance on the connection. - * - * @param \Illuminate\Database\DatabaseTransactionsManager $manager - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setTransactionManager($manager) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setTransactionManager($manager); - } - /** - * Unset the transaction manager for this connection. - * - * @return void - * @static - */ - public static function unsetTransactionManager() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->unsetTransactionManager(); - } - /** - * Determine if the connection is in a "dry run". - * - * @return bool - * @static - */ - public static function pretending() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->pretending(); - } - /** - * Get the connection query log. - * - * @return array - * @static - */ - public static function getQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getQueryLog(); - } - /** - * Get the connection query log with embedded bindings. - * - * @return array - * @static - */ - public static function getRawQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getRawQueryLog(); - } - /** - * Clear the query log. - * - * @return void - * @static - */ - public static function flushQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->flushQueryLog(); - } - /** - * Enable the query log on the connection. - * - * @return void - * @static - */ - public static function enableQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->enableQueryLog(); - } - /** - * Disable the query log on the connection. - * - * @return void - * @static - */ - public static function disableQueryLog() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->disableQueryLog(); - } - /** - * Determine whether we're logging queries. - * - * @return bool - * @static - */ - public static function logging() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->logging(); - } - /** - * Get the name of the connected database. - * - * @return string - * @static - */ - public static function getDatabaseName() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getDatabaseName(); - } - /** - * Set the name of the connected database. - * - * @param string $database - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setDatabaseName($database) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setDatabaseName($database); - } - /** - * Set the read / write type of the connection. - * - * @param string|null $readWriteType - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setReadWriteType($readWriteType) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setReadWriteType($readWriteType); - } - /** - * Get the table prefix for the connection. - * - * @return string - * @static - */ - public static function getTablePrefix() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->getTablePrefix(); - } - /** - * Set the table prefix in use by the connection. - * - * @param string $prefix - * @return \Illuminate\Database\MySqlConnection - * @static - */ - public static function setTablePrefix($prefix) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->setTablePrefix($prefix); - } - /** - * Set the table prefix and return the grammar. - * - * @param \Illuminate\Database\Grammar $grammar - * @return \Illuminate\Database\Grammar - * @static - */ - public static function withTablePrefix($grammar) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->withTablePrefix($grammar); - } - /** - * Register a connection resolver. - * - * @param string $driver - * @param \Closure $callback - * @return void - * @static - */ - public static function resolverFor($driver, $callback) - { //Method inherited from \Illuminate\Database\Connection - \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); - } - /** - * Get the connection resolver for the given driver. - * - * @param string $driver - * @return mixed - * @static - */ - public static function getResolver($driver) - { //Method inherited from \Illuminate\Database\Connection - return \Illuminate\Database\MySqlConnection::getResolver($driver); - } - /** - * Execute a Closure within a transaction. - * - * @param \Closure $callback - * @param int $attempts - * @return mixed - * @throws \Throwable - * @static - */ - public static function transaction($callback, $attempts = 1) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->transaction($callback, $attempts); - } - /** - * Start a new database transaction. - * - * @return void - * @throws \Throwable - * @static - */ - public static function beginTransaction() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->beginTransaction(); - } - /** - * Commit the active database transaction. - * - * @return void - * @throws \Throwable - * @static - */ - public static function commit() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->commit(); - } - /** - * Rollback the active database transaction. - * - * @param int|null $toLevel - * @return void - * @throws \Throwable - * @static - */ - public static function rollBack($toLevel = null) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->rollBack($toLevel); - } - /** - * Get the number of active transactions. - * - * @return int - * @static - */ - public static function transactionLevel() - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - return $instance->transactionLevel(); - } - /** - * Execute the callback after a transaction commits. - * - * @param callable $callback - * @return void - * @throws \RuntimeException - * @static - */ - public static function afterCommit($callback) - { //Method inherited from \Illuminate\Database\Connection - /** @var \Illuminate\Database\MySqlConnection $instance */ - $instance->afterCommit($callback); - } - - } - /** - * - * - * @see \Illuminate\Events\Dispatcher - * @see \Illuminate\Support\Testing\Fakes\EventFake - */ - class Event { - /** - * Register an event listener with the dispatcher. - * - * @param \Closure|string|array $events - * @param \Closure|string|array|null $listener - * @return void - * @static - */ - public static function listen($events, $listener = null) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->listen($events, $listener); - } - /** - * Determine if a given event has listeners. - * - * @param string $eventName - * @return bool - * @static - */ - public static function hasListeners($eventName) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->hasListeners($eventName); - } - /** - * Determine if the given event has any wildcard listeners. - * - * @param string $eventName - * @return bool - * @static - */ - public static function hasWildcardListeners($eventName) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->hasWildcardListeners($eventName); - } - /** - * Register an event and payload to be fired later. - * - * @param string $event - * @param object|array $payload - * @return void - * @static - */ - public static function push($event, $payload = []) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->push($event, $payload); - } - /** - * Flush a set of pushed events. - * - * @param string $event - * @return void - * @static - */ - public static function flush($event) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->flush($event); - } - /** - * Register an event subscriber with the dispatcher. - * - * @param object|string $subscriber - * @return void - * @static - */ - public static function subscribe($subscriber) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->subscribe($subscriber); - } - /** - * Fire an event until the first non-null response is returned. - * - * @param string|object $event - * @param mixed $payload - * @return mixed - * @static - */ - public static function until($event, $payload = []) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->until($event, $payload); - } - /** - * Fire an event and call the listeners. - * - * @param string|object $event - * @param mixed $payload - * @param bool $halt - * @return array|null - * @static - */ - public static function dispatch($event, $payload = [], $halt = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->dispatch($event, $payload, $halt); - } - /** - * Get all of the listeners for a given event name. - * - * @param string $eventName - * @return array - * @static - */ - public static function getListeners($eventName) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->getListeners($eventName); - } - /** - * Register an event listener with the dispatcher. - * - * @param \Closure|string|array $listener - * @param bool $wildcard - * @return \Closure - * @static - */ - public static function makeListener($listener, $wildcard = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->makeListener($listener, $wildcard); - } - /** - * Create a class based listener using the IoC container. - * - * @param string $listener - * @param bool $wildcard - * @return \Closure - * @static - */ - public static function createClassListener($listener, $wildcard = false) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->createClassListener($listener, $wildcard); - } - /** - * Remove a set of listeners from the dispatcher. - * - * @param string $event - * @return void - * @static - */ - public static function forget($event) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->forget($event); - } - /** - * Forget all of the pushed listeners. - * - * @return void - * @static - */ - public static function forgetPushed() - { - /** @var \Illuminate\Events\Dispatcher $instance */ - $instance->forgetPushed(); - } - /** - * Set the queue resolver implementation. - * - * @param callable $resolver - * @return \Illuminate\Events\Dispatcher - * @static - */ - public static function setQueueResolver($resolver) - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->setQueueResolver($resolver); - } - /** - * Gets the raw, unprepared listeners. - * - * @return array - * @static - */ - public static function getRawListeners() - { - /** @var \Illuminate\Events\Dispatcher $instance */ - return $instance->getRawListeners(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Events\Dispatcher::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Events\Dispatcher::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Events\Dispatcher::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Events\Dispatcher::flushMacros(); - } - /** - * Specify the events that should be dispatched instead of faked. - * - * @param array|string $eventsToDispatch - * @return \Illuminate\Support\Testing\Fakes\EventFake - * @static - */ - public static function except($eventsToDispatch) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->except($eventsToDispatch); - } - /** - * Assert if an event has a listener attached to it. - * - * @param string $expectedEvent - * @param string|array $expectedListener - * @return void - * @static - */ - public static function assertListening($expectedEvent, $expectedListener) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertListening($expectedEvent, $expectedListener); - } - /** - * Assert if an event was dispatched based on a truth-test callback. - * - * @param string|\Closure $event - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertDispatched($event, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertDispatched($event, $callback); - } - /** - * Assert if an event was dispatched a number of times. - * - * @param string $event - * @param int $times - * @return void - * @static - */ - public static function assertDispatchedTimes($event, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertDispatchedTimes($event, $times); - } - /** - * Determine if an event was dispatched based on a truth-test callback. - * - * @param string|\Closure $event - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotDispatched($event, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertNotDispatched($event, $callback); - } - /** - * Assert that no events were dispatched. - * - * @return void - * @static - */ - public static function assertNothingDispatched() - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - $instance->assertNothingDispatched(); - } - /** - * Get all of the events matching a truth-test callback. - * - * @param string $event - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function dispatched($event, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->dispatched($event, $callback); - } - /** - * Determine if the given event has been dispatched. - * - * @param string $event - * @return bool - * @static - */ - public static function hasDispatched($event) - { - /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ - return $instance->hasDispatched($event); - } - - } - /** - * - * - * @see \Illuminate\Filesystem\Filesystem - */ - class File { - /** - * Determine if a file or directory exists. - * - * @param string $path - * @return bool - * @static - */ - public static function exists($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->exists($path); - } - /** - * Determine if a file or directory is missing. - * - * @param string $path - * @return bool - * @static - */ - public static function missing($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->missing($path); - } - /** - * Get the contents of a file. - * - * @param string $path - * @param bool $lock - * @return string - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static - */ - public static function get($path, $lock = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->get($path, $lock); - } - /** - * Get the contents of a file as decoded JSON. - * - * @param string $path - * @param int $flags - * @param bool $lock - * @return array - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static - */ - public static function json($path, $flags = 0, $lock = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->json($path, $flags, $lock); - } - /** - * Get contents of a file with shared access. - * - * @param string $path - * @return string - * @static - */ - public static function sharedGet($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->sharedGet($path); - } - /** - * Get the returned value of a file. - * - * @param string $path - * @param array $data - * @return mixed - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static - */ - public static function getRequire($path, $data = []) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->getRequire($path, $data); - } - /** - * Require the given file once. - * - * @param string $path - * @param array $data - * @return mixed - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static - */ - public static function requireOnce($path, $data = []) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->requireOnce($path, $data); - } - /** - * Get the contents of a file one line at a time. - * - * @param string $path - * @return \Illuminate\Support\LazyCollection - * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static - */ - public static function lines($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->lines($path); - } - /** - * Get the hash of the file at the given path. - * - * @param string $path - * @param string $algorithm - * @return string - * @static - */ - public static function hash($path, $algorithm = 'md5') - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->hash($path, $algorithm); - } - /** - * Write the contents of a file. - * - * @param string $path - * @param string $contents - * @param bool $lock - * @return int|bool - * @static - */ - public static function put($path, $contents, $lock = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->put($path, $contents, $lock); - } - /** - * Write the contents of a file, replacing it atomically if it already exists. - * - * @param string $path - * @param string $content - * @param int|null $mode - * @return void - * @static - */ - public static function replace($path, $content, $mode = null) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->replace($path, $content, $mode); - } - /** - * Replace a given string within a given file. - * - * @param array|string $search - * @param array|string $replace - * @param string $path - * @return void - * @static - */ - public static function replaceInFile($search, $replace, $path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->replaceInFile($search, $replace, $path); - } - /** - * Prepend to a file. - * - * @param string $path - * @param string $data - * @return int - * @static - */ - public static function prepend($path, $data) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->prepend($path, $data); - } - /** - * Append to a file. - * - * @param string $path - * @param string $data - * @return int - * @static - */ - public static function append($path, $data) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->append($path, $data); - } - /** - * Get or set UNIX mode of a file or directory. - * - * @param string $path - * @param int|null $mode - * @return mixed - * @static - */ - public static function chmod($path, $mode = null) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->chmod($path, $mode); - } - /** - * Delete the file at a given path. - * - * @param string|array $paths - * @return bool - * @static - */ - public static function delete($paths) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->delete($paths); - } - /** - * Move a file to a new location. - * - * @param string $path - * @param string $target - * @return bool - * @static - */ - public static function move($path, $target) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->move($path, $target); - } - /** - * Copy a file to a new location. - * - * @param string $path - * @param string $target - * @return bool - * @static - */ - public static function copy($path, $target) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->copy($path, $target); - } - /** - * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. - * - * @param string $target - * @param string $link - * @return void - * @static - */ - public static function link($target, $link) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->link($target, $link); - } - /** - * Create a relative symlink to the target file or directory. - * - * @param string $target - * @param string $link - * @return void - * @throws \RuntimeException - * @static - */ - public static function relativeLink($target, $link) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->relativeLink($target, $link); - } - /** - * Extract the file name from a file path. - * - * @param string $path - * @return string - * @static - */ - public static function name($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->name($path); - } - /** - * Extract the trailing name component from a file path. - * - * @param string $path - * @return string - * @static - */ - public static function basename($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->basename($path); - } - /** - * Extract the parent directory from a file path. - * - * @param string $path - * @return string - * @static - */ - public static function dirname($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->dirname($path); - } - /** - * Extract the file extension from a file path. - * - * @param string $path - * @return string - * @static - */ - public static function extension($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->extension($path); - } - /** - * Guess the file extension from the mime-type of a given file. - * - * @param string $path - * @return string|null - * @throws \RuntimeException - * @static - */ - public static function guessExtension($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->guessExtension($path); - } - /** - * Get the file type of a given file. - * - * @param string $path - * @return string - * @static - */ - public static function type($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->type($path); - } - /** - * Get the mime-type of a given file. - * - * @param string $path - * @return string|false - * @static - */ - public static function mimeType($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->mimeType($path); - } - /** - * Get the file size of a given file. - * - * @param string $path - * @return int - * @static - */ - public static function size($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->size($path); - } - /** - * Get the file's last modification time. - * - * @param string $path - * @return int - * @static - */ - public static function lastModified($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->lastModified($path); - } - /** - * Determine if the given path is a directory. - * - * @param string $directory - * @return bool - * @static - */ - public static function isDirectory($directory) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isDirectory($directory); - } - /** - * Determine if the given path is a directory that does not contain any other files or directories. - * - * @param string $directory - * @param bool $ignoreDotFiles - * @return bool - * @static - */ - public static function isEmptyDirectory($directory, $ignoreDotFiles = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isEmptyDirectory($directory, $ignoreDotFiles); - } - /** - * Determine if the given path is readable. - * - * @param string $path - * @return bool - * @static - */ - public static function isReadable($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isReadable($path); - } - /** - * Determine if the given path is writable. - * - * @param string $path - * @return bool - * @static - */ - public static function isWritable($path) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isWritable($path); - } - /** - * Determine if two files are the same by comparing their hashes. - * - * @param string $firstFile - * @param string $secondFile - * @return bool - * @static - */ - public static function hasSameHash($firstFile, $secondFile) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->hasSameHash($firstFile, $secondFile); - } - /** - * Determine if the given path is a file. - * - * @param string $file - * @return bool - * @static - */ - public static function isFile($file) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->isFile($file); - } - /** - * Find path names matching a given pattern. - * - * @param string $pattern - * @param int $flags - * @return array - * @static - */ - public static function glob($pattern, $flags = 0) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->glob($pattern, $flags); - } - /** - * Get an array of all files in a directory. - * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - * @static - */ - public static function files($directory, $hidden = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->files($directory, $hidden); - } - /** - * Get all of the files from the given directory (recursive). - * - * @param string $directory - * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - * @static - */ - public static function allFiles($directory, $hidden = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->allFiles($directory, $hidden); - } - /** - * Get all of the directories within a given directory. - * - * @param string $directory - * @return array - * @static - */ - public static function directories($directory) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->directories($directory); - } - /** - * Ensure a directory exists. - * - * @param string $path - * @param int $mode - * @param bool $recursive - * @return void - * @static - */ - public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - $instance->ensureDirectoryExists($path, $mode, $recursive); - } - /** - * Create a directory. - * - * @param string $path - * @param int $mode - * @param bool $recursive - * @param bool $force - * @return bool - * @static - */ - public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->makeDirectory($path, $mode, $recursive, $force); - } - /** - * Move a directory. - * - * @param string $from - * @param string $to - * @param bool $overwrite - * @return bool - * @static - */ - public static function moveDirectory($from, $to, $overwrite = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->moveDirectory($from, $to, $overwrite); - } - /** - * Copy a directory from one location to another. - * - * @param string $directory - * @param string $destination - * @param int|null $options - * @return bool - * @static - */ - public static function copyDirectory($directory, $destination, $options = null) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->copyDirectory($directory, $destination, $options); - } - /** - * Recursively delete a directory. - * - * The directory itself may be optionally preserved. - * - * @param string $directory - * @param bool $preserve - * @return bool - * @static - */ - public static function deleteDirectory($directory, $preserve = false) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->deleteDirectory($directory, $preserve); - } - /** - * Remove all of the directories within a given directory. - * - * @param string $directory - * @return bool - * @static - */ - public static function deleteDirectories($directory) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->deleteDirectories($directory); - } - /** - * Empty the specified directory of all files and folders. - * - * @param string $directory - * @return bool - * @static - */ - public static function cleanDirectory($directory) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->cleanDirectory($directory); - } - /** - * Apply the callback if the given "value" is (or resolves to) truthy. - * - * @template TWhenParameter - * @template TWhenReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TWhenReturnType - * @static - */ - public static function when($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->when($value, $callback, $default); - } - /** - * Apply the callback if the given "value" is (or resolves to) falsy. - * - * @template TUnlessParameter - * @template TUnlessReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TUnlessReturnType - * @static - */ - public static function unless($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->unless($value, $callback, $default); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Filesystem\Filesystem::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Filesystem\Filesystem::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Filesystem\Filesystem::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Auth\Access\Gate - */ - class Gate { - /** - * Determine if a given ability has been defined. - * - * @param string|array $ability - * @return bool - * @static - */ - public static function has($ability) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->has($ability); - } - /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false. - * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException - * @static - */ - public static function allowIf($condition, $message = null, $code = null) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->allowIf($condition, $message, $code); - } - /** - * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true. - * - * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition - * @param string|null $message - * @param string|null $code - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException - * @static - */ - public static function denyIf($condition, $message = null, $code = null) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyIf($condition, $message, $code); - } - /** - * Define a new ability. - * - * @param string $ability - * @param callable|array|string $callback - * @return \Illuminate\Auth\Access\Gate - * @throws \InvalidArgumentException - * @static - */ - public static function define($ability, $callback) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->define($ability, $callback); - } - /** - * Define abilities for a resource. - * - * @param string $name - * @param string $class - * @param array|null $abilities - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function resource($name, $class, $abilities = null) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->resource($name, $class, $abilities); - } - /** - * Define a policy class for a given class type. - * - * @param string $class - * @param string $policy - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function policy($class, $policy) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->policy($class, $policy); - } - /** - * Register a callback to run before all Gate checks. - * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function before($callback) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->before($callback); - } - /** - * Register a callback to run after all Gate checks. - * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function after($callback) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->after($callback); - } - /** - * Determine if the given ability should be granted for the current user. - * - * @param string $ability - * @param array|mixed $arguments - * @return bool - * @static - */ - public static function allows($ability, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->allows($ability, $arguments); - } - /** - * Determine if the given ability should be denied for the current user. - * - * @param string $ability - * @param array|mixed $arguments - * @return bool - * @static - */ - public static function denies($ability, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denies($ability, $arguments); - } - /** - * Determine if all of the given abilities should be granted for the current user. - * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool - * @static - */ - public static function check($abilities, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->check($abilities, $arguments); - } - /** - * Determine if any one of the given abilities should be granted for the current user. - * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool - * @static - */ - public static function any($abilities, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->any($abilities, $arguments); - } - /** - * Determine if all of the given abilities should be denied for the current user. - * - * @param \Illuminate\Auth\Access\iterable|string $abilities - * @param array|mixed $arguments - * @return bool - * @static - */ - public static function none($abilities, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->none($abilities, $arguments); - } - /** - * Determine if the given ability should be granted for the current user. - * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - * @throws \Illuminate\Auth\Access\AuthorizationException - * @static - */ - public static function authorize($ability, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->authorize($ability, $arguments); - } - /** - * Inspect the user for the given ability. - * - * @param string $ability - * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - * @static - */ - public static function inspect($ability, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->inspect($ability, $arguments); - } - /** - * Get the raw result from the authorization callback. - * - * @param string $ability - * @param array|mixed $arguments - * @return mixed - * @throws \Illuminate\Auth\Access\AuthorizationException - * @static - */ - public static function raw($ability, $arguments = []) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->raw($ability, $arguments); - } - /** - * Get a policy instance for a given class. - * - * @param object|string $class - * @return mixed - * @static - */ - public static function getPolicyFor($class) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->getPolicyFor($class); - } - /** - * Specify a callback to be used to guess policy names. - * - * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function guessPolicyNamesUsing($callback) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->guessPolicyNamesUsing($callback); - } - /** - * Build a policy class instance of the given type. - * - * @param object|string $class - * @return mixed - * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @static - */ - public static function resolvePolicy($class) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->resolvePolicy($class); - } - /** - * Get a gate instance for the given user. - * - * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user - * @return static - * @static - */ - public static function forUser($user) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->forUser($user); - } - /** - * Get all of the defined abilities. - * - * @return array - * @static - */ - public static function abilities() - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->abilities(); - } - /** - * Get all of the defined policies. - * - * @return array - * @static - */ - public static function policies() - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->policies(); - } - /** - * Set the default denial response for gates and policies. - * - * @param \Illuminate\Auth\Access\Response $response - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function defaultDenialResponse($response) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->defaultDenialResponse($response); - } - /** - * Set the container instance used by the gate. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Auth\Access\Gate - * @static - */ - public static function setContainer($container) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->setContainer($container); - } - /** - * Deny with a HTTP status code. - * - * @param int $status - * @param string|null $message - * @param int|null $code - * @return \Illuminate\Auth\Access\Response - * @static - */ - public static function denyWithStatus($status, $message = null, $code = null) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyWithStatus($status, $message, $code); - } - /** - * Deny with a 404 HTTP status code. - * - * @param string|null $message - * @param int|null $code - * @return \Illuminate\Auth\Access\Response - * @static - */ - public static function denyAsNotFound($message = null, $code = null) - { - /** @var \Illuminate\Auth\Access\Gate $instance */ - return $instance->denyAsNotFound($message, $code); - } - - } - /** - * - * - * @see \Illuminate\Hashing\HashManager - * @see \Illuminate\Hashing\AbstractHasher - */ - class Hash { - /** - * Create an instance of the Bcrypt hash Driver. - * - * @return \Illuminate\Hashing\BcryptHasher - * @static - */ - public static function createBcryptDriver() - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createBcryptDriver(); - } - /** - * Create an instance of the Argon2i hash Driver. - * - * @return \Illuminate\Hashing\ArgonHasher - * @static - */ - public static function createArgonDriver() - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createArgonDriver(); - } - /** - * Create an instance of the Argon2id hash Driver. - * - * @return \Illuminate\Hashing\Argon2IdHasher - * @static - */ - public static function createArgon2idDriver() - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->createArgon2idDriver(); - } - /** - * Get information about the given hashed value. - * - * @param string $hashedValue - * @return array - * @static - */ - public static function info($hashedValue) - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->info($hashedValue); - } - /** - * Hash the given value. - * - * @param string $value - * @param array $options - * @return string - * @static - */ - public static function make($value, $options = []) - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->make($value, $options); - } - /** - * Check the given plain value against a hash. - * - * @param string $value - * @param string $hashedValue - * @param array $options - * @return bool - * @static - */ - public static function check($value, $hashedValue, $options = []) - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->check($value, $hashedValue, $options); - } - /** - * Check if the given hash has been hashed using the given options. - * - * @param string $hashedValue - * @param array $options - * @return bool - * @static - */ - public static function needsRehash($hashedValue, $options = []) - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->needsRehash($hashedValue, $options); - } - /** - * Determine if a given string is already hashed. - * - * @param string $value - * @return bool - * @static - */ - public static function isHashed($value) - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->isHashed($value); - } - /** - * Get the default driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->driver($driver); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Hashing\HashManager - * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get all of the created "drivers". - * - * @return array - * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getDrivers(); - } - /** - * Get the container instance used by the manager. - * - * @return \Illuminate\Contracts\Container\Container - * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->getContainer(); - } - /** - * Set the container instance used by the manager. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Hashing\HashManager - * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->setContainer($container); - } - /** - * Forget all of the resolved driver instances. - * - * @return \Illuminate\Hashing\HashManager - * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Hashing\HashManager $instance */ - return $instance->forgetDrivers(); - } - - } - /** - * - * - * @method static \Illuminate\Http\Client\PendingRequest baseUrl(string $url) - * @method static \Illuminate\Http\Client\PendingRequest withBody(string $content, string $contentType = 'application/json') - * @method static \Illuminate\Http\Client\PendingRequest asJson() - * @method static \Illuminate\Http\Client\PendingRequest asForm() - * @method static \Illuminate\Http\Client\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = []) - * @method static \Illuminate\Http\Client\PendingRequest asMultipart() - * @method static \Illuminate\Http\Client\PendingRequest bodyFormat(string $format) - * @method static \Illuminate\Http\Client\PendingRequest withQueryParameters(array $parameters) - * @method static \Illuminate\Http\Client\PendingRequest contentType(string $contentType) - * @method static \Illuminate\Http\Client\PendingRequest acceptJson() - * @method static \Illuminate\Http\Client\PendingRequest accept(string $contentType) - * @method static \Illuminate\Http\Client\PendingRequest withHeaders(array $headers) - * @method static \Illuminate\Http\Client\PendingRequest withHeader(string $name, mixed $value) - * @method static \Illuminate\Http\Client\PendingRequest replaceHeaders(array $headers) - * @method static \Illuminate\Http\Client\PendingRequest withBasicAuth(string $username, string $password) - * @method static \Illuminate\Http\Client\PendingRequest withDigestAuth(string $username, string $password) - * @method static \Illuminate\Http\Client\PendingRequest withToken(string $token, string $type = 'Bearer') - * @method static \Illuminate\Http\Client\PendingRequest withUserAgent(string|bool $userAgent) - * @method static \Illuminate\Http\Client\PendingRequest withUrlParameters(array $parameters = []) - * @method static \Illuminate\Http\Client\PendingRequest withCookies(array $cookies, string $domain) - * @method static \Illuminate\Http\Client\PendingRequest maxRedirects(int $max) - * @method static \Illuminate\Http\Client\PendingRequest withoutRedirecting() - * @method static \Illuminate\Http\Client\PendingRequest withoutVerifying() - * @method static \Illuminate\Http\Client\PendingRequest sink(string|resource $to) - * @method static \Illuminate\Http\Client\PendingRequest timeout(int $seconds) - * @method static \Illuminate\Http\Client\PendingRequest connectTimeout(int $seconds) - * @method static \Illuminate\Http\Client\PendingRequest retry(int $times, \Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true) - * @method static \Illuminate\Http\Client\PendingRequest withOptions(array $options) - * @method static \Illuminate\Http\Client\PendingRequest withMiddleware(callable $middleware) - * @method static \Illuminate\Http\Client\PendingRequest withRequestMiddleware(callable $middleware) - * @method static \Illuminate\Http\Client\PendingRequest withResponseMiddleware(callable $middleware) - * @method static \Illuminate\Http\Client\PendingRequest beforeSending(callable $callback) - * @method static \Illuminate\Http\Client\PendingRequest throw(callable|null $callback = null) - * @method static \Illuminate\Http\Client\PendingRequest throwIf(callable|bool $condition, callable|null $throwCallback = null) - * @method static \Illuminate\Http\Client\PendingRequest throwUnless(bool $condition) - * @method static \Illuminate\Http\Client\PendingRequest dump() - * @method static \Illuminate\Http\Client\PendingRequest dd() - * @method static \Illuminate\Http\Client\Response get(string $url, array|string|null $query = null) - * @method static \Illuminate\Http\Client\Response head(string $url, array|string|null $query = null) - * @method static \Illuminate\Http\Client\Response post(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response patch(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response put(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response delete(string $url, array $data = []) - * @method static array pool(callable $callback) - * @method static \Illuminate\Http\Client\Response send(string $method, string $url, array $options = []) - * @method static \GuzzleHttp\Client buildClient() - * @method static \GuzzleHttp\Client createClient(\GuzzleHttp\HandlerStack $handlerStack) - * @method static \GuzzleHttp\HandlerStack buildHandlerStack() - * @method static \GuzzleHttp\HandlerStack pushHandlers(\GuzzleHttp\HandlerStack $handlerStack) - * @method static \Closure buildBeforeSendingHandler() - * @method static \Closure buildRecorderHandler() - * @method static \Closure buildStubHandler() - * @method static \GuzzleHttp\Psr7\RequestInterface runBeforeSendingCallbacks(\GuzzleHttp\Psr7\RequestInterface $request, array $options) - * @method static array mergeOptions(array ...$options) - * @method static \Illuminate\Http\Client\PendingRequest stub(callable $callback) - * @method static \Illuminate\Http\Client\PendingRequest async(bool $async = true) - * @method static \GuzzleHttp\Promise\PromiseInterface|null getPromise() - * @method static \Illuminate\Http\Client\PendingRequest setClient(\GuzzleHttp\Client $client) - * @method static \Illuminate\Http\Client\PendingRequest setHandler(callable $handler) - * @method static array getOptions() - * @method static \Illuminate\Http\Client\PendingRequest|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @method static \Illuminate\Http\Client\PendingRequest|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @see \Illuminate\Http\Client\Factory - */ - class Http { - /** - * Add middleware to apply to every request. - * - * @param callable $middleware - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function globalMiddleware($middleware) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->globalMiddleware($middleware); - } - /** - * Add request middleware to apply to every request. - * - * @param callable $middleware - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function globalRequestMiddleware($middleware) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->globalRequestMiddleware($middleware); - } - /** - * Add response middleware to apply to every request. - * - * @param callable $middleware - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function globalResponseMiddleware($middleware) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->globalResponseMiddleware($middleware); - } - /** - * Create a new response instance for use during stubbing. - * - * @param array|string|null $body - * @param int $status - * @param array $headers - * @return \GuzzleHttp\Promise\PromiseInterface - * @static - */ - public static function response($body = null, $status = 200, $headers = []) - { - return \Illuminate\Http\Client\Factory::response($body, $status, $headers); - } - /** - * Get an invokable object that returns a sequence of responses in order for use during stubbing. - * - * @param array $responses - * @return \Illuminate\Http\Client\ResponseSequence - * @static - */ - public static function sequence($responses = []) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->sequence($responses); - } - /** - * Register a stub callable that will intercept requests and be able to return stub responses. - * - * @param callable|array|null $callback - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function fake($callback = null) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->fake($callback); - } - /** - * Register a response sequence for the given URL pattern. - * - * @param string $url - * @return \Illuminate\Http\Client\ResponseSequence - * @static - */ - public static function fakeSequence($url = '*') - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->fakeSequence($url); - } - /** - * Stub the given URL using the given callback. - * - * @param string $url - * @param \Illuminate\Http\Client\Response|\GuzzleHttp\Promise\PromiseInterface|callable $callback - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function stubUrl($url, $callback) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->stubUrl($url, $callback); - } - /** - * Indicate that an exception should be thrown if any request is not faked. - * - * @param bool $prevent - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function preventStrayRequests($prevent = true) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->preventStrayRequests($prevent); - } - /** - * Indicate that an exception should not be thrown if any request is not faked. - * - * @return \Illuminate\Http\Client\Factory - * @static - */ - public static function allowStrayRequests() - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->allowStrayRequests(); - } - /** - * Record a request response pair. - * - * @param \Illuminate\Http\Client\Request $request - * @param \Illuminate\Http\Client\Response $response - * @return void - * @static - */ - public static function recordRequestResponsePair($request, $response) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->recordRequestResponsePair($request, $response); - } - /** - * Assert that a request / response pair was recorded matching a given truth test. - * - * @param callable $callback - * @return void - * @static - */ - public static function assertSent($callback) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSent($callback); - } - /** - * Assert that the given request was sent in the given order. - * - * @param array $callbacks - * @return void - * @static - */ - public static function assertSentInOrder($callbacks) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSentInOrder($callbacks); - } - /** - * Assert that a request / response pair was not recorded matching a given truth test. - * - * @param callable $callback - * @return void - * @static - */ - public static function assertNotSent($callback) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertNotSent($callback); - } - /** - * Assert that no request / response pair was recorded. - * - * @return void - * @static - */ - public static function assertNothingSent() - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertNothingSent(); - } - /** - * Assert how many requests have been recorded. - * - * @param int $count - * @return void - * @static - */ - public static function assertSentCount($count) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSentCount($count); - } - /** - * Assert that every created response sequence is empty. - * - * @return void - * @static - */ - public static function assertSequencesAreEmpty() - { - /** @var \Illuminate\Http\Client\Factory $instance */ - $instance->assertSequencesAreEmpty(); - } - /** - * Get a collection of the request / response pairs matching the given truth test. - * - * @param callable $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function recorded($callback = null) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->recorded($callback); - } - /** - * Get the current event dispatcher implementation. - * - * @return \Illuminate\Contracts\Events\Dispatcher|null - * @static - */ - public static function getDispatcher() - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->getDispatcher(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Http\Client\Factory::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Http\Client\Factory::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Http\Client\Factory::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Http\Client\Factory::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Http\Client\Factory $instance */ - return $instance->macroCall($method, $parameters); - } - - } - /** - * - * - * @see \Illuminate\Translation\Translator - */ - class Lang { - /** - * Determine if a translation exists for a given locale. - * - * @param string $key - * @param string|null $locale - * @return bool - * @static - */ - public static function hasForLocale($key, $locale = null) - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->hasForLocale($key, $locale); - } - /** - * Determine if a translation exists. - * - * @param string $key - * @param string|null $locale - * @param bool $fallback - * @return bool - * @static - */ - public static function has($key, $locale = null, $fallback = true) - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->has($key, $locale, $fallback); - } - /** - * Get the translation for the given key. - * - * @param string $key - * @param array $replace - * @param string|null $locale - * @param bool $fallback - * @return string|array - * @static - */ - public static function get($key, $replace = [], $locale = null, $fallback = true) - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->get($key, $replace, $locale, $fallback); - } - /** - * Get a translation according to an integer value. - * - * @param string $key - * @param \Countable|int|array $number - * @param array $replace - * @param string|null $locale - * @return string - * @static - */ - public static function choice($key, $number, $replace = [], $locale = null) - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->choice($key, $number, $replace, $locale); - } - /** - * Add translation lines to the given locale. - * - * @param array $lines - * @param string $locale - * @param string $namespace - * @return void - * @static - */ - public static function addLines($lines, $locale, $namespace = '*') - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addLines($lines, $locale, $namespace); - } - /** - * Load the specified language group. - * - * @param string $namespace - * @param string $group - * @param string $locale - * @return void - * @static - */ - public static function load($namespace, $group, $locale) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->load($namespace, $group, $locale); - } - /** - * Add a new namespace to the loader. - * - * @param string $namespace - * @param string $hint - * @return void - * @static - */ - public static function addNamespace($namespace, $hint) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addNamespace($namespace, $hint); - } - /** - * Add a new JSON path to the loader. - * - * @param string $path - * @return void - * @static - */ - public static function addJsonPath($path) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->addJsonPath($path); - } - /** - * Parse a key into namespace, group, and item. - * - * @param string $key - * @return array - * @static - */ - public static function parseKey($key) - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->parseKey($key); - } - /** - * Specify a callback that should be invoked to determined the applicable locale array. - * - * @param callable $callback - * @return void - * @static - */ - public static function determineLocalesUsing($callback) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->determineLocalesUsing($callback); - } - /** - * Get the message selector instance. - * - * @return \Illuminate\Translation\MessageSelector - * @static - */ - public static function getSelector() - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getSelector(); - } - /** - * Set the message selector instance. - * - * @param \Illuminate\Translation\MessageSelector $selector - * @return void - * @static - */ - public static function setSelector($selector) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setSelector($selector); - } - /** - * Get the language line loader implementation. - * - * @return \Illuminate\Contracts\Translation\Loader - * @static - */ - public static function getLoader() - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getLoader(); - } - /** - * Get the default locale being used. - * - * @return string - * @static - */ - public static function locale() - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->locale(); - } - /** - * Get the default locale being used. - * - * @return string - * @static - */ - public static function getLocale() - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getLocale(); - } - /** - * Set the default locale. - * - * @param string $locale - * @return void - * @throws \InvalidArgumentException - * @static - */ - public static function setLocale($locale) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setLocale($locale); - } - /** - * Get the fallback locale being used. - * - * @return string - * @static - */ - public static function getFallback() - { - /** @var \Illuminate\Translation\Translator $instance */ - return $instance->getFallback(); - } - /** - * Set the fallback locale being used. - * - * @param string $fallback - * @return void - * @static - */ - public static function setFallback($fallback) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setFallback($fallback); - } - /** - * Set the loaded translation groups. - * - * @param array $loaded - * @return void - * @static - */ - public static function setLoaded($loaded) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setLoaded($loaded); - } - /** - * Add a handler to be executed in order to format a given class to a string during translation replacements. - * - * @param callable|string $class - * @param callable|null $handler - * @return void - * @static - */ - public static function stringable($class, $handler = null) - { - /** @var \Illuminate\Translation\Translator $instance */ - $instance->stringable($class, $handler); - } - /** - * Set the parsed value of a key. - * - * @param string $key - * @param array $parsed - * @return void - * @static - */ - public static function setParsedKey($key, $parsed) - { //Method inherited from \Illuminate\Support\NamespacedItemResolver - /** @var \Illuminate\Translation\Translator $instance */ - $instance->setParsedKey($key, $parsed); - } - /** - * Flush the cache of parsed keys. - * - * @return void - * @static - */ - public static function flushParsedKeys() - { //Method inherited from \Illuminate\Support\NamespacedItemResolver - /** @var \Illuminate\Translation\Translator $instance */ - $instance->flushParsedKeys(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Translation\Translator::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Translation\Translator::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Translation\Translator::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Translation\Translator::flushMacros(); - } - - } - /** - * - * - * @method static void write(string $level, \Illuminate\Contracts\Support\Arrayable|\Illuminate\Contracts\Support\Jsonable|\Illuminate\Support\Stringable|array|string $message, array $context = []) - * @method static \Illuminate\Log\Logger withContext(array $context = []) - * @method static \Illuminate\Log\Logger withoutContext() - * @method static void listen(\Closure $callback) - * @method static \Psr\Log\LoggerInterface getLogger() - * @method static \Illuminate\Contracts\Events\Dispatcher getEventDispatcher() - * @method static void setEventDispatcher(\Illuminate\Contracts\Events\Dispatcher $dispatcher) - * @method static \Illuminate\Log\Logger|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @method static \Illuminate\Log\Logger|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @see \Illuminate\Log\LogManager - */ - class Log { - /** - * Build an on-demand log channel. - * - * @param array $config - * @return \Psr\Log\LoggerInterface - * @static - */ - public static function build($config) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->build($config); - } - /** - * Create a new, on-demand aggregate logger instance. - * - * @param array $channels - * @param string|null $channel - * @return \Psr\Log\LoggerInterface - * @static - */ - public static function stack($channels, $channel = null) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->stack($channels, $channel); - } - /** - * Get a log channel instance. - * - * @param string|null $channel - * @return \Psr\Log\LoggerInterface - * @static - */ - public static function channel($channel = null) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->channel($channel); - } - /** - * Get a log driver instance. - * - * @param string|null $driver - * @return \Psr\Log\LoggerInterface - * @static - */ - public static function driver($driver = null) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->driver($driver); - } - /** - * Share context across channels and stacks. - * - * @param array $context - * @return \Illuminate\Log\LogManager - * @static - */ - public static function shareContext($context) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->shareContext($context); - } - /** - * The context shared across channels and stacks. - * - * @return array - * @static - */ - public static function sharedContext() - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->sharedContext(); - } - /** - * Flush the shared context. - * - * @return \Illuminate\Log\LogManager - * @static - */ - public static function flushSharedContext() - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->flushSharedContext(); - } - /** - * Get the default log driver name. - * - * @return string|null - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default log driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Log\LogManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Unset the given channel instance. - * - * @param string|null $driver - * @return void - * @static - */ - public static function forgetChannel($driver = null) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->forgetChannel($driver); - } - /** - * Get all of the resolved log channels. - * - * @return array - * @static - */ - public static function getChannels() - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->getChannels(); - } - /** - * System is unusable. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function emergency($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->emergency($message, $context); - } - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function alert($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->alert($message, $context); - } - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function critical($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->critical($message, $context); - } - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function error($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->error($message, $context); - } - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function warning($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->warning($message, $context); - } - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function notice($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->notice($message, $context); - } - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function info($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->info($message, $context); - } - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function debug($message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->debug($message, $context); - } - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * @return void - * @static - */ - public static function log($level, $message, $context = []) - { - /** @var \Illuminate\Log\LogManager $instance */ - $instance->log($level, $message, $context); - } - - } - /** - * - * - * @method static void alwaysFrom(string $address, string|null $name = null) - * @method static void alwaysReplyTo(string $address, string|null $name = null) - * @method static void alwaysReturnPath(string $address) - * @method static void alwaysTo(string $address, string|null $name = null) - * @method static \Illuminate\Mail\SentMessage|null html(string $html, mixed $callback) - * @method static \Illuminate\Mail\SentMessage|null plain(string $view, array $data, mixed $callback) - * @method static string render(string|array $view, array $data = []) - * @method static mixed onQueue(string $queue, \Illuminate\Contracts\Mail\Mailable $view) - * @method static mixed queueOn(string $queue, \Illuminate\Contracts\Mail\Mailable $view) - * @method static mixed laterOn(string $queue, \DateTimeInterface|\DateInterval|int $delay, \Illuminate\Contracts\Mail\Mailable $view) - * @method static \Symfony\Component\Mailer\Transport\TransportInterface getSymfonyTransport() - * @method static \Illuminate\Contracts\View\Factory getViewFactory() - * @method static void setSymfonyTransport(\Symfony\Component\Mailer\Transport\TransportInterface $transport) - * @method static \Illuminate\Mail\Mailer setQueue(\Illuminate\Contracts\Queue\Factory $queue) - * @method static void macro(string $name, object|callable $macro) - * @method static void mixin(object $mixin, bool $replace = true) - * @method static bool hasMacro(string $name) - * @method static void flushMacros() - * @see \Illuminate\Mail\MailManager - * @see \Illuminate\Support\Testing\Fakes\MailFake - */ - class Mail { - /** - * Get a mailer instance by name. - * - * @param string|null $name - * @return \Illuminate\Contracts\Mail\Mailer - * @static - */ - public static function mailer($name = null) - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->mailer($name); - } - /** - * Get a mailer driver instance. - * - * @param string|null $driver - * @return \Illuminate\Mail\Mailer - * @static - */ - public static function driver($driver = null) - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->driver($driver); - } - /** - * Create a new transport instance. - * - * @param array $config - * @return \Symfony\Component\Mailer\Transport\TransportInterface - * @throws \InvalidArgumentException - * @static - */ - public static function createSymfonyTransport($config) - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->createSymfonyTransport($config); - } - /** - * Get the default mail driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default mail driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Mail\MailManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Disconnect the given mailer and remove from local cache. - * - * @param string|null $name - * @return void - * @static - */ - public static function purge($name = null) - { - /** @var \Illuminate\Mail\MailManager $instance */ - $instance->purge($name); - } - /** - * Register a custom transport creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Mail\MailManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get the application instance used by the manager. - * - * @return \Illuminate\Contracts\Foundation\Application - * @static - */ - public static function getApplication() - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->getApplication(); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Mail\MailManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->setApplication($app); - } - /** - * Forget all of the resolved mailer instances. - * - * @return \Illuminate\Mail\MailManager - * @static - */ - public static function forgetMailers() - { - /** @var \Illuminate\Mail\MailManager $instance */ - return $instance->forgetMailers(); - } - /** - * Assert if a mailable was sent based on a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertSent($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertSent($mailable, $callback); - } - /** - * Determine if a mailable was not sent or queued to be sent based on a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotOutgoing($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotOutgoing($mailable, $callback); - } - /** - * Determine if a mailable was not sent based on a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotSent($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotSent($mailable, $callback); - } - /** - * Assert that no mailables were sent or queued to be sent. - * - * @return void - * @static - */ - public static function assertNothingOutgoing() - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingOutgoing(); - } - /** - * Assert that no mailables were sent. - * - * @return void - * @static - */ - public static function assertNothingSent() - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingSent(); - } - /** - * Assert if a mailable was queued based on a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertQueued($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertQueued($mailable, $callback); - } - /** - * Determine if a mailable was not queued based on a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotQueued($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNotQueued($mailable, $callback); - } - /** - * Assert that no mailables were queued. - * - * @return void - * @static - */ - public static function assertNothingQueued() - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertNothingQueued(); - } - /** - * Assert the total number of mailables that were sent. - * - * @param int $count - * @return void - * @static - */ - public static function assertSentCount($count) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertSentCount($count); - } - /** - * Assert the total number of mailables that were queued. - * - * @param int $count - * @return void - * @static - */ - public static function assertQueuedCount($count) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertQueuedCount($count); - } - /** - * Assert the total number of mailables that were sent or queued. - * - * @param int $count - * @return void - * @static - */ - public static function assertOutgoingCount($count) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->assertOutgoingCount($count); - } - /** - * Get all of the mailables matching a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function sent($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->sent($mailable, $callback); - } - /** - * Determine if the given mailable has been sent. - * - * @param string $mailable - * @return bool - * @static - */ - public static function hasSent($mailable) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->hasSent($mailable); - } - /** - * Get all of the queued mailables matching a truth-test callback. - * - * @param string|\Closure $mailable - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function queued($mailable, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->queued($mailable, $callback); - } - /** - * Determine if the given mailable has been queued. - * - * @param string $mailable - * @return bool - * @static - */ - public static function hasQueued($mailable) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->hasQueued($mailable); - } - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function to($users) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->to($users); - } - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function cc($users) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->cc($users); - } - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function bcc($users) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->bcc($users); - } - /** - * Send a new message with only a raw text part. - * - * @param string $text - * @param \Closure|string $callback - * @return void - * @static - */ - public static function raw($text, $callback) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->raw($text, $callback); - } - /** - * Send a new message using a view. - * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param array $data - * @param \Closure|string|null $callback - * @return void - * @static - */ - public static function send($view, $data = [], $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - $instance->send($view, $data, $callback); - } - /** - * Queue a new e-mail message for sending. - * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param string|null $queue - * @return mixed - * @static - */ - public static function queue($view, $queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->queue($view, $queue); - } - /** - * Queue a new e-mail message for sending after (n) seconds. - * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param string|null $queue - * @return mixed - * @static - */ - public static function later($delay, $view, $queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ - return $instance->later($delay, $view, $queue); - } - - } - /** - * - * - * @see \Illuminate\Notifications\ChannelManager - * @see \Illuminate\Support\Testing\Fakes\NotificationFake - */ - class Notification { - /** - * Send the given notification to the given notifiable entities. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @return void - * @static - */ - public static function send($notifiables, $notification) - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->send($notifiables, $notification); - } - /** - * Send the given notification immediately. - * - * @param \Illuminate\Support\Collection|array|mixed $notifiables - * @param mixed $notification - * @param array|null $channels - * @return void - * @static - */ - public static function sendNow($notifiables, $notification, $channels = null) - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->sendNow($notifiables, $notification, $channels); - } - /** - * Get a channel instance. - * - * @param string|null $name - * @return mixed - * @static - */ - public static function channel($name = null) - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->channel($name); - } - /** - * Get the default channel driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Get the default channel driver name. - * - * @return string - * @static - */ - public static function deliversVia() - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->deliversVia(); - } - /** - * Set the default channel driver name. - * - * @param string $channel - * @return void - * @static - */ - public static function deliverVia($channel) - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - $instance->deliverVia($channel); - } - /** - * Set the locale of notifications. - * - * @param string $locale - * @return \Illuminate\Notifications\ChannelManager - * @static - */ - public static function locale($locale) - { - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->locale($locale); - } - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->driver($driver); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Notifications\ChannelManager - * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get all of the created "drivers". - * - * @return array - * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getDrivers(); - } - /** - * Get the container instance used by the manager. - * - * @return \Illuminate\Contracts\Container\Container - * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->getContainer(); - } - /** - * Set the container instance used by the manager. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Notifications\ChannelManager - * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->setContainer($container); - } - /** - * Forget all of the resolved driver instances. - * - * @return \Illuminate\Notifications\ChannelManager - * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Notifications\ChannelManager $instance */ - return $instance->forgetDrivers(); - } - /** - * Assert if a notification was sent on-demand based on a truth-test callback. - * - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * @throws \Exception - * @static - */ - public static function assertSentOnDemand($notification, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentOnDemand($notification, $callback); - } - /** - * Assert if a notification was sent based on a truth-test callback. - * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * @throws \Exception - * @static - */ - public static function assertSentTo($notifiable, $notification, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentTo($notifiable, $notification, $callback); - } - /** - * Assert if a notification was sent on-demand a number of times. - * - * @param string $notification - * @param int $times - * @return void - * @static - */ - public static function assertSentOnDemandTimes($notification, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentOnDemandTimes($notification, $times); - } - /** - * Assert if a notification was sent a number of times. - * - * @param mixed $notifiable - * @param string $notification - * @param int $times - * @return void - * @static - */ - public static function assertSentToTimes($notifiable, $notification, $times = 1) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentToTimes($notifiable, $notification, $times); - } - /** - * Determine if a notification was sent based on a truth-test callback. - * - * @param mixed $notifiable - * @param string|\Closure $notification - * @param callable|null $callback - * @return void - * @throws \Exception - * @static - */ - public static function assertNotSentTo($notifiable, $notification, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNotSentTo($notifiable, $notification, $callback); - } - /** - * Assert that no notifications were sent. - * - * @return void - * @static - */ - public static function assertNothingSent() - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNothingSent(); - } - /** - * Assert that no notifications were sent to the given notifiable. - * - * @param mixed $notifiable - * @return void - * @throws \Exception - * @static - */ - public static function assertNothingSentTo($notifiable) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertNothingSentTo($notifiable); - } - /** - * Assert the total amount of times a notification was sent. - * - * @param string $notification - * @param int $expectedCount - * @return void - * @static - */ - public static function assertSentTimes($notification, $expectedCount) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertSentTimes($notification, $expectedCount); - } - /** - * Assert the total count of notification that were sent. - * - * @param int $expectedCount - * @return void - * @static - */ - public static function assertCount($expectedCount) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - $instance->assertCount($expectedCount); - } - /** - * Get all of the notifications matching a truth-test callback. - * - * @param mixed $notifiable - * @param string $notification - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function sent($notifiable, $notification, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->sent($notifiable, $notification, $callback); - } - /** - * Determine if there are more notifications left to inspect. - * - * @param mixed $notifiable - * @param string $notification - * @return bool - * @static - */ - public static function hasSent($notifiable, $notification) - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->hasSent($notifiable, $notification); - } - /** - * Get the notifications that have been sent. - * - * @return array - * @static - */ - public static function sentNotifications() - { - /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ - return $instance->sentNotifications(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Support\Testing\Fakes\NotificationFake::flushMacros(); - } - - } - /** - * - * - * @method static string sendResetLink(array $credentials, \Closure|null $callback = null) - * @method static mixed reset(array $credentials, \Closure $callback) - * @method static \Illuminate\Contracts\Auth\CanResetPassword|null getUser(array $credentials) - * @method static string createToken(\Illuminate\Contracts\Auth\CanResetPassword $user) - * @method static void deleteToken(\Illuminate\Contracts\Auth\CanResetPassword $user) - * @method static bool tokenExists(\Illuminate\Contracts\Auth\CanResetPassword $user, string $token) - * @method static \Illuminate\Auth\Passwords\TokenRepositoryInterface getRepository() - * @see \Illuminate\Auth\Passwords\PasswordBrokerManager - * @see \Illuminate\Auth\Passwords\PasswordBroker - */ - class Password { - /** - * Attempt to get the broker from the local cache. - * - * @param string|null $name - * @return \Illuminate\Contracts\Auth\PasswordBroker - * @static - */ - public static function broker($name = null) - { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - return $instance->broker($name); - } - /** - * Get the default password broker name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default password broker name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ - $instance->setDefaultDriver($name); - } - - } - /** - * - * - * @method static \Illuminate\Process\PendingProcess command(array|string $command) - * @method static \Illuminate\Process\PendingProcess path(string $path) - * @method static \Illuminate\Process\PendingProcess timeout(int $timeout) - * @method static \Illuminate\Process\PendingProcess idleTimeout(int $timeout) - * @method static \Illuminate\Process\PendingProcess forever() - * @method static \Illuminate\Process\PendingProcess env(array $environment) - * @method static \Illuminate\Process\PendingProcess input(\Traversable|resource|string|int|float|bool|null $input) - * @method static \Illuminate\Process\PendingProcess quietly() - * @method static \Illuminate\Process\PendingProcess tty(bool $tty = true) - * @method static \Illuminate\Process\PendingProcess options(array $options) - * @method static \Illuminate\Contracts\Process\ProcessResult run(array|string|null $command = null, callable|null $output = null) - * @method static \Illuminate\Process\InvokedProcess start(array|string|null $command = null, callable $output = null) - * @method static \Illuminate\Process\PendingProcess withFakeHandlers(array $fakeHandlers) - * @method static \Illuminate\Process\PendingProcess|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @method static \Illuminate\Process\PendingProcess|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null) - * @see \Illuminate\Process\PendingProcess - * @see \Illuminate\Process\Factory - */ - class Process { - /** - * Create a new fake process response for testing purposes. - * - * @param array|string $output - * @param array|string $errorOutput - * @param int $exitCode - * @return \Illuminate\Process\FakeProcessResult - * @static - */ - public static function result($output = '', $errorOutput = '', $exitCode = 0) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->result($output, $errorOutput, $exitCode); - } - /** - * Begin describing a fake process lifecycle. - * - * @return \Illuminate\Process\FakeProcessDescription - * @static - */ - public static function describe() - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->describe(); - } - /** - * Begin describing a fake process sequence. - * - * @param array $processes - * @return \Illuminate\Process\FakeProcessSequence - * @static - */ - public static function sequence($processes = []) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->sequence($processes); - } - /** - * Indicate that the process factory should fake processes. - * - * @param \Closure|array|null $callback - * @return \Illuminate\Process\Factory - * @static - */ - public static function fake($callback = null) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->fake($callback); - } - /** - * Determine if the process factory has fake process handlers and is recording processes. - * - * @return bool - * @static - */ - public static function isRecording() - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->isRecording(); - } - /** - * Record the given process if processes should be recorded. - * - * @param \Illuminate\Process\PendingProcess $process - * @param \Illuminate\Contracts\Process\ProcessResult $result - * @return \Illuminate\Process\Factory - * @static - */ - public static function recordIfRecording($process, $result) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->recordIfRecording($process, $result); - } - /** - * Record the given process. - * - * @param \Illuminate\Process\PendingProcess $process - * @param \Illuminate\Contracts\Process\ProcessResult $result - * @return \Illuminate\Process\Factory - * @static - */ - public static function record($process, $result) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->record($process, $result); - } - /** - * Indicate that an exception should be thrown if any process is not faked. - * - * @param bool $prevent - * @return \Illuminate\Process\Factory - * @static - */ - public static function preventStrayProcesses($prevent = true) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->preventStrayProcesses($prevent); - } - /** - * Determine if stray processes are being prevented. - * - * @return bool - * @static - */ - public static function preventingStrayProcesses() - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->preventingStrayProcesses(); - } - /** - * Assert that a process was recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return \Illuminate\Process\Factory - * @static - */ - public static function assertRan($callback) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->assertRan($callback); - } - /** - * Assert that a process was recorded a given number of times matching a given truth test. - * - * @param \Closure|string $callback - * @param int $times - * @return \Illuminate\Process\Factory - * @static - */ - public static function assertRanTimes($callback, $times = 1) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->assertRanTimes($callback, $times); - } - /** - * Assert that a process was not recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return \Illuminate\Process\Factory - * @static - */ - public static function assertNotRan($callback) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->assertNotRan($callback); - } - /** - * Assert that a process was not recorded matching a given truth test. - * - * @param \Closure|string $callback - * @return \Illuminate\Process\Factory - * @static - */ - public static function assertDidntRun($callback) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->assertDidntRun($callback); - } - /** - * Assert that no processes were recorded. - * - * @return \Illuminate\Process\Factory - * @static - */ - public static function assertNothingRan() - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->assertNothingRan(); - } - /** - * Start defining a pool of processes. - * - * @param callable $callback - * @return \Illuminate\Process\Pool - * @static - */ - public static function pool($callback) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->pool($callback); - } - /** - * Start defining a series of piped processes. - * - * @param callable|array $callback - * @return \Illuminate\Contracts\Process\ProcessResult - * @static - */ - public static function pipe($callback, $output = null) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->pipe($callback, $output); - } - /** - * Run a pool of processes and wait for them to finish executing. - * - * @param callable $callback - * @param callable|null $output - * @return \Illuminate\Process\ProcessPoolResults - * @static - */ - public static function concurrently($callback, $output = null) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->concurrently($callback, $output); - } - /** - * Create a new pending process associated with this factory. - * - * @return \Illuminate\Process\PendingProcess - * @static - */ - public static function newPendingProcess() - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->newPendingProcess(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Process\Factory::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Process\Factory::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Process\Factory::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Process\Factory::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Process\Factory $instance */ - return $instance->macroCall($method, $parameters); - } - - } - /** - * - * - * @see \Illuminate\Queue\QueueManager - * @see \Illuminate\Queue\Queue - * @see \Illuminate\Support\Testing\Fakes\QueueFake - */ - class Queue { - /** - * Register an event listener for the before job event. - * - * @param mixed $callback - * @return void - * @static - */ - public static function before($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->before($callback); - } - /** - * Register an event listener for the after job event. - * - * @param mixed $callback - * @return void - * @static - */ - public static function after($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->after($callback); - } - /** - * Register an event listener for the exception occurred job event. - * - * @param mixed $callback - * @return void - * @static - */ - public static function exceptionOccurred($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->exceptionOccurred($callback); - } - /** - * Register an event listener for the daemon queue loop. - * - * @param mixed $callback - * @return void - * @static - */ - public static function looping($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->looping($callback); - } - /** - * Register an event listener for the failed job event. - * - * @param mixed $callback - * @return void - * @static - */ - public static function failing($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->failing($callback); - } - /** - * Register an event listener for the daemon queue stopping. - * - * @param mixed $callback - * @return void - * @static - */ - public static function stopping($callback) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->stopping($callback); - } - /** - * Determine if the driver is connected. - * - * @param string|null $name - * @return bool - * @static - */ - public static function connected($name = null) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connected($name); - } - /** - * Resolve a queue connection instance. - * - * @param string|null $name - * @return \Illuminate\Contracts\Queue\Queue - * @static - */ - public static function connection($name = null) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->connection($name); - } - /** - * Add a queue connection resolver. - * - * @param string $driver - * @param \Closure $resolver - * @return void - * @static - */ - public static function extend($driver, $resolver) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->extend($driver, $resolver); - } - /** - * Add a queue connection resolver. - * - * @param string $driver - * @param \Closure $resolver - * @return void - * @static - */ - public static function addConnector($driver, $resolver) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->addConnector($driver, $resolver); - } - /** - * Get the name of the default queue connection. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the name of the default queue connection. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Get the full name for the given connection. - * - * @param string|null $connection - * @return string - * @static - */ - public static function getName($connection = null) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getName($connection); - } - /** - * Get the application instance used by the manager. - * - * @return \Illuminate\Contracts\Foundation\Application - * @static - */ - public static function getApplication() - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->getApplication(); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Queue\QueueManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Queue\QueueManager $instance */ - return $instance->setApplication($app); - } - /** - * Specify the jobs that should be queued instead of faked. - * - * @param array|string $jobsToBeQueued - * @return \Illuminate\Support\Testing\Fakes\QueueFake - * @static - */ - public static function except($jobsToBeQueued) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->except($jobsToBeQueued); - } - /** - * Assert if a job was pushed based on a truth-test callback. - * - * @param string|\Closure $job - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertPushed($job, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushed($job, $callback); - } - /** - * Assert if a job was pushed based on a truth-test callback. - * - * @param string $queue - * @param string|\Closure $job - * @param callable|null $callback - * @return void - * @static - */ - public static function assertPushedOn($queue, $job, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedOn($queue, $job, $callback); - } - /** - * Assert if a job was pushed with chained jobs based on a truth-test callback. - * - * @param string $job - * @param array $expectedChain - * @param callable|null $callback - * @return void - * @static - */ - public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithChain($job, $expectedChain, $callback); - } - /** - * Assert if a job was pushed with an empty chain based on a truth-test callback. - * - * @param string $job - * @param callable|null $callback - * @return void - * @static - */ - public static function assertPushedWithoutChain($job, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertPushedWithoutChain($job, $callback); - } - /** - * Assert if a closure was pushed based on a truth-test callback. - * - * @param callable|int|null $callback - * @return void - * @static - */ - public static function assertClosurePushed($callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertClosurePushed($callback); - } - /** - * Assert that a closure was not pushed based on a truth-test callback. - * - * @param callable|null $callback - * @return void - * @static - */ - public static function assertClosureNotPushed($callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertClosureNotPushed($callback); - } - /** - * Determine if a job was pushed based on a truth-test callback. - * - * @param string|\Closure $job - * @param callable|null $callback - * @return void - * @static - */ - public static function assertNotPushed($job, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNotPushed($job, $callback); - } - /** - * Assert that no jobs were pushed. - * - * @return void - * @static - */ - public static function assertNothingPushed() - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - $instance->assertNothingPushed(); - } - /** - * Get all of the jobs matching a truth-test callback. - * - * @param string $job - * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static - */ - public static function pushed($job, $callback = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushed($job, $callback); - } - /** - * Determine if there are any stored jobs for a given class. - * - * @param string $job - * @return bool - * @static - */ - public static function hasPushed($job) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->hasPushed($job); - } - /** - * Get the size of the queue. - * - * @param string|null $queue - * @return int - * @static - */ - public static function size($queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->size($queue); - } - /** - * Push a new job onto the queue. - * - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed - * @static - */ - public static function push($job, $data = '', $queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->push($job, $data, $queue); - } - /** - * Determine if a job should be faked or actually dispatched. - * - * @param object $job - * @return bool - * @static - */ - public static function shouldFakeJob($job) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->shouldFakeJob($job); - } - /** - * Push a raw payload onto the queue. - * - * @param string $payload - * @param string|null $queue - * @param array $options - * @return mixed - * @static - */ - public static function pushRaw($payload, $queue = null, $options = []) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushRaw($payload, $queue, $options); - } - /** - * Push a new job onto the queue after (n) seconds. - * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @param string|null $queue - * @return mixed - * @static - */ - public static function later($delay, $job, $data = '', $queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->later($delay, $job, $data, $queue); - } - /** - * Push a new job onto the queue. - * - * @param string $queue - * @param string|object $job - * @param mixed $data - * @return mixed - * @static - */ - public static function pushOn($queue, $job, $data = '') - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushOn($queue, $job, $data); - } - /** - * Push a new job onto a specific queue after (n) seconds. - * - * @param string $queue - * @param \DateTimeInterface|\DateInterval|int $delay - * @param string|object $job - * @param mixed $data - * @return mixed - * @static - */ - public static function laterOn($queue, $delay, $job, $data = '') - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->laterOn($queue, $delay, $job, $data); - } - /** - * Pop the next job off of the queue. - * - * @param string|null $queue - * @return \Illuminate\Contracts\Queue\Job|null - * @static - */ - public static function pop($queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pop($queue); - } - /** - * Push an array of jobs onto the queue. - * - * @param array $jobs - * @param mixed $data - * @param string|null $queue - * @return mixed - * @static - */ - public static function bulk($jobs, $data = '', $queue = null) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->bulk($jobs, $data, $queue); - } - /** - * Get the jobs that have been pushed. - * - * @return array - * @static - */ - public static function pushedJobs() - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->pushedJobs(); - } - /** - * Specify if jobs should be serialized and restored when being "pushed" to the queue. - * - * @param bool $serializeAndRestore - * @return \Illuminate\Support\Testing\Fakes\QueueFake - * @static - */ - public static function serializeAndRestore($serializeAndRestore = true) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->serializeAndRestore($serializeAndRestore); - } - /** - * Get the connection name for the queue. - * - * @return string - * @static - */ - public static function getConnectionName() - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->getConnectionName(); - } - /** - * Set the connection name for the queue. - * - * @param string $name - * @return \Illuminate\Support\Testing\Fakes\QueueFake - * @static - */ - public static function setConnectionName($name) - { - /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ - return $instance->setConnectionName($name); - } - /** - * Release a reserved job back onto the queue after (n) seconds. - * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJobRecord $job - * @param int $delay - * @return mixed - * @static - */ - public static function release($queue, $job, $delay) - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->release($queue, $job, $delay); - } - /** - * Delete a reserved job from the queue. - * - * @param string $queue - * @param string $id - * @return void - * @throws \Throwable - * @static - */ - public static function deleteReserved($queue, $id) - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteReserved($queue, $id); - } - /** - * Delete a reserved job from the reserved queue and release it. - * - * @param string $queue - * @param \Illuminate\Queue\Jobs\DatabaseJob $job - * @param int $delay - * @return void - * @static - */ - public static function deleteAndRelease($queue, $job, $delay) - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->deleteAndRelease($queue, $job, $delay); - } - /** - * Delete all of the jobs from the queue. - * - * @param string $queue - * @return int - * @static - */ - public static function clear($queue) - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->clear($queue); - } - /** - * Get the queue or return the default. - * - * @param string|null $queue - * @return string - * @static - */ - public static function getQueue($queue) - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getQueue($queue); - } - /** - * Get the underlying database instance. - * - * @return \Illuminate\Database\Connection - * @static - */ - public static function getDatabase() - { - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getDatabase(); - } - /** - * Get the backoff for an object-based queue handler. - * - * @param mixed $job - * @return mixed - * @static - */ - public static function getJobBackoff($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobBackoff($job); - } - /** - * Get the expiration timestamp for an object-based queue handler. - * - * @param mixed $job - * @return mixed - * @static - */ - public static function getJobExpiration($job) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getJobExpiration($job); - } - /** - * Register a callback to be executed when creating job payloads. - * - * @param callable|null $callback - * @return void - * @static - */ - public static function createPayloadUsing($callback) - { //Method inherited from \Illuminate\Queue\Queue - \Illuminate\Queue\DatabaseQueue::createPayloadUsing($callback); - } - /** - * Get the container instance being used by the connection. - * - * @return \Illuminate\Container\Container - * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - return $instance->getContainer(); - } - /** - * Set the IoC container instance. - * - * @param \Illuminate\Container\Container $container - * @return void - * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Queue\Queue - /** @var \Illuminate\Queue\DatabaseQueue $instance */ - $instance->setContainer($container); - } - - } - /** - * - * - * @see \Illuminate\Cache\RateLimiter - */ - class RateLimiter { - /** - * Register a named limiter configuration. - * - * @param string $name - * @param \Closure $callback - * @return \Illuminate\Cache\RateLimiter - * @static - */ - public static function for($name, $callback) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->for($name, $callback); - } - /** - * Get the given named rate limiter. - * - * @param string $name - * @return \Closure|null - * @static - */ - public static function limiter($name) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->limiter($name); - } - /** - * Attempts to execute a callback if it's not limited. - * - * @param string $key - * @param int $maxAttempts - * @param \Closure $callback - * @param int $decaySeconds - * @return mixed - * @static - */ - public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds); - } - /** - * Determine if the given key has been "accessed" too many times. - * - * @param string $key - * @param int $maxAttempts - * @return bool - * @static - */ - public static function tooManyAttempts($key, $maxAttempts) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->tooManyAttempts($key, $maxAttempts); - } - /** - * Increment the counter for a given key for a given decay time. - * - * @param string $key - * @param int $decaySeconds - * @return int - * @static - */ - public static function hit($key, $decaySeconds = 60) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->hit($key, $decaySeconds); - } - /** - * Get the number of attempts for the given key. - * - * @param string $key - * @return mixed - * @static - */ - public static function attempts($key) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->attempts($key); - } - /** - * Reset the number of attempts for the given key. - * - * @param string $key - * @return mixed - * @static - */ - public static function resetAttempts($key) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->resetAttempts($key); - } - /** - * Get the number of retries left for the given key. - * - * @param string $key - * @param int $maxAttempts - * @return int - * @static - */ - public static function remaining($key, $maxAttempts) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->remaining($key, $maxAttempts); - } - /** - * Get the number of retries left for the given key. - * - * @param string $key - * @param int $maxAttempts - * @return int - * @static - */ - public static function retriesLeft($key, $maxAttempts) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->retriesLeft($key, $maxAttempts); - } - /** - * Clear the hits and lockout timer for the given key. - * - * @param string $key - * @return void - * @static - */ - public static function clear($key) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - $instance->clear($key); - } - /** - * Get the number of seconds until the "key" is accessible again. - * - * @param string $key - * @return int - * @static - */ - public static function availableIn($key) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->availableIn($key); - } - /** - * Clean the rate limiter key from unicode characters. - * - * @param string $key - * @return string - * @static - */ - public static function cleanRateLimiterKey($key) - { - /** @var \Illuminate\Cache\RateLimiter $instance */ - return $instance->cleanRateLimiterKey($key); - } - - } - /** - * - * - * @see \Illuminate\Routing\Redirector - */ - class Redirect { - /** - * Create a new redirect response to the previous location. - * - * @param int $status - * @param array $headers - * @param mixed $fallback - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function back($status = 302, $headers = [], $fallback = false) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->back($status, $headers, $fallback); - } - /** - * Create a new redirect response to the current URI. - * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function refresh($status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->refresh($status, $headers); - } - /** - * Create a new redirect response, while putting the current URL in the session. - * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function guest($path, $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->guest($path, $status, $headers, $secure); - } - /** - * Create a new redirect response to the previously intended location. - * - * @param mixed $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function intended($default = '/', $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->intended($default, $status, $headers, $secure); - } - /** - * Create a new redirect response to the given path. - * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function to($path, $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->to($path, $status, $headers, $secure); - } - /** - * Create a new redirect response to an external URL (no validation). - * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function away($path, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->away($path, $status, $headers); - } - /** - * Create a new redirect response to the given HTTPS path. - * - * @param string $path - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function secure($path, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->secure($path, $status, $headers); - } - /** - * Create a new redirect response to a named route. - * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function route($route, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->route($route, $parameters, $status, $headers); - } - /** - * Create a new redirect response to a signed named route. - * - * @param string $route - * @param mixed $parameters - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); - } - /** - * Create a new redirect response to a signed named route. - * - * @param string $route - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers); - } - /** - * Create a new redirect response to a controller action. - * - * @param string|array $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function action($action, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->action($action, $parameters, $status, $headers); - } - /** - * Get the URL generator instance. - * - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function getUrlGenerator() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getUrlGenerator(); - } - /** - * Set the active session store. - * - * @param \Illuminate\Session\Store $session - * @return void - * @static - */ - public static function setSession($session) - { - /** @var \Illuminate\Routing\Redirector $instance */ - $instance->setSession($session); - } - /** - * Get the "intended" URL from the session. - * - * @return string|null - * @static - */ - public static function getIntendedUrl() - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->getIntendedUrl(); - } - /** - * Set the "intended" URL in the session. - * - * @param string $url - * @return \Illuminate\Routing\Redirector - * @static - */ - public static function setIntendedUrl($url) - { - /** @var \Illuminate\Routing\Redirector $instance */ - return $instance->setIntendedUrl($url); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Routing\Redirector::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\Redirector::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\Redirector::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\Redirector::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Http\Request - */ - class Request { - /** - * Create a new Illuminate HTTP request from server variables. - * - * @return static - * @static - */ - public static function capture() - { - return \Illuminate\Http\Request::capture(); - } - /** - * Return the Request instance. - * - * @return \Illuminate\Http\Request - * @static - */ - public static function instance() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->instance(); - } - /** - * Get the request method. - * - * @return string - * @static - */ - public static function method() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->method(); - } - /** - * Get the root URL for the application. - * - * @return string - * @static - */ - public static function root() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->root(); - } - /** - * Get the URL (no query string) for the request. - * - * @return string - * @static - */ - public static function url() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->url(); - } - /** - * Get the full URL for the request. - * - * @return string - * @static - */ - public static function fullUrl() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrl(); - } - /** - * Get the full URL for the request with the added query string parameters. - * - * @param array $query - * @return string - * @static - */ - public static function fullUrlWithQuery($query) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithQuery($query); - } - /** - * Get the full URL for the request without the given query string parameters. - * - * @param array|string $keys - * @return string - * @static - */ - public static function fullUrlWithoutQuery($keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlWithoutQuery($keys); - } - /** - * Get the current path info for the request. - * - * @return string - * @static - */ - public static function path() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->path(); - } - /** - * Get the current decoded path info for the request. - * - * @return string - * @static - */ - public static function decodedPath() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->decodedPath(); - } - /** - * Get a segment from the URI (1 based index). - * - * @param int $index - * @param string|null $default - * @return string|null - * @static - */ - public static function segment($index, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->segment($index, $default); - } - /** - * Get all of the segments for the request path. - * - * @return array - * @static - */ - public static function segments() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->segments(); - } - /** - * Determine if the current request URI matches a pattern. - * - * @param mixed $patterns - * @return bool - * @static - */ - public static function is(...$patterns) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->is(...$patterns); - } - /** - * Determine if the route name matches a given pattern. - * - * @param mixed $patterns - * @return bool - * @static - */ - public static function routeIs(...$patterns) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->routeIs(...$patterns); - } - /** - * Determine if the current request URL and query string match a pattern. - * - * @param mixed $patterns - * @return bool - * @static - */ - public static function fullUrlIs(...$patterns) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fullUrlIs(...$patterns); - } - /** - * Get the host name. - * - * @return string - * @static - */ - public static function host() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->host(); - } - /** - * Get the HTTP host being requested. - * - * @return string - * @static - */ - public static function httpHost() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->httpHost(); - } - /** - * Get the scheme and HTTP host. - * - * @return string - * @static - */ - public static function schemeAndHttpHost() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->schemeAndHttpHost(); - } - /** - * Determine if the request is the result of an AJAX call. - * - * @return bool - * @static - */ - public static function ajax() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ajax(); - } - /** - * Determine if the request is the result of a PJAX call. - * - * @return bool - * @static - */ - public static function pjax() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->pjax(); - } - /** - * Determine if the request is the result of a prefetch call. - * - * @return bool - * @static - */ - public static function prefetch() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->prefetch(); - } - /** - * Determine if the request is over HTTPS. - * - * @return bool - * @static - */ - public static function secure() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->secure(); - } - /** - * Get the client IP address. - * - * @return string|null - * @static - */ - public static function ip() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ip(); - } - /** - * Get the client IP addresses. - * - * @return array - * @static - */ - public static function ips() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->ips(); - } - /** - * Get the client user agent. - * - * @return string|null - * @static - */ - public static function userAgent() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->userAgent(); - } - /** - * Merge new input into the current request's input array. - * - * @param array $input - * @return \Illuminate\Http\Request - * @static - */ - public static function merge($input) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->merge($input); - } - /** - * Merge new input into the request's input, but only when that key is missing from the request. - * - * @param array $input - * @return \Illuminate\Http\Request - * @static - */ - public static function mergeIfMissing($input) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->mergeIfMissing($input); - } - /** - * Replace the input for the current request. - * - * @param array $input - * @return \Illuminate\Http\Request - * @static - */ - public static function replace($input) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->replace($input); - } - /** - * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * - * Instead, you may use the "input" method. - * - * @param string $key - * @param mixed $default - * @return mixed - * @static - */ - public static function get($key, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->get($key, $default); - } - /** - * Get the JSON payload for the request. - * - * @param string|null $key - * @param mixed $default - * @return \Symfony\Component\HttpFoundation\InputBag|mixed - * @static - */ - public static function json($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->json($key, $default); - } - /** - * Create a new request instance from the given Laravel request. - * - * @param \Illuminate\Http\Request $from - * @param \Illuminate\Http\Request|null $to - * @return static - * @static - */ - public static function createFrom($from, $to = null) - { - return \Illuminate\Http\Request::createFrom($from, $to); - } - /** - * Create an Illuminate request from a Symfony instance. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return static - * @static - */ - public static function createFromBase($request) - { - return \Illuminate\Http\Request::createFromBase($request); - } - /** - * Clones a request and overrides some of its parameters. - * - * @return static - * @param array|null $query The GET parameters - * @param array|null $request The POST parameters - * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array|null $cookies The COOKIE parameters - * @param array|null $files The FILES parameters - * @param array|null $server The SERVER parameters - * @static - */ - public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); - } - /** - * Whether the request contains a Session object. - * - * This method does not give any information about the state of the session object, - * like whether the session is started or not. It is just a way to check if this Request - * is associated with a Session instance. - * - * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` - * @static - */ - public static function hasSession($skipIfUninitialized = false) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasSession($skipIfUninitialized); - } - /** - * Gets the Session. - * - * @throws SessionNotFoundException When session is not set properly - * @static - */ - public static function getSession() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->getSession(); - } - /** - * Get the session associated with the request. - * - * @return \Illuminate\Contracts\Session\Session - * @throws \RuntimeException - * @static - */ - public static function session() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->session(); - } - /** - * Set the session instance on the request. - * - * @param \Illuminate\Contracts\Session\Session $session - * @return void - * @static - */ - public static function setLaravelSession($session) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->setLaravelSession($session); - } - /** - * Set the locale for the request instance. - * - * @param string $locale - * @return void - * @static - */ - public static function setRequestLocale($locale) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestLocale($locale); - } - /** - * Set the default locale for the request instance. - * - * @param string $locale - * @return void - * @static - */ - public static function setDefaultRequestLocale($locale) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultRequestLocale($locale); - } - /** - * Get the user making the request. - * - * @param string|null $guard - * @return mixed - * @static - */ - public static function user($guard = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->user($guard); - } - /** - * Get the route handling the request. - * - * @param string|null $param - * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null - * @static - */ - public static function route($param = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->route($param, $default); - } - /** - * Get a unique fingerprint for the request / route / IP address. - * - * @return string - * @throws \RuntimeException - * @static - */ - public static function fingerprint() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->fingerprint(); - } - /** - * Set the JSON payload for the request. - * - * @param \Symfony\Component\HttpFoundation\InputBag $json - * @return \Illuminate\Http\Request - * @static - */ - public static function setJson($json) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->setJson($json); - } - /** - * Get the user resolver callback. - * - * @return \Closure - * @static - */ - public static function getUserResolver() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserResolver(); - } - /** - * Set the user resolver callback. - * - * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static - */ - public static function setUserResolver($callback) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->setUserResolver($callback); - } - /** - * Get the route resolver callback. - * - * @return \Closure - * @static - */ - public static function getRouteResolver() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRouteResolver(); - } - /** - * Set the route resolver callback. - * - * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static - */ - public static function setRouteResolver($callback) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->setRouteResolver($callback); - } - /** - * Get all of the input and files for the request. - * - * @return array - * @static - */ - public static function toArray() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->toArray(); - } - /** - * Determine if the given offset exists. - * - * @param string $offset - * @return bool - * @static - */ - public static function offsetExists($offset) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetExists($offset); - } - /** - * Get the value at the given offset. - * - * @param string $offset - * @return mixed - * @static - */ - public static function offsetGet($offset) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->offsetGet($offset); - } - /** - * Set the value at the given offset. - * - * @param string $offset - * @param mixed $value - * @return void - * @static - */ - public static function offsetSet($offset, $value) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->offsetSet($offset, $value); - } - /** - * Remove the value at the given offset. - * - * @param string $offset - * @return void - * @static - */ - public static function offsetUnset($offset) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->offsetUnset($offset); - } - /** - * Sets the parameters for this request. - * - * This method also re-initializes all properties. - * - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @param string|resource|null $content The raw body data - * @return void - * @static - */ - public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); - } - /** - * Creates a new request with values from PHP's super globals. - * - * @static - */ - public static function createFromGlobals() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::createFromGlobals(); - } - /** - * Creates a Request based on a given URI and configuration. - * - * The information contained in the URI always take precedence - * over the other information (server and parameters). - * - * @param string $uri The URI - * @param string $method The HTTP method - * @param array $parameters The query (GET) or request (POST) parameters - * @param array $cookies The request cookies ($_COOKIE) - * @param array $files The request files ($_FILES) - * @param array $server The server parameters ($_SERVER) - * @param string|resource|null $content The raw body data - * @static - */ - public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); - } - /** - * Sets a callable able to create a Request instance. - * - * This is mainly useful when you need to override the Request class - * to keep BC with an existing system. It should not be used for any - * other purpose. - * - * @return void - * @static - */ - public static function setFactory($callable) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setFactory($callable); - } - /** - * Overrides the PHP global variables according to this request instance. - * - * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. - * $_FILES is never overridden, see rfc1867 - * - * @return void - * @static - */ - public static function overrideGlobals() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->overrideGlobals(); - } - /** - * Sets a list of trusted proxies. - * - * You should only list the reverse proxies that you manage directly. - * - * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] - * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * @return void - * @static - */ - public static function setTrustedProxies($proxies, $trustedHeaderSet) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); - } - /** - * Gets the list of trusted proxies. - * - * @return string[] - * @static - */ - public static function getTrustedProxies() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedProxies(); - } - /** - * Gets the set of trusted headers from trusted proxies. - * - * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies - * @static - */ - public static function getTrustedHeaderSet() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHeaderSet(); - } - /** - * Sets a list of trusted host patterns. - * - * You should only list the hosts you manage using regexs. - * - * @param array $hostPatterns A list of trusted host patterns - * @return void - * @static - */ - public static function setTrustedHosts($hostPatterns) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::setTrustedHosts($hostPatterns); - } - /** - * Gets the list of trusted host patterns. - * - * @return string[] - * @static - */ - public static function getTrustedHosts() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getTrustedHosts(); - } - /** - * Normalizes a query string. - * - * It builds a normalized query string, where keys/value pairs are alphabetized, - * have consistent escaping and unneeded delimiters are removed. - * - * @static - */ - public static function normalizeQueryString($qs) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::normalizeQueryString($qs); - } - /** - * Enables support for the _method request parameter to determine the intended HTTP method. - * - * Be warned that enabling this feature might lead to CSRF issues in your code. - * Check that you are using CSRF tokens when required. - * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered - * and used to send a "PUT" or "DELETE" request via the _method request parameter. - * If these methods are not protected against CSRF, this presents a possible vulnerability. - * - * The HTTP method can only be overridden when the real HTTP method is POST. - * - * @return void - * @static - */ - public static function enableHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - \Illuminate\Http\Request::enableHttpMethodParameterOverride(); - } - /** - * Checks whether support for the _method request parameter is enabled. - * - * @static - */ - public static function getHttpMethodParameterOverride() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getHttpMethodParameterOverride(); - } - /** - * Whether the request contains a Session which was started in one of the - * previous requests. - * - * @static - */ - public static function hasPreviousSession() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasPreviousSession(); - } - /** - * - * - * @return void - * @static - */ - public static function setSession($session) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setSession($session); - } - /** - * - * - * @internal - * @param \Symfony\Component\HttpFoundation\callable(): SessionInterface $factory - * @static - */ - public static function setSessionFactory($factory) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->setSessionFactory($factory); - } - /** - * Returns the client IP addresses. - * - * In the returned array the most trusted IP address is first, and the - * least trusted one last. The "real" client IP address is the last one, - * but this is also the least trusted one. Trusted proxies are stripped. - * - * Use this method carefully; you should use getClientIp() instead. - * - * @see getClientIp() - * @static - */ - public static function getClientIps() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIps(); - } - /** - * Returns the client IP address. - * - * This method can read the client IP address from the "X-Forwarded-For" header - * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" - * header value is a comma+space separated list of IP addresses, the left-most - * being the original client, and each successive proxy that passed the request - * adding the IP address where it received the request from. - * - * If your reverse proxy uses a different header name than "X-Forwarded-For", - * ("Client-Ip" for instance), configure it via the $trustedHeaderSet - * argument of the Request::setTrustedProxies() method instead. - * - * @see getClientIps() - * @see https://wikipedia.org/wiki/X-Forwarded-For - * @static - */ - public static function getClientIp() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getClientIp(); - } - /** - * Returns current script name. - * - * @static - */ - public static function getScriptName() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getScriptName(); - } - /** - * Returns the path being requested relative to the executed script. - * - * The path info always starts with a /. - * - * Suppose this request is instantiated from /mysite on localhost: - * - * * http://localhost/mysite returns an empty string - * * http://localhost/mysite/about returns '/about' - * * http://localhost/mysite/enco%20ded returns '/enco%20ded' - * * http://localhost/mysite/about?var=1 returns '/about' - * - * @return string The raw path (i.e. not urldecoded) - * @static - */ - public static function getPathInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPathInfo(); - } - /** - * Returns the root path from which this request is executed. - * - * Suppose that an index.php file instantiates this request object: - * - * * http://localhost/index.php returns an empty string - * * http://localhost/index.php/page returns an empty string - * * http://localhost/web/index.php returns '/web' - * * http://localhost/we%20b/index.php returns '/we%20b' - * - * @return string The raw path (i.e. not urldecoded) - * @static - */ - public static function getBasePath() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getBasePath(); - } - /** - * Returns the root URL from which this request is executed. - * - * The base URL never ends with a /. - * - * This is similar to getBasePath(), except that it also includes the - * script filename (e.g. index.php) if one exists. - * - * @return string The raw URL (i.e. not urldecoded) - * @static - */ - public static function getBaseUrl() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getBaseUrl(); - } - /** - * Gets the request's scheme. - * - * @static - */ - public static function getScheme() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getScheme(); - } - /** - * Returns the port on which the request is made. - * - * This method can read the client port from the "X-Forwarded-Port" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Port" header must contain the client port. - * - * @return int|string|null Can be a string if fetched from the server bag - * @static - */ - public static function getPort() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPort(); - } - /** - * Returns the user. - * - * @static - */ - public static function getUser() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUser(); - } - /** - * Returns the password. - * - * @static - */ - public static function getPassword() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPassword(); - } - /** - * Gets the user info. - * - * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server - * @static - */ - public static function getUserInfo() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUserInfo(); - } - /** - * Returns the HTTP host being requested. - * - * The port name will be appended to the host if it's non-standard. - * - * @static - */ - public static function getHttpHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getHttpHost(); - } - /** - * Returns the requested URI (path and query string). - * - * @return string The raw URI (i.e. not URI decoded) - * @static - */ - public static function getRequestUri() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestUri(); - } - /** - * Gets the scheme and HTTP host. - * - * If the URL was called with basic authentication, the user - * and the password are not added to the generated string. - * - * @static - */ - public static function getSchemeAndHttpHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getSchemeAndHttpHost(); - } - /** - * Generates a normalized URI (URL) for the Request. - * - * @see getQueryString() - * @static - */ - public static function getUri() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUri(); - } - /** - * Generates a normalized URI for the given path. - * - * @param string $path A path to use instead of the current one - * @static - */ - public static function getUriForPath($path) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getUriForPath($path); - } - /** - * Returns the path as relative reference from the current Request path. - * - * Only the URIs path component (no schema, host etc.) is relevant and must be given. - * Both paths must be absolute and not contain relative parts. - * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. - * Furthermore, they can be used to reduce the link size in documents. - * - * Example target paths, given a base path of "/a/b/c/d": - * - "/a/b/c/d" -> "" - * - "/a/b/c/" -> "./" - * - "/a/b/" -> "../" - * - "/a/b/c/other" -> "other" - * - "/a/x/y" -> "../../x/y" - * - * @static - */ - public static function getRelativeUriForPath($path) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRelativeUriForPath($path); - } - /** - * Generates the normalized query string for the Request. - * - * It builds a normalized query string, where keys/value pairs are alphabetized - * and have consistent escaping. - * - * @static - */ - public static function getQueryString() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getQueryString(); - } - /** - * Checks whether the request is secure or not. - * - * This method can read the client protocol from the "X-Forwarded-Proto" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". - * - * @static - */ - public static function isSecure() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isSecure(); - } - /** - * Returns the host name. - * - * This method can read the client host name from the "X-Forwarded-Host" header - * when trusted proxies were set via "setTrustedProxies()". - * - * The "X-Forwarded-Host" header must contain the client host name. - * - * @throws SuspiciousOperationException when the host name is invalid or not trusted - * @static - */ - public static function getHost() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getHost(); - } - /** - * Sets the request method. - * - * @return void - * @static - */ - public static function setMethod($method) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setMethod($method); - } - /** - * Gets the request "intended" method. - * - * If the X-HTTP-Method-Override header is set, and if the method is a POST, - * then it is used to determine the "real" intended HTTP method. - * - * The _method request parameter can also be used to determine the HTTP method, - * but only if enableHttpMethodParameterOverride() has been called. - * - * The method is always an uppercased string. - * - * @see getRealMethod() - * @static - */ - public static function getMethod() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getMethod(); - } - /** - * Gets the "real" request method. - * - * @see getMethod() - * @static - */ - public static function getRealMethod() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRealMethod(); - } - /** - * Gets the mime type associated with the format. - * - * @static - */ - public static function getMimeType($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getMimeType($format); - } - /** - * Gets the mime types associated with the format. - * - * @return string[] - * @static - */ - public static function getMimeTypes($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - return \Illuminate\Http\Request::getMimeTypes($format); - } - /** - * Gets the format associated with the mime type. - * - * @static - */ - public static function getFormat($mimeType) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getFormat($mimeType); - } - /** - * Associates a format with mime types. - * - * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) - * @return void - * @static - */ - public static function setFormat($format, $mimeTypes) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setFormat($format, $mimeTypes); - } - /** - * Gets the request format. - * - * Here is the process to determine the format: - * - * * format defined by the user (with setRequestFormat()) - * * _format request attribute - * * $default - * - * @see getPreferredFormat - * @static - */ - public static function getRequestFormat($default = 'html') - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getRequestFormat($default); - } - /** - * Sets the request format. - * - * @return void - * @static - */ - public static function setRequestFormat($format) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setRequestFormat($format); - } - /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). - * - * @deprecated since Symfony 6.2, use getContentTypeFormat() instead - * @static - */ - public static function getContentType() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentType(); - } - /** - * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header). - * - * @see Request::$formats - * @static - */ - public static function getContentTypeFormat() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getContentTypeFormat(); - } - /** - * Sets the default locale. - * - * @return void - * @static - */ - public static function setDefaultLocale($locale) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setDefaultLocale($locale); - } - /** - * Get the default locale. - * - * @static - */ - public static function getDefaultLocale() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getDefaultLocale(); - } - /** - * Sets the locale. - * - * @return void - * @static - */ - public static function setLocale($locale) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - $instance->setLocale($locale); - } - /** - * Get the locale. - * - * @static - */ - public static function getLocale() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getLocale(); - } - /** - * Checks if the request method is of specified type. - * - * @param string $method Uppercase request method (GET, POST etc) - * @static - */ - public static function isMethod($method) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethod($method); - } - /** - * Checks whether or not the method is safe. - * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 - * @static - */ - public static function isMethodSafe() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodSafe(); - } - /** - * Checks whether or not the method is idempotent. - * - * @static - */ - public static function isMethodIdempotent() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodIdempotent(); - } - /** - * Checks whether the method is cacheable or not. - * - * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 - * @static - */ - public static function isMethodCacheable() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isMethodCacheable(); - } - /** - * Returns the protocol version. - * - * If the application is behind a proxy, the protocol version used in the - * requests between the client and the proxy and between the proxy and the - * server might be different. This returns the former (from the "Via" header) - * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns - * the latter (from the "SERVER_PROTOCOL" server parameter). - * - * @static - */ - public static function getProtocolVersion() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getProtocolVersion(); - } - /** - * Returns the request body content. - * - * @param bool $asResource If true, a resource will be returned - * @return string|resource - * @psalm-return ($asResource is true ? resource : string) - * @static - */ - public static function getContent($asResource = false) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getContent($asResource); - } - /** - * Gets the decoded form or json request body. - * - * @throws JsonException When the body cannot be decoded to an array - * @static - */ - public static function getPayload() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPayload(); - } - /** - * Gets the Etags. - * - * @static - */ - public static function getETags() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getETags(); - } - /** - * - * - * @static - */ - public static function isNoCache() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isNoCache(); - } - /** - * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat; - * * the values of the Accept HTTP header. - * - * Note that if you use this method, you should send the "Vary: Accept" header - * in the response to prevent any issues with intermediary HTTP caches. - * - * @static - */ - public static function getPreferredFormat($default = 'html') - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredFormat($default); - } - /** - * Returns the preferred language. - * - * @param string[] $locales An array of ordered available locales - * @static - */ - public static function getPreferredLanguage($locales = null) - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getPreferredLanguage($locales); - } - /** - * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. - * - * @return string[] - * @static - */ - public static function getLanguages() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getLanguages(); - } - /** - * Gets a list of charsets acceptable by the client browser in preferable order. - * - * @return string[] - * @static - */ - public static function getCharsets() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getCharsets(); - } - /** - * Gets a list of encodings acceptable by the client browser in preferable order. - * - * @return string[] - * @static - */ - public static function getEncodings() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getEncodings(); - } - /** - * Gets a list of content types acceptable by the client browser in preferable order. - * - * @return string[] - * @static - */ - public static function getAcceptableContentTypes() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->getAcceptableContentTypes(); - } - /** - * Returns true if the request is an XMLHttpRequest. - * - * It works if your JavaScript library sets an X-Requested-With HTTP header. - * It is known to work with common JavaScript frameworks: - * - * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript - * @static - */ - public static function isXmlHttpRequest() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isXmlHttpRequest(); - } - /** - * Checks whether the client browser prefers safe content or not according to RFC8674. - * - * @see https://tools.ietf.org/html/rfc8674 - * @static - */ - public static function preferSafeContent() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->preferSafeContent(); - } - /** - * Indicates whether this request originated from a trusted proxy. - * - * This can be useful to determine whether or not to trust the - * contents of a proxy-specific header. - * - * @static - */ - public static function isFromTrustedProxy() - { //Method inherited from \Symfony\Component\HttpFoundation\Request - /** @var \Illuminate\Http\Request $instance */ - return $instance->isFromTrustedProxy(); - } - /** - * Filter the given array of rules into an array of rules that are included in precognitive headers. - * - * @param array $rules - * @return array - * @static - */ - public static function filterPrecognitiveRules($rules) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->filterPrecognitiveRules($rules); - } - /** - * Determine if the request is attempting to be precognitive. - * - * @return bool - * @static - */ - public static function isAttemptingPrecognition() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isAttemptingPrecognition(); - } - /** - * Determine if the request is precognitive. - * - * @return bool - * @static - */ - public static function isPrecognitive() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isPrecognitive(); - } - /** - * Determine if the request is sending JSON. - * - * @return bool - * @static - */ - public static function isJson() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isJson(); - } - /** - * Determine if the current request probably expects a JSON response. - * - * @return bool - * @static - */ - public static function expectsJson() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->expectsJson(); - } - /** - * Determine if the current request is asking for JSON. - * - * @return bool - * @static - */ - public static function wantsJson() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->wantsJson(); - } - /** - * Determines whether the current requests accepts a given content type. - * - * @param string|array $contentTypes - * @return bool - * @static - */ - public static function accepts($contentTypes) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->accepts($contentTypes); - } - /** - * Return the most suitable content type from the given array based on content negotiation. - * - * @param string|array $contentTypes - * @return string|null - * @static - */ - public static function prefers($contentTypes) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->prefers($contentTypes); - } - /** - * Determine if the current request accepts any content type. - * - * @return bool - * @static - */ - public static function acceptsAnyContentType() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsAnyContentType(); - } - /** - * Determines whether a request accepts JSON. - * - * @return bool - * @static - */ - public static function acceptsJson() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsJson(); - } - /** - * Determines whether a request accepts HTML. - * - * @return bool - * @static - */ - public static function acceptsHtml() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->acceptsHtml(); - } - /** - * Determine if the given content types match. - * - * @param string $actual - * @param string $type - * @return bool - * @static - */ - public static function matchesType($actual, $type) - { - return \Illuminate\Http\Request::matchesType($actual, $type); - } - /** - * Get the data format expected in the response. - * - * @param string $default - * @return string - * @static - */ - public static function format($default = 'html') - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->format($default); - } - /** - * Retrieve an old input item. - * - * @param string|null $key - * @param \Illuminate\Database\Eloquent\Model|string|array|null $default - * @return string|array|null - * @static - */ - public static function old($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->old($key, $default); - } - /** - * Flash the input for the current request to the session. - * - * @return void - * @static - */ - public static function flash() - { - /** @var \Illuminate\Http\Request $instance */ - $instance->flash(); - } - /** - * Flash only some of the input to the session. - * - * @param array|mixed $keys - * @return void - * @static - */ - public static function flashOnly($keys) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->flashOnly($keys); - } - /** - * Flash only some of the input to the session. - * - * @param array|mixed $keys - * @return void - * @static - */ - public static function flashExcept($keys) - { - /** @var \Illuminate\Http\Request $instance */ - $instance->flashExcept($keys); - } - /** - * Flush all of the old input from the session. - * - * @return void - * @static - */ - public static function flush() - { - /** @var \Illuminate\Http\Request $instance */ - $instance->flush(); - } - /** - * Retrieve a server variable from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - * @static - */ - public static function server($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->server($key, $default); - } - /** - * Determine if a header is set on the request. - * - * @param string $key - * @return bool - * @static - */ - public static function hasHeader($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasHeader($key); - } - /** - * Retrieve a header from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - * @static - */ - public static function header($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->header($key, $default); - } - /** - * Get the bearer token from the request headers. - * - * @return string|null - * @static - */ - public static function bearerToken() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->bearerToken(); - } - /** - * Determine if the request contains a given input item key. - * - * @param string|array $key - * @return bool - * @static - */ - public static function exists($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->exists($key); - } - /** - * Determine if the request contains a given input item key. - * - * @param string|array $key - * @return bool - * @static - */ - public static function has($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->has($key); - } - /** - * Determine if the request contains any of the given inputs. - * - * @param string|array $keys - * @return bool - * @static - */ - public static function hasAny($keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasAny($keys); - } - /** - * Apply the callback if the request contains the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - * @static - */ - public static function whenHas($key, $callback, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenHas($key, $callback, $default); - } - /** - * Determine if the request contains a non-empty value for an input item. - * - * @param string|array $key - * @return bool - * @static - */ - public static function filled($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->filled($key); - } - /** - * Determine if the request contains an empty value for an input item. - * - * @param string|array $key - * @return bool - * @static - */ - public static function isNotFilled($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->isNotFilled($key); - } - /** - * Determine if the request contains a non-empty value for any of the given inputs. - * - * @param string|array $keys - * @return bool - * @static - */ - public static function anyFilled($keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->anyFilled($keys); - } - /** - * Apply the callback if the request contains a non-empty value for the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - * @static - */ - public static function whenFilled($key, $callback, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenFilled($key, $callback, $default); - } - /** - * Determine if the request is missing a given input item key. - * - * @param string|array $key - * @return bool - * @static - */ - public static function missing($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->missing($key); - } - /** - * Apply the callback if the request is missing the given input item key. - * - * @param string $key - * @param callable $callback - * @param callable|null $default - * @return $this|mixed - * @static - */ - public static function whenMissing($key, $callback, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->whenMissing($key, $callback, $default); - } - /** - * Get the keys for all of the input and files. - * - * @return array - * @static - */ - public static function keys() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->keys(); - } - /** - * Get all of the input and files for the request. - * - * @param array|mixed|null $keys - * @return array - * @static - */ - public static function all($keys = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->all($keys); - } - /** - * Retrieve an input item from the request. - * - * @param string|null $key - * @param mixed $default - * @return mixed - * @static - */ - public static function input($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->input($key, $default); - } - /** - * Retrieve input from the request as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - * @static - */ - public static function str($key, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->str($key, $default); - } - /** - * Retrieve input from the request as a Stringable instance. - * - * @param string $key - * @param mixed $default - * @return \Illuminate\Support\Stringable - * @static - */ - public static function string($key, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->string($key, $default); - } - /** - * Retrieve input as a boolean value. - * - * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. - * - * @param string|null $key - * @param bool $default - * @return bool - * @static - */ - public static function boolean($key = null, $default = false) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->boolean($key, $default); - } - /** - * Retrieve input as an integer value. - * - * @param string $key - * @param int $default - * @return int - * @static - */ - public static function integer($key, $default = 0) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->integer($key, $default); - } - /** - * Retrieve input as a float value. - * - * @param string $key - * @param float $default - * @return float - * @static - */ - public static function float($key, $default = 0.0) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->float($key, $default); - } - /** - * Retrieve input from the request as a Carbon instance. - * - * @param string $key - * @param string|null $format - * @param string|null $tz - * @return \Illuminate\Support\Carbon|null - * @throws \Carbon\Exceptions\InvalidFormatException - * @static - */ - public static function date($key, $format = null, $tz = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->date($key, $format, $tz); - } - /** - * Retrieve input from the request as an enum. - * - * @template TEnum - * @param string $key - * @param \Illuminate\Http\class-string $enumClass - * @return \Illuminate\Http\TEnum|null - * @static - */ - public static function enum($key, $enumClass) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->enum($key, $enumClass); - } - /** - * Retrieve input from the request as a collection. - * - * @param array|string|null $key - * @return \Illuminate\Support\Collection - * @static - */ - public static function collect($key = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->collect($key); - } - /** - * Get a subset containing the provided keys with values from the input data. - * - * @param array|mixed $keys - * @return array - * @static - */ - public static function only($keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->only($keys); - } - /** - * Get all of the input except for a specified array of items. - * - * @param array|mixed $keys - * @return array - * @static - */ - public static function except($keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->except($keys); - } - /** - * Retrieve a query string item from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - * @static - */ - public static function query($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->query($key, $default); - } - /** - * Retrieve a request payload item from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - * @static - */ - public static function post($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->post($key, $default); - } - /** - * Determine if a cookie is set on the request. - * - * @param string $key - * @return bool - * @static - */ - public static function hasCookie($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasCookie($key); - } - /** - * Retrieve a cookie from the request. - * - * @param string|null $key - * @param string|array|null $default - * @return string|array|null - * @static - */ - public static function cookie($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->cookie($key, $default); - } - /** - * Get an array of all of the files on the request. - * - * @return array - * @static - */ - public static function allFiles() - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->allFiles(); - } - /** - * Determine if the uploaded data contains a file. - * - * @param string $key - * @return bool - * @static - */ - public static function hasFile($key) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->hasFile($key); - } - /** - * Retrieve a file from the request. - * - * @param string|null $key - * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null - * @static - */ - public static function file($key = null, $default = null) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->file($key, $default); - } - /** - * Dump the request items and end the script. - * - * @param mixed $keys - * @return \Illuminate\Http\never - * @static - */ - public static function dd(...$keys) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->dd(...$keys); - } - /** - * Dump the items. - * - * @param mixed $keys - * @return \Illuminate\Http\Request - * @static - */ - public static function dump($keys = []) - { - /** @var \Illuminate\Http\Request $instance */ - return $instance->dump($keys); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Http\Request::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Http\Request::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Http\Request::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Http\Request::flushMacros(); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param array $rules - * @param mixed $params - * @static - */ - public static function validate($rules, ...$params) - { - return \Illuminate\Http\Request::validate($rules, ...$params); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param string $errorBag - * @param array $rules - * @param mixed $params - * @static - */ - public static function validateWithBag($errorBag, $rules, ...$params) - { - return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $absolute - * @static - */ - public static function hasValidSignature($absolute = true) - { - return \Illuminate\Http\Request::hasValidSignature($absolute); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @static - */ - public static function hasValidRelativeSignature() - { - return \Illuminate\Http\Request::hasValidRelativeSignature(); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $ignoreQuery - * @param mixed $absolute - * @static - */ - public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) - { - return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); - } - /** - * - * - * @see \App\Providers\AppServiceProvider::boot() - * @param mixed $param - * @param mixed $newParam - * @static - */ - public static function rename($param, $newParam = null) - { - return \Illuminate\Http\Request::rename($param, $newParam); - } - - } - /** - * - * - * @see \Illuminate\Routing\ResponseFactory - */ - class Response { - /** - * Create a new response instance. - * - * @param mixed $content - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response - * @static - */ - public static function make($content = '', $status = 200, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->make($content, $status, $headers); - } - /** - * Create a new "no content" response. - * - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response - * @static - */ - public static function noContent($status = 204, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->noContent($status, $headers); - } - /** - * Create a new response for a given view. - * - * @param string|array $view - * @param array $data - * @param int $status - * @param array $headers - * @return \Illuminate\Http\Response - * @static - */ - public static function view($view, $data = [], $status = 200, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->view($view, $data, $status, $headers); - } - /** - * Create a new JSON response instance. - * - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse - * @static - */ - public static function json($data = [], $status = 200, $headers = [], $options = 0) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->json($data, $status, $headers, $options); - } - /** - * Create a new JSONP response instance. - * - * @param string $callback - * @param mixed $data - * @param int $status - * @param array $headers - * @param int $options - * @return \Illuminate\Http\JsonResponse - * @static - */ - public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->jsonp($callback, $data, $status, $headers, $options); - } - /** - * Create a new streamed response instance. - * - * @param callable $callback - * @param int $status - * @param array $headers - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static - */ - public static function stream($callback, $status = 200, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->stream($callback, $status, $headers); - } - /** - * Create a new streamed response instance as a file download. - * - * @param callable $callback - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static - */ - public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->streamDownload($callback, $name, $headers, $disposition); - } - /** - * Create a new file download response. - * - * @param \SplFileInfo|string $file - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - * @static - */ - public static function download($file, $name = null, $headers = [], $disposition = 'attachment') - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->download($file, $name, $headers, $disposition); - } - /** - * Return the raw contents of a binary file. - * - * @param \SplFileInfo|string $file - * @param array $headers - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - * @static - */ - public static function file($file, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->file($file, $headers); - } - /** - * Create a new redirect response to the given path. - * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function redirectTo($path, $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectTo($path, $status, $headers, $secure); - } - /** - * Create a new redirect response to a named route. - * - * @param string $route - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToRoute($route, $parameters, $status, $headers); - } - /** - * Create a new redirect response to a controller action. - * - * @param array|string $action - * @param mixed $parameters - * @param int $status - * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToAction($action, $parameters, $status, $headers); - } - /** - * Create a new redirect response, while putting the current URL in the session. - * - * @param string $path - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectGuest($path, $status, $headers, $secure); - } - /** - * Create a new redirect response to the previously intended location. - * - * @param string $default - * @param int $status - * @param array $headers - * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static - */ - public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) - { - /** @var \Illuminate\Routing\ResponseFactory $instance */ - return $instance->redirectToIntended($default, $status, $headers, $secure); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Routing\ResponseFactory::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\ResponseFactory::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\ResponseFactory::flushMacros(); - } - - } - /** - * - * - * @method static \Illuminate\Routing\RouteRegistrar attribute(string $key, mixed $value) - * @method static \Illuminate\Routing\RouteRegistrar whereAlpha(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereAlphaNumeric(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereNumber(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereUlid(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereUuid(array|string $parameters) - * @method static \Illuminate\Routing\RouteRegistrar whereIn(array|string $parameters, array $values) - * @method static \Illuminate\Routing\RouteRegistrar as(string $value) - * @method static \Illuminate\Routing\RouteRegistrar controller(string $controller) - * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) - * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) - * @method static \Illuminate\Routing\RouteRegistrar name(string $value) - * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) - * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) - * @method static \Illuminate\Routing\RouteRegistrar scopeBindings() - * @method static \Illuminate\Routing\RouteRegistrar where(array $where) - * @method static \Illuminate\Routing\RouteRegistrar withoutMiddleware(array|string $middleware) - * @method static \Illuminate\Routing\RouteRegistrar withoutScopedBindings() - * @see \Illuminate\Routing\Router - */ - class Route { - /** - * Register a new GET route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function get($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->get($uri, $action); - } - /** - * Register a new POST route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function post($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->post($uri, $action); - } - /** - * Register a new PUT route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function put($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->put($uri, $action); - } - /** - * Register a new PATCH route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function patch($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->patch($uri, $action); - } - /** - * Register a new DELETE route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function delete($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->delete($uri, $action); - } - /** - * Register a new OPTIONS route with the router. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function options($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->options($uri, $action); - } - /** - * Register a new route responding to all verbs. - * - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function any($uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->any($uri, $action); - } - /** - * Register a new fallback route with the router. - * - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function fallback($action) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->fallback($action); - } - /** - * Create a redirect from one URI to another. - * - * @param string $uri - * @param string $destination - * @param int $status - * @return \Illuminate\Routing\Route - * @static - */ - public static function redirect($uri, $destination, $status = 302) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->redirect($uri, $destination, $status); - } - /** - * Create a permanent redirect from one URI to another. - * - * @param string $uri - * @param string $destination - * @return \Illuminate\Routing\Route - * @static - */ - public static function permanentRedirect($uri, $destination) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->permanentRedirect($uri, $destination); - } - /** - * Register a new route that returns a view. - * - * @param string $uri - * @param string $view - * @param array $data - * @param int|array $status - * @param array $headers - * @return \Illuminate\Routing\Route - * @static - */ - public static function view($uri, $view, $data = [], $status = 200, $headers = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->view($uri, $view, $data, $status, $headers); - } - /** - * Register a new route with the given verbs. - * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function match($methods, $uri, $action = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->match($methods, $uri, $action); - } - /** - * Register an array of resource controllers. - * - * @param array $resources - * @param array $options - * @return void - * @static - */ - public static function resources($resources, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resources($resources, $options); - } - /** - * Route a resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - * @static - */ - public static function resource($name, $controller, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resource($name, $controller, $options); - } - /** - * Register an array of API resource controllers. - * - * @param array $resources - * @param array $options - * @return void - * @static - */ - public static function apiResources($resources, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiResources($resources, $options); - } - /** - * Route an API resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - * @static - */ - public static function apiResource($name, $controller, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiResource($name, $controller, $options); - } - /** - * Register an array of singleton resource controllers. - * - * @param array $singletons - * @param array $options - * @return void - * @static - */ - public static function singletons($singletons, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->singletons($singletons, $options); - } - /** - * Route a singleton resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration - * @static - */ - public static function singleton($name, $controller, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->singleton($name, $controller, $options); - } - /** - * Register an array of API singleton resource controllers. - * - * @param array $singletons - * @param array $options - * @return void - * @static - */ - public static function apiSingletons($singletons, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->apiSingletons($singletons, $options); - } - /** - * Route an API singleton resource to a controller. - * - * @param string $name - * @param string $controller - * @param array $options - * @return \Illuminate\Routing\PendingSingletonResourceRegistration - * @static - */ - public static function apiSingleton($name, $controller, $options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->apiSingleton($name, $controller, $options); - } - /** - * Create a route group with shared attributes. - * - * @param array $attributes - * @param \Closure|array|string $routes - * @return \Illuminate\Routing\Router - * @static - */ - public static function group($attributes, $routes) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->group($attributes, $routes); - } - /** - * Merge the given array with the last group stack. - * - * @param array $new - * @param bool $prependExistingPrefix - * @return array - * @static - */ - public static function mergeWithLastGroup($new, $prependExistingPrefix = true) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->mergeWithLastGroup($new, $prependExistingPrefix); - } - /** - * Get the prefix from the last group on the stack. - * - * @return string - * @static - */ - public static function getLastGroupPrefix() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getLastGroupPrefix(); - } - /** - * Add a route to the underlying route collection. - * - * @param array|string $methods - * @param string $uri - * @param array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function addRoute($methods, $uri, $action) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->addRoute($methods, $uri, $action); - } - /** - * Create a new Route object. - * - * @param array|string $methods - * @param string $uri - * @param mixed $action - * @return \Illuminate\Routing\Route - * @static - */ - public static function newRoute($methods, $uri, $action) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->newRoute($methods, $uri, $action); - } - /** - * Return the response returned by the given route. - * - * @param string $name - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function respondWithRoute($name) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->respondWithRoute($name); - } - /** - * Dispatch the request to the application. - * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function dispatch($request) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatch($request); - } - /** - * Dispatch the request to a route and return the response. - * - * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function dispatchToRoute($request) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->dispatchToRoute($request); - } - /** - * Gather the middleware for the given route with resolved class names. - * - * @param \Illuminate\Routing\Route $route - * @return array - * @static - */ - public static function gatherRouteMiddleware($route) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->gatherRouteMiddleware($route); - } - /** - * Resolve a flat array of middleware classes from the provided array. - * - * @param array $middleware - * @param array $excluded - * @return array - * @static - */ - public static function resolveMiddleware($middleware, $excluded = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resolveMiddleware($middleware, $excluded); - } - /** - * Create a response instance from the given value. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function prepareResponse($request, $response) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->prepareResponse($request, $response); - } - /** - * Static version of prepareResponse. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - * @static - */ - public static function toResponse($request, $response) - { - return \Illuminate\Routing\Router::toResponse($request, $response); - } - /** - * Substitute the route bindings onto the route. - * - * @param \Illuminate\Routing\Route $route - * @return \Illuminate\Routing\Route - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - * @static - */ - public static function substituteBindings($route) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->substituteBindings($route); - } - /** - * Substitute the implicit route bindings for the given route. - * - * @param \Illuminate\Routing\Route $route - * @return void - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Routing\Exceptions\BackedEnumCaseNotFoundException - * @static - */ - public static function substituteImplicitBindings($route) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->substituteImplicitBindings($route); - } - /** - * Register a route matched event listener. - * - * @param string|callable $callback - * @return void - * @static - */ - public static function matched($callback) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->matched($callback); - } - /** - * Get all of the defined middleware short-hand names. - * - * @return array - * @static - */ - public static function getMiddleware() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddleware(); - } - /** - * Register a short-hand name for a middleware. - * - * @param string $name - * @param string $class - * @return \Illuminate\Routing\Router - * @static - */ - public static function aliasMiddleware($name, $class) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->aliasMiddleware($name, $class); - } - /** - * Check if a middlewareGroup with the given name exists. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMiddlewareGroup($name) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasMiddlewareGroup($name); - } - /** - * Get all of the defined middleware groups. - * - * @return array - * @static - */ - public static function getMiddlewareGroups() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getMiddlewareGroups(); - } - /** - * Register a group of middleware. - * - * @param string $name - * @param array $middleware - * @return \Illuminate\Routing\Router - * @static - */ - public static function middlewareGroup($name, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->middlewareGroup($name, $middleware); - } - /** - * Add a middleware to the beginning of a middleware group. - * - * If the middleware is already in the group, it will not be added again. - * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router - * @static - */ - public static function prependMiddlewareToGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->prependMiddlewareToGroup($group, $middleware); - } - /** - * Add a middleware to the end of a middleware group. - * - * If the middleware is already in the group, it will not be added again. - * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router - * @static - */ - public static function pushMiddlewareToGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->pushMiddlewareToGroup($group, $middleware); - } - /** - * Remove the given middleware from the specified group. - * - * @param string $group - * @param string $middleware - * @return \Illuminate\Routing\Router - * @static - */ - public static function removeMiddlewareFromGroup($group, $middleware) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->removeMiddlewareFromGroup($group, $middleware); - } - /** - * Flush the router's middleware groups. - * - * @return \Illuminate\Routing\Router - * @static - */ - public static function flushMiddlewareGroups() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->flushMiddlewareGroups(); - } - /** - * Add a new route parameter binder. - * - * @param string $key - * @param string|callable $binder - * @return void - * @static - */ - public static function bind($key, $binder) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->bind($key, $binder); - } - /** - * Register a model binder for a wildcard. - * - * @param string $key - * @param string $class - * @param \Closure|null $callback - * @return void - * @static - */ - public static function model($key, $class, $callback = null) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->model($key, $class, $callback); - } - /** - * Get the binding callback for a given binding. - * - * @param string $key - * @return \Closure|null - * @static - */ - public static function getBindingCallback($key) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getBindingCallback($key); - } - /** - * Get the global "where" patterns. - * - * @return array - * @static - */ - public static function getPatterns() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getPatterns(); - } - /** - * Set a global where pattern on all routes. - * - * @param string $key - * @param string $pattern - * @return void - * @static - */ - public static function pattern($key, $pattern) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->pattern($key, $pattern); - } - /** - * Set a group of global where patterns on all routes. - * - * @param array $patterns - * @return void - * @static - */ - public static function patterns($patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->patterns($patterns); - } - /** - * Determine if the router currently has a group stack. - * - * @return bool - * @static - */ - public static function hasGroupStack() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->hasGroupStack(); - } - /** - * Get the current group stack for the router. - * - * @return array - * @static - */ - public static function getGroupStack() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getGroupStack(); - } - /** - * Get a route parameter for the current route. - * - * @param string $key - * @param string|null $default - * @return mixed - * @static - */ - public static function input($key, $default = null) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->input($key, $default); - } - /** - * Get the request currently being dispatched. - * - * @return \Illuminate\Http\Request - * @static - */ - public static function getCurrentRequest() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getCurrentRequest(); - } - /** - * Get the currently dispatched route instance. - * - * @return \Illuminate\Routing\Route|null - * @static - */ - public static function getCurrentRoute() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getCurrentRoute(); - } - /** - * Get the currently dispatched route instance. - * - * @return \Illuminate\Routing\Route|null - * @static - */ - public static function current() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->current(); - } - /** - * Check if a route with the given name exists. - * - * @param string|array $name - * @return bool - * @static - */ - public static function has($name) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->has($name); - } - /** - * Get the current route name. - * - * @return string|null - * @static - */ - public static function currentRouteName() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteName(); - } - /** - * Alias for the "currentRouteNamed" method. - * - * @param mixed $patterns - * @return bool - * @static - */ - public static function is(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->is(...$patterns); - } - /** - * Determine if the current route matches a pattern. - * - * @param mixed $patterns - * @return bool - * @static - */ - public static function currentRouteNamed(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteNamed(...$patterns); - } - /** - * Get the current route action. - * - * @return string|null - * @static - */ - public static function currentRouteAction() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteAction(); - } - /** - * Alias for the "currentRouteUses" method. - * - * @param array $patterns - * @return bool - * @static - */ - public static function uses(...$patterns) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->uses(...$patterns); - } - /** - * Determine if the current route action matches a given action. - * - * @param string $action - * @return bool - * @static - */ - public static function currentRouteUses($action) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->currentRouteUses($action); - } - /** - * Set the unmapped global resource parameters to singular. - * - * @param bool $singular - * @return void - * @static - */ - public static function singularResourceParameters($singular = true) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->singularResourceParameters($singular); - } - /** - * Set the global resource parameter mapping. - * - * @param array $parameters - * @return void - * @static - */ - public static function resourceParameters($parameters = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resourceParameters($parameters); - } - /** - * Get or set the verbs used in the resource URIs. - * - * @param array $verbs - * @return array|null - * @static - */ - public static function resourceVerbs($verbs = []) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->resourceVerbs($verbs); - } - /** - * Get the underlying route collection. - * - * @return \Illuminate\Routing\RouteCollectionInterface - * @static - */ - public static function getRoutes() - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->getRoutes(); - } - /** - * Set the route collection instance. - * - * @param \Illuminate\Routing\RouteCollection $routes - * @return void - * @static - */ - public static function setRoutes($routes) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->setRoutes($routes); - } - /** - * Set the compiled route collection instance. - * - * @param array $routes - * @return void - * @static - */ - public static function setCompiledRoutes($routes) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->setCompiledRoutes($routes); - } - /** - * Remove any duplicate middleware from the given array. - * - * @param array $middleware - * @return array - * @static - */ - public static function uniqueMiddleware($middleware) - { - return \Illuminate\Routing\Router::uniqueMiddleware($middleware); - } - /** - * Set the container instance used by the router. - * - * @param \Illuminate\Container\Container $container - * @return \Illuminate\Routing\Router - * @static - */ - public static function setContainer($container) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->setContainer($container); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Routing\Router::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\Router::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\Router::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\Router::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Routing\Router $instance */ - return $instance->macroCall($method, $parameters); - } - /** - * - * - * @see \App\Providers\RouteServiceProvider::boot() - * @param mixed $addendum - * @param mixed $uri - * @param mixed $controller - * @static - */ - public static function apiAddendumResource($addendum, $uri, $controller) - { - return \Illuminate\Routing\Router::apiAddendumResource($addendum, $uri, $controller); - } - - } - /** - * - * - * @see \Illuminate\Database\Schema\Builder - */ - class Schema { - /** - * Create a database in the schema. - * - * @param string $name - * @return bool - * @static - */ - public static function createDatabase($name) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->createDatabase($name); - } - /** - * Drop a database from the schema if the database exists. - * - * @param string $name - * @return bool - * @static - */ - public static function dropDatabaseIfExists($name) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->dropDatabaseIfExists($name); - } - /** - * Determine if the given table exists. - * - * @param string $table - * @return bool - * @static - */ - public static function hasTable($table) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasTable($table); - } - /** - * Get the column listing for a given table. - * - * @param string $table - * @return array - * @static - */ - public static function getColumnListing($table) - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnListing($table); - } - /** - * Drop all tables from the database. - * - * @return void - * @static - */ - public static function dropAllTables() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllTables(); - } - /** - * Drop all views from the database. - * - * @return void - * @static - */ - public static function dropAllViews() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllViews(); - } - /** - * Get all of the table names for the database. - * - * @return array - * @static - */ - public static function getAllTables() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllTables(); - } - /** - * Get all of the view names for the database. - * - * @return array - * @static - */ - public static function getAllViews() - { - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getAllViews(); - } - /** - * Set the default string length for migrations. - * - * @param int $length - * @return void - * @static - */ - public static function defaultStringLength($length) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); - } - /** - * Set the default morph key type for migrations. - * - * @param string $type - * @return void - * @throws \InvalidArgumentException - * @static - */ - public static function defaultMorphKeyType($type) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::defaultMorphKeyType($type); - } - /** - * Set the default morph key type for migrations to UUIDs. - * - * @return void - * @static - */ - public static function morphUsingUuids() - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::morphUsingUuids(); - } - /** - * Set the default morph key type for migrations to ULIDs. - * - * @return void - * @static - */ - public static function morphUsingUlids() - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::morphUsingUlids(); - } - /** - * Attempt to use native schema operations for dropping, renaming, and modifying columns, even if Doctrine DBAL is installed. - * - * @param bool $value - * @return void - * @static - */ - public static function useNativeSchemaOperationsIfPossible($value = true) - { //Method inherited from \Illuminate\Database\Schema\Builder - \Illuminate\Database\Schema\MySqlBuilder::useNativeSchemaOperationsIfPossible($value); - } - /** - * Determine if the given table has a given column. - * - * @param string $table - * @param string $column - * @return bool - * @static - */ - public static function hasColumn($table, $column) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasColumn($table, $column); - } - /** - * Determine if the given table has given columns. - * - * @param string $table - * @param array $columns - * @return bool - * @static - */ - public static function hasColumns($table, $columns) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->hasColumns($table, $columns); - } - /** - * Execute a table builder callback if the given table has a given column. - * - * @param string $table - * @param string $column - * @param \Closure $callback - * @return void - * @static - */ - public static function whenTableHasColumn($table, $column, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->whenTableHasColumn($table, $column, $callback); - } - /** - * Execute a table builder callback if the given table doesn't have a given column. - * - * @param string $table - * @param string $column - * @param \Closure $callback - * @return void - * @static - */ - public static function whenTableDoesntHaveColumn($table, $column, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->whenTableDoesntHaveColumn($table, $column, $callback); - } - /** - * Get the data type for the given column name. - * - * @param string $table - * @param string $column - * @return string - * @static - */ - public static function getColumnType($table, $column) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getColumnType($table, $column); - } - /** - * Modify a table on the schema. - * - * @param string $table - * @param \Closure $callback - * @return void - * @static - */ - public static function table($table, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->table($table, $callback); - } - /** - * Create a new table on the schema. - * - * @param string $table - * @param \Closure $callback - * @return void - * @static - */ - public static function create($table, $callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->create($table, $callback); - } - /** - * Drop a table from the schema. - * - * @param string $table - * @return void - * @static - */ - public static function drop($table) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->drop($table); - } - /** - * Drop a table from the schema if it exists. - * - * @param string $table - * @return void - * @static - */ - public static function dropIfExists($table) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropIfExists($table); - } - /** - * Drop columns from a table schema. - * - * @param string $table - * @param string|array $columns - * @return void - * @static - */ - public static function dropColumns($table, $columns) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropColumns($table, $columns); - } - /** - * Drop all types from the database. - * - * @return void - * @throws \LogicException - * @static - */ - public static function dropAllTypes() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->dropAllTypes(); - } - /** - * Rename a table on the schema. - * - * @param string $from - * @param string $to - * @return void - * @static - */ - public static function rename($from, $to) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->rename($from, $to); - } - /** - * Enable foreign key constraints. - * - * @return bool - * @static - */ - public static function enableForeignKeyConstraints() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->enableForeignKeyConstraints(); - } - /** - * Disable foreign key constraints. - * - * @return bool - * @static - */ - public static function disableForeignKeyConstraints() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->disableForeignKeyConstraints(); - } - /** - * Disable foreign key constraints during the execution of a callback. - * - * @param \Closure $callback - * @return mixed - * @static - */ - public static function withoutForeignKeyConstraints($callback) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->withoutForeignKeyConstraints($callback); - } - /** - * Get the database connection instance. - * - * @return \Illuminate\Database\Connection - * @static - */ - public static function getConnection() - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->getConnection(); - } - /** - * Set the database connection instance. - * - * @param \Illuminate\Database\Connection $connection - * @return \Illuminate\Database\Schema\MySqlBuilder - * @static - */ - public static function setConnection($connection) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - return $instance->setConnection($connection); - } - /** - * Set the Schema Blueprint resolver callback. - * - * @param \Closure $resolver - * @return void - * @static - */ - public static function blueprintResolver($resolver) - { //Method inherited from \Illuminate\Database\Schema\Builder - /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ - $instance->blueprintResolver($resolver); - } - - } - /** - * - * - * @see \Illuminate\Session\SessionManager - */ - class Session { - /** - * Determine if requests for the same session should wait for each to finish before executing. - * - * @return bool - * @static - */ - public static function shouldBlock() - { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->shouldBlock(); - } - /** - * Get the name of the cache store / driver that should be used to acquire session locks. - * - * @return string|null - * @static - */ - public static function blockDriver() - { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->blockDriver(); - } - /** - * Get the session configuration. - * - * @return array - * @static - */ - public static function getSessionConfig() - { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getSessionConfig(); - } - /** - * Get the default session driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Set the default session driver name. - * - * @param string $name - * @return void - * @static - */ - public static function setDefaultDriver($name) - { - /** @var \Illuminate\Session\SessionManager $instance */ - $instance->setDefaultDriver($name); - } - /** - * Get a driver instance. - * - * @param string|null $driver - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function driver($driver = null) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->driver($driver); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Session\SessionManager - * @static - */ - public static function extend($driver, $callback) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Get all of the created "drivers". - * - * @return array - * @static - */ - public static function getDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getDrivers(); - } - /** - * Get the container instance used by the manager. - * - * @return \Illuminate\Contracts\Container\Container - * @static - */ - public static function getContainer() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->getContainer(); - } - /** - * Set the container instance used by the manager. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Session\SessionManager - * @static - */ - public static function setContainer($container) - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->setContainer($container); - } - /** - * Forget all of the resolved driver instances. - * - * @return \Illuminate\Session\SessionManager - * @static - */ - public static function forgetDrivers() - { //Method inherited from \Illuminate\Support\Manager - /** @var \Illuminate\Session\SessionManager $instance */ - return $instance->forgetDrivers(); - } - /** - * Start the session, reading the data from a handler. - * - * @return bool - * @static - */ - public static function start() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->start(); - } - /** - * Save the session data to storage. - * - * @return void - * @static - */ - public static function save() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->save(); - } - /** - * Age the flash data for the session. - * - * @return void - * @static - */ - public static function ageFlashData() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->ageFlashData(); - } - /** - * Get all of the session data. - * - * @return array - * @static - */ - public static function all() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->all(); - } - /** - * Get a subset of the session data. - * - * @param array $keys - * @return array - * @static - */ - public static function only($keys) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->only($keys); - } - /** - * Checks if a key exists. - * - * @param string|array $key - * @return bool - * @static - */ - public static function exists($key) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->exists($key); - } - /** - * Determine if the given key is missing from the session data. - * - * @param string|array $key - * @return bool - * @static - */ - public static function missing($key) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->missing($key); - } - /** - * Checks if a key is present and not null. - * - * @param string|array $key - * @return bool - * @static - */ - public static function has($key) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->has($key); - } - /** - * Get an item from the session. - * - * @param string $key - * @param mixed $default - * @return mixed - * @static - */ - public static function get($key, $default = null) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->get($key, $default); - } - /** - * Get the value of a given key and then forget it. - * - * @param string $key - * @param mixed $default - * @return mixed - * @static - */ - public static function pull($key, $default = null) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->pull($key, $default); - } - /** - * Determine if the session contains old input. - * - * @param string|null $key - * @return bool - * @static - */ - public static function hasOldInput($key = null) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->hasOldInput($key); - } - /** - * Get the requested item from the flashed input array. - * - * @param string|null $key - * @param mixed $default - * @return mixed - * @static - */ - public static function getOldInput($key = null, $default = null) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getOldInput($key, $default); - } - /** - * Replace the given session attributes entirely. - * - * @param array $attributes - * @return void - * @static - */ - public static function replace($attributes) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->replace($attributes); - } - /** - * Put a key / value pair or array of key / value pairs in the session. - * - * @param string|array $key - * @param mixed $value - * @return void - * @static - */ - public static function put($key, $value = null) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->put($key, $value); - } - /** - * Get an item from the session, or store the default value. - * - * @param string $key - * @param \Closure $callback - * @return mixed - * @static - */ - public static function remember($key, $callback) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->remember($key, $callback); - } - /** - * Push a value onto a session array. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function push($key, $value) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->push($key, $value); - } - /** - * Increment the value of an item in the session. - * - * @param string $key - * @param int $amount - * @return mixed - * @static - */ - public static function increment($key, $amount = 1) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->increment($key, $amount); - } - /** - * Decrement the value of an item in the session. - * - * @param string $key - * @param int $amount - * @return int - * @static - */ - public static function decrement($key, $amount = 1) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->decrement($key, $amount); - } - /** - * Flash a key / value pair to the session. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function flash($key, $value = true) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->flash($key, $value); - } - /** - * Flash a key / value pair to the session for immediate use. - * - * @param string $key - * @param mixed $value - * @return void - * @static - */ - public static function now($key, $value) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->now($key, $value); - } - /** - * Reflash all of the session flash data. - * - * @return void - * @static - */ - public static function reflash() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->reflash(); - } - /** - * Reflash a subset of the current flash data. - * - * @param array|mixed $keys - * @return void - * @static - */ - public static function keep($keys = null) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->keep($keys); - } - /** - * Flash an input array to the session. - * - * @param array $value - * @return void - * @static - */ - public static function flashInput($value) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->flashInput($value); - } - /** - * Remove an item from the session, returning its value. - * - * @param string $key - * @return mixed - * @static - */ - public static function remove($key) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->remove($key); - } - /** - * Remove one or many items from the session. - * - * @param string|array $keys - * @return void - * @static - */ - public static function forget($keys) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->forget($keys); - } - /** - * Remove all of the items from the session. - * - * @return void - * @static - */ - public static function flush() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->flush(); - } - /** - * Flush the session data and regenerate the ID. - * - * @return bool - * @static - */ - public static function invalidate() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->invalidate(); - } - /** - * Generate a new session identifier. - * - * @param bool $destroy - * @return bool - * @static - */ - public static function regenerate($destroy = false) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->regenerate($destroy); - } - /** - * Generate a new session ID for the session. - * - * @param bool $destroy - * @return bool - * @static - */ - public static function migrate($destroy = false) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->migrate($destroy); - } - /** - * Determine if the session has been started. - * - * @return bool - * @static - */ - public static function isStarted() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->isStarted(); - } - /** - * Get the name of the session. - * - * @return string - * @static - */ - public static function getName() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getName(); - } - /** - * Set the name of the session. - * - * @param string $name - * @return void - * @static - */ - public static function setName($name) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->setName($name); - } - /** - * Get the current session ID. - * - * @return string - * @static - */ - public static function getId() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getId(); - } - /** - * Set the session ID. - * - * @param string|null $id - * @return void - * @static - */ - public static function setId($id) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->setId($id); - } - /** - * Determine if this is a valid session ID. - * - * @param string|null $id - * @return bool - * @static - */ - public static function isValidId($id) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->isValidId($id); - } - /** - * Set the existence of the session on the handler if applicable. - * - * @param bool $value - * @return void - * @static - */ - public static function setExists($value) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->setExists($value); - } - /** - * Get the CSRF token value. - * - * @return string - * @static - */ - public static function token() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->token(); - } - /** - * Regenerate the CSRF token value. - * - * @return void - * @static - */ - public static function regenerateToken() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->regenerateToken(); - } - /** - * Get the previous URL from the session. - * - * @return string|null - * @static - */ - public static function previousUrl() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->previousUrl(); - } - /** - * Set the "previous" URL in the session. - * - * @param string $url - * @return void - * @static - */ - public static function setPreviousUrl($url) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->setPreviousUrl($url); - } - /** - * Specify that the user has confirmed their password. - * - * @return void - * @static - */ - public static function passwordConfirmed() - { - /** @var \Illuminate\Session\Store $instance */ - $instance->passwordConfirmed(); - } - /** - * Get the underlying session handler implementation. - * - * @return \SessionHandlerInterface - * @static - */ - public static function getHandler() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->getHandler(); - } - /** - * Set the underlying session handler implementation. - * - * @param \SessionHandlerInterface $handler - * @return \SessionHandlerInterface - * @static - */ - public static function setHandler($handler) - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->setHandler($handler); - } - /** - * Determine if the session handler needs a request. - * - * @return bool - * @static - */ - public static function handlerNeedsRequest() - { - /** @var \Illuminate\Session\Store $instance */ - return $instance->handlerNeedsRequest(); - } - /** - * Set the request on the handler instance. - * - * @param \Illuminate\Http\Request $request - * @return void - * @static - */ - public static function setRequestOnHandler($request) - { - /** @var \Illuminate\Session\Store $instance */ - $instance->setRequestOnHandler($request); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Session\Store::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Session\Store::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Session\Store::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Session\Store::flushMacros(); - } - - } - /** - * - * - * @method static bool has(string $location) - * @method static string read(string $location) - * @method static \League\Flysystem\DirectoryListing listContents(string $location, bool $deep = false) - * @method static int fileSize(string $path) - * @method static string visibility(string $path) - * @method static void write(string $location, string $contents, array $config = []) - * @method static void createDirectory(string $location, array $config = []) - * @see \Illuminate\Filesystem\FilesystemManager - */ - class Storage { - /** - * Get a filesystem instance. - * - * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function drive($name = null) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->drive($name); - } - /** - * Get a filesystem instance. - * - * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function disk($name = null) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->disk($name); - } - /** - * Get a default cloud filesystem instance. - * - * @return \Illuminate\Contracts\Filesystem\Cloud - * @static - */ - public static function cloud() - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->cloud(); - } - /** - * Build an on-demand disk. - * - * @param string|array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function build($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->build($config); - } - /** - * Create an instance of the local driver. - * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function createLocalDriver($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createLocalDriver($config); - } - /** - * Create an instance of the ftp driver. - * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function createFtpDriver($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createFtpDriver($config); - } - /** - * Create an instance of the sftp driver. - * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function createSftpDriver($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createSftpDriver($config); - } - /** - * Create an instance of the Amazon S3 driver. - * - * @param array $config - * @return \Illuminate\Contracts\Filesystem\Cloud - * @static - */ - public static function createS3Driver($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createS3Driver($config); - } - /** - * Create a scoped driver. - * - * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function createScopedDriver($config) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->createScopedDriver($config); - } - /** - * Set the given disk instance. - * - * @param string $name - * @param mixed $disk - * @return \Illuminate\Filesystem\FilesystemManager - * @static - */ - public static function set($name, $disk) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->set($name, $disk); - } - /** - * Get the default driver name. - * - * @return string - * @static - */ - public static function getDefaultDriver() - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->getDefaultDriver(); - } - /** - * Get the default cloud driver name. - * - * @return string - * @static - */ - public static function getDefaultCloudDriver() - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->getDefaultCloudDriver(); - } - /** - * Unset the given disk instances. - * - * @param array|string $disk - * @return \Illuminate\Filesystem\FilesystemManager - * @static - */ - public static function forgetDisk($disk) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->forgetDisk($disk); - } - /** - * Disconnect the given disk and remove from local cache. - * - * @param string|null $name - * @return void - * @static - */ - public static function purge($name = null) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - $instance->purge($name); - } - /** - * Register a custom driver creator Closure. - * - * @param string $driver - * @param \Closure $callback - * @return \Illuminate\Filesystem\FilesystemManager - * @static - */ - public static function extend($driver, $callback) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->extend($driver, $callback); - } - /** - * Set the application instance used by the manager. - * - * @param \Illuminate\Contracts\Foundation\Application $app - * @return \Illuminate\Filesystem\FilesystemManager - * @static - */ - public static function setApplication($app) - { - /** @var \Illuminate\Filesystem\FilesystemManager $instance */ - return $instance->setApplication($app); - } - /** - * Assert that the given file or directory exists. - * - * @param string|array $path - * @param string|null $content - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function assertExists($path, $content = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertExists($path, $content); - } - /** - * Assert that the given file or directory does not exist. - * - * @param string|array $path - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function assertMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertMissing($path); - } - /** - * Assert that the given directory is empty. - * - * @param string $path - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static - */ - public static function assertDirectoryEmpty($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertDirectoryEmpty($path); - } - /** - * Determine if a file or directory exists. - * - * @param string $path - * @return bool - * @static - */ - public static function exists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->exists($path); - } - /** - * Determine if a file or directory is missing. - * - * @param string $path - * @return bool - * @static - */ - public static function missing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->missing($path); - } - /** - * Determine if a file exists. - * - * @param string $path - * @return bool - * @static - */ - public static function fileExists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->fileExists($path); - } - /** - * Determine if a file is missing. - * - * @param string $path - * @return bool - * @static - */ - public static function fileMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->fileMissing($path); - } - /** - * Determine if a directory exists. - * - * @param string $path - * @return bool - * @static - */ - public static function directoryExists($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directoryExists($path); - } - /** - * Determine if a directory is missing. - * - * @param string $path - * @return bool - * @static - */ - public static function directoryMissing($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directoryMissing($path); - } - /** - * Get the full path for the file at the given "short" path. - * - * @param string $path - * @return string - * @static - */ - public static function path($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->path($path); - } - /** - * Get the contents of a file. - * - * @param string $path - * @return string|null - * @static - */ - public static function get($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->get($path); - } - /** - * Get the contents of a file as decoded JSON. - * - * @param string $path - * @param int $flags - * @return array|null - * @static - */ - public static function json($path, $flags = 0) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->json($path, $flags); - } - /** - * Create a streamed response for a given file. - * - * @param string $path - * @param string|null $name - * @param array $headers - * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static - */ - public static function response($path, $name = null, $headers = [], $disposition = 'inline') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->response($path, $name, $headers, $disposition); - } - /** - * Create a streamed download response for a given file. - * - * @param string $path - * @param string|null $name - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static - */ - public static function download($path, $name = null, $headers = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->download($path, $name, $headers); - } - /** - * Write the contents of a file. - * - * @param string $path - * @param \Psr\Http\Message\StreamInterface|\Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|resource $contents - * @param mixed $options - * @return string|bool - * @static - */ - public static function put($path, $contents, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->put($path, $contents, $options); - } - /** - * Store the uploaded file on the disk. - * - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|array|null $file - * @param mixed $options - * @return string|false - * @static - */ - public static function putFile($path, $file = null, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->putFile($path, $file, $options); - } - /** - * Store the uploaded file on the disk with a given name. - * - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $path - * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|array|null $file - * @param string|array|null $name - * @param mixed $options - * @return string|false - * @static - */ - public static function putFileAs($path, $file, $name = null, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->putFileAs($path, $file, $name, $options); - } - /** - * Get the visibility for the given path. - * - * @param string $path - * @return string - * @static - */ - public static function getVisibility($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getVisibility($path); - } - /** - * Set the visibility for the given path. - * - * @param string $path - * @param string $visibility - * @return bool - * @static - */ - public static function setVisibility($path, $visibility) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->setVisibility($path, $visibility); - } - /** - * Prepend to a file. - * - * @param string $path - * @param string $data - * @param string $separator - * @return bool - * @static - */ - public static function prepend($path, $data, $separator = ' -') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->prepend($path, $data, $separator); - } - /** - * Append to a file. - * - * @param string $path - * @param string $data - * @param string $separator - * @return bool - * @static - */ - public static function append($path, $data, $separator = ' -') - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->append($path, $data, $separator); - } - /** - * Delete the file at a given path. - * - * @param string|array $paths - * @return bool - * @static - */ - public static function delete($paths) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->delete($paths); - } - /** - * Copy a file to a new location. - * - * @param string $from - * @param string $to - * @return bool - * @static - */ - public static function copy($from, $to) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->copy($from, $to); - } - /** - * Move a file to a new location. - * - * @param string $from - * @param string $to - * @return bool - * @static - */ - public static function move($from, $to) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->move($from, $to); - } - /** - * Get the file size of a given file. - * - * @param string $path - * @return int - * @static - */ - public static function size($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->size($path); - } - /** - * Get the checksum for a file. - * - * @return string|false - * @throws UnableToProvideChecksum - * @static - */ - public static function checksum($path, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->checksum($path, $options); - } - /** - * Get the mime-type of a given file. - * - * @param string $path - * @return string|false - * @static - */ - public static function mimeType($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->mimeType($path); - } - /** - * Get the file's last modification time. - * - * @param string $path - * @return int - * @static - */ - public static function lastModified($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->lastModified($path); - } - /** - * Get a resource to read the file. - * - * @param string $path - * @return resource|null The path resource or null on failure. - * @static - */ - public static function readStream($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->readStream($path); - } - /** - * Write a new file using a stream. - * - * @param string $path - * @param resource $resource - * @param array $options - * @return bool - * @static - */ - public static function writeStream($path, $resource, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->writeStream($path, $resource, $options); - } - /** - * Get the URL for the file at the given path. - * - * @param string $path - * @return string - * @throws \RuntimeException - * @static - */ - public static function url($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->url($path); - } - /** - * Determine if temporary URLs can be generated. - * - * @return bool - * @static - */ - public static function providesTemporaryUrls() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->providesTemporaryUrls(); - } - /** - * Get a temporary URL for the file at the given path. - * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return string - * @throws \RuntimeException - * @static - */ - public static function temporaryUrl($path, $expiration, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->temporaryUrl($path, $expiration, $options); - } - /** - * Get a temporary upload URL for the file at the given path. - * - * @param string $path - * @param \DateTimeInterface $expiration - * @param array $options - * @return array - * @throws \RuntimeException - * @static - */ - public static function temporaryUploadUrl($path, $expiration, $options = []) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->temporaryUploadUrl($path, $expiration, $options); - } - /** - * Get an array of all files in a directory. - * - * @param string|null $directory - * @param bool $recursive - * @return array - * @static - */ - public static function files($directory = null, $recursive = false) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->files($directory, $recursive); - } - /** - * Get all of the files from the given directory (recursive). - * - * @param string|null $directory - * @return array - * @static - */ - public static function allFiles($directory = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->allFiles($directory); - } - /** - * Get all of the directories within a given directory. - * - * @param string|null $directory - * @param bool $recursive - * @return array - * @static - */ - public static function directories($directory = null, $recursive = false) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->directories($directory, $recursive); - } - /** - * Get all the directories within a given directory (recursive). - * - * @param string|null $directory - * @return array - * @static - */ - public static function allDirectories($directory = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->allDirectories($directory); - } - /** - * Create a directory. - * - * @param string $path - * @return bool - * @static - */ - public static function makeDirectory($path) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->makeDirectory($path); - } - /** - * Recursively delete a directory. - * - * @param string $directory - * @return bool - * @static - */ - public static function deleteDirectory($directory) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->deleteDirectory($directory); - } - /** - * Get the Flysystem driver. - * - * @return \League\Flysystem\FilesystemOperator - * @static - */ - public static function getDriver() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getDriver(); - } - /** - * Get the Flysystem adapter. - * - * @return \League\Flysystem\FilesystemAdapter - * @static - */ - public static function getAdapter() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getAdapter(); - } - /** - * Get the configuration values. - * - * @return array - * @static - */ - public static function getConfig() - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->getConfig(); - } - /** - * Define a custom temporary URL builder callback. - * - * @param \Closure $callback - * @return void - * @static - */ - public static function buildTemporaryUrlsUsing($callback) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - $instance->buildTemporaryUrlsUsing($callback); - } - /** - * Apply the callback if the given "value" is (or resolves to) truthy. - * - * @template TWhenParameter - * @template TWhenReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TWhenParameter)|TWhenParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TWhenParameter): TWhenReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TWhenReturnType - * @static - */ - public static function when($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->when($value, $callback, $default); - } - /** - * Apply the callback if the given "value" is (or resolves to) falsy. - * - * @template TUnlessParameter - * @template TUnlessReturnType - * @param \Illuminate\Filesystem\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param \Illuminate\Filesystem\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|\Illuminate\Filesystem\TUnlessReturnType - * @static - */ - public static function unless($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->unless($value, $callback, $default); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); - } - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->macroCall($method, $parameters); - } - /** - * - * - * @see \App\Providers\AppServiceProvider::boot() - * @param mixed $diskName - * @static - */ - public static function public($diskName) - { - return \Illuminate\Filesystem\FilesystemAdapter::public($diskName); - } - - } - /** - * - * - * @see \Illuminate\Routing\UrlGenerator - */ - class URL { - /** - * Get the full URL for the current request. - * - * @return string - * @static - */ - public static function full() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->full(); - } - /** - * Get the current URL for the request. - * - * @return string - * @static - */ - public static function current() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->current(); - } - /** - * Get the URL for the previous request. - * - * @param mixed $fallback - * @return string - * @static - */ - public static function previous($fallback = false) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->previous($fallback); - } - /** - * Get the previous path info for the request. - * - * @param mixed $fallback - * @return string - * @static - */ - public static function previousPath($fallback = false) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->previousPath($fallback); - } - /** - * Generate an absolute URL to the given path. - * - * @param string $path - * @param mixed $extra - * @param bool|null $secure - * @return string - * @static - */ - public static function to($path, $extra = [], $secure = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->to($path, $extra, $secure); - } - /** - * Generate a secure, absolute URL to the given path. - * - * @param string $path - * @param array $parameters - * @return string - * @static - */ - public static function secure($path, $parameters = []) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->secure($path, $parameters); - } - /** - * Generate the URL to an application asset. - * - * @param string $path - * @param bool|null $secure - * @return string - * @static - */ - public static function asset($path, $secure = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->asset($path, $secure); - } - /** - * Generate the URL to a secure asset. - * - * @param string $path - * @return string - * @static - */ - public static function secureAsset($path) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->secureAsset($path); - } - /** - * Generate the URL to an asset from a custom root domain such as CDN, etc. - * - * @param string $root - * @param string $path - * @param bool|null $secure - * @return string - * @static - */ - public static function assetFrom($root, $path, $secure = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->assetFrom($root, $path, $secure); - } - /** - * Get the default scheme for a raw URL. - * - * @param bool|null $secure - * @return string - * @static - */ - public static function formatScheme($secure = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatScheme($secure); - } - /** - * Create a signed route URL for a named route. - * - * @param string $name - * @param mixed $parameters - * @param \DateTimeInterface|\DateInterval|int|null $expiration - * @param bool $absolute - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->signedRoute($name, $parameters, $expiration, $absolute); - } - /** - * Create a temporary signed route URL for a named route. - * - * @param string $name - * @param \DateTimeInterface|\DateInterval|int $expiration - * @param array $parameters - * @param bool $absolute - * @return string - * @static - */ - public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); - } - /** - * Determine if the given request has a valid signature. - * - * @param \Illuminate\Http\Request $request - * @param bool $absolute - * @param array $ignoreQuery - * @return bool - * @static - */ - public static function hasValidSignature($request, $absolute = true, $ignoreQuery = []) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasValidSignature($request, $absolute, $ignoreQuery); - } - /** - * Determine if the given request has a valid signature for a relative URL. - * - * @param \Illuminate\Http\Request $request - * @param array $ignoreQuery - * @return bool - * @static - */ - public static function hasValidRelativeSignature($request, $ignoreQuery = []) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasValidRelativeSignature($request, $ignoreQuery); - } - /** - * Determine if the signature from the given request matches the URL. - * - * @param \Illuminate\Http\Request $request - * @param bool $absolute - * @param array $ignoreQuery - * @return bool - * @static - */ - public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = []) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery); - } - /** - * Determine if the expires timestamp from the given request is not from the past. - * - * @param \Illuminate\Http\Request $request - * @return bool - * @static - */ - public static function signatureHasNotExpired($request) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->signatureHasNotExpired($request); - } - /** - * Get the URL to a named route. - * - * @param string $name - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException - * @static - */ - public static function route($name, $parameters = [], $absolute = true) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->route($name, $parameters, $absolute); - } - /** - * Get the URL for a given route instance. - * - * @param \Illuminate\Routing\Route $route - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \Illuminate\Routing\Exceptions\UrlGenerationException - * @static - */ - public static function toRoute($route, $parameters, $absolute) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->toRoute($route, $parameters, $absolute); - } - /** - * Get the URL to a controller action. - * - * @param string|array $action - * @param mixed $parameters - * @param bool $absolute - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function action($action, $parameters = [], $absolute = true) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->action($action, $parameters, $absolute); - } - /** - * Format the array of URL parameters. - * - * @param mixed|array $parameters - * @return array - * @static - */ - public static function formatParameters($parameters) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatParameters($parameters); - } - /** - * Get the base URL for the request. - * - * @param string $scheme - * @param string|null $root - * @return string - * @static - */ - public static function formatRoot($scheme, $root = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatRoot($scheme, $root); - } - /** - * Format the given URL segments into a single URL. - * - * @param string $root - * @param string $path - * @param \Illuminate\Routing\Route|null $route - * @return string - * @static - */ - public static function format($root, $path, $route = null) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->format($root, $path, $route); - } - /** - * Determine if the given path is a valid URL. - * - * @param string $path - * @return bool - * @static - */ - public static function isValidUrl($path) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->isValidUrl($path); - } - /** - * Set the default named parameters used by the URL generator. - * - * @param array $defaults - * @return void - * @static - */ - public static function defaults($defaults) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->defaults($defaults); - } - /** - * Get the default named parameters used by the URL generator. - * - * @return array - * @static - */ - public static function getDefaultParameters() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getDefaultParameters(); - } - /** - * Force the scheme for URLs. - * - * @param string|null $scheme - * @return void - * @static - */ - public static function forceScheme($scheme) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->forceScheme($scheme); - } - /** - * Set the forced root URL. - * - * @param string|null $root - * @return void - * @static - */ - public static function forceRootUrl($root) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->forceRootUrl($root); - } - /** - * Set a callback to be used to format the host of generated URLs. - * - * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function formatHostUsing($callback) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatHostUsing($callback); - } - /** - * Set a callback to be used to format the path of generated URLs. - * - * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function formatPathUsing($callback) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->formatPathUsing($callback); - } - /** - * Get the path formatter being used by the URL generator. - * - * @return \Closure - * @static - */ - public static function pathFormatter() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->pathFormatter(); - } - /** - * Get the request instance. - * - * @return \Illuminate\Http\Request - * @static - */ - public static function getRequest() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getRequest(); - } - /** - * Set the current request instance. - * - * @param \Illuminate\Http\Request $request - * @return void - * @static - */ - public static function setRequest($request) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - $instance->setRequest($request); - } - /** - * Set the route collection. - * - * @param \Illuminate\Routing\RouteCollectionInterface $routes - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function setRoutes($routes) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setRoutes($routes); - } - /** - * Set the session resolver for the generator. - * - * @param callable $sessionResolver - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function setSessionResolver($sessionResolver) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setSessionResolver($sessionResolver); - } - /** - * Set the encryption key resolver. - * - * @param callable $keyResolver - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function setKeyResolver($keyResolver) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setKeyResolver($keyResolver); - } - /** - * Clone a new instance of the URL generator with a different encryption key resolver. - * - * @param callable $keyResolver - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function withKeyResolver($keyResolver) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->withKeyResolver($keyResolver); - } - /** - * Set the callback that should be used to attempt to resolve missing named routes. - * - * @param callable $missingNamedRouteResolver - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver); - } - /** - * Get the root controller namespace. - * - * @return string - * @static - */ - public static function getRootControllerNamespace() - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->getRootControllerNamespace(); - } - /** - * Set the root controller namespace. - * - * @param string $rootNamespace - * @return \Illuminate\Routing\UrlGenerator - * @static - */ - public static function setRootControllerNamespace($rootNamespace) - { - /** @var \Illuminate\Routing\UrlGenerator $instance */ - return $instance->setRootControllerNamespace($rootNamespace); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Routing\UrlGenerator::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Routing\UrlGenerator::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Routing\UrlGenerator::flushMacros(); - } - - } - /** - * - * - * @see \Illuminate\Validation\Factory - */ - class Validator { - /** - * Create a new Validator instance. - * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $attributes - * @return \Illuminate\Validation\Validator - * @static - */ - public static function make($data, $rules, $messages = [], $attributes = []) - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->make($data, $rules, $messages, $attributes); - } - /** - * Validate the given data against the provided rules. - * - * @param array $data - * @param array $rules - * @param array $messages - * @param array $attributes - * @return array - * @throws \Illuminate\Validation\ValidationException - * @static - */ - public static function validate($data, $rules, $messages = [], $attributes = []) - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->validate($data, $rules, $messages, $attributes); - } - /** - * Register a custom validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - * @static - */ - public static function extend($rule, $extension, $message = null) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extend($rule, $extension, $message); - } - /** - * Register a custom implicit validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - * @static - */ - public static function extendImplicit($rule, $extension, $message = null) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extendImplicit($rule, $extension, $message); - } - /** - * Register a custom dependent validator extension. - * - * @param string $rule - * @param \Closure|string $extension - * @param string|null $message - * @return void - * @static - */ - public static function extendDependent($rule, $extension, $message = null) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->extendDependent($rule, $extension, $message); - } - /** - * Register a custom validator message replacer. - * - * @param string $rule - * @param \Closure|string $replacer - * @return void - * @static - */ - public static function replacer($rule, $replacer) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->replacer($rule, $replacer); - } - /** - * Indicate that unvalidated array keys should be included in validated data when the parent array is validated. - * - * @return void - * @static - */ - public static function includeUnvalidatedArrayKeys() - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->includeUnvalidatedArrayKeys(); - } - /** - * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated. - * - * @return void - * @static - */ - public static function excludeUnvalidatedArrayKeys() - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->excludeUnvalidatedArrayKeys(); - } - /** - * Set the Validator instance resolver. - * - * @param \Closure $resolver - * @return void - * @static - */ - public static function resolver($resolver) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->resolver($resolver); - } - /** - * Get the Translator implementation. - * - * @return \Illuminate\Contracts\Translation\Translator - * @static - */ - public static function getTranslator() - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getTranslator(); - } - /** - * Get the Presence Verifier implementation. - * - * @return \Illuminate\Validation\PresenceVerifierInterface - * @static - */ - public static function getPresenceVerifier() - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getPresenceVerifier(); - } - /** - * Set the Presence Verifier implementation. - * - * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier - * @return void - * @static - */ - public static function setPresenceVerifier($presenceVerifier) - { - /** @var \Illuminate\Validation\Factory $instance */ - $instance->setPresenceVerifier($presenceVerifier); - } - /** - * Get the container instance used by the validation factory. - * - * @return \Illuminate\Contracts\Container\Container|null - * @static - */ - public static function getContainer() - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->getContainer(); - } - /** - * Set the container instance used by the validation factory. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return \Illuminate\Validation\Factory - * @static - */ - public static function setContainer($container) - { - /** @var \Illuminate\Validation\Factory $instance */ - return $instance->setContainer($container); - } - - } - /** - * - * - * @see \Illuminate\View\Factory - */ - class View { - /** - * Get the evaluated view contents for the given view. - * - * @param string $path - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @static - */ - public static function file($path, $data = [], $mergeData = []) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->file($path, $data, $mergeData); - } - /** - * Get the evaluated view contents for the given view. - * - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @static - */ - public static function make($view, $data = [], $mergeData = []) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->make($view, $data, $mergeData); - } - /** - * Get the first view that actually exists from the given list. - * - * @param array $views - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @throws \InvalidArgumentException - * @static - */ - public static function first($views, $data = [], $mergeData = []) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->first($views, $data, $mergeData); - } - /** - * Get the rendered content of the view based on a given condition. - * - * @param bool $condition - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return string - * @static - */ - public static function renderWhen($condition, $view, $data = [], $mergeData = []) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderWhen($condition, $view, $data, $mergeData); - } - /** - * Get the rendered content of the view based on the negation of a given condition. - * - * @param bool $condition - * @param string $view - * @param \Illuminate\Contracts\Support\Arrayable|array $data - * @param array $mergeData - * @return string - * @static - */ - public static function renderUnless($condition, $view, $data = [], $mergeData = []) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderUnless($condition, $view, $data, $mergeData); - } - /** - * Get the rendered contents of a partial from a loop. - * - * @param string $view - * @param array $data - * @param string $iterator - * @param string $empty - * @return string - * @static - */ - public static function renderEach($view, $data, $iterator, $empty = 'raw|') - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderEach($view, $data, $iterator, $empty); - } - /** - * Determine if a given view exists. - * - * @param string $view - * @return bool - * @static - */ - public static function exists($view) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->exists($view); - } - /** - * Get the appropriate view engine for the given path. - * - * @param string $path - * @return \Illuminate\Contracts\View\Engine - * @throws \InvalidArgumentException - * @static - */ - public static function getEngineFromPath($path) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getEngineFromPath($path); - } - /** - * Add a piece of shared data to the environment. - * - * @param array|string $key - * @param mixed|null $value - * @return mixed - * @static - */ - public static function share($key, $value = null) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->share($key, $value); - } - /** - * Increment the rendering counter. - * - * @return void - * @static - */ - public static function incrementRender() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->incrementRender(); - } - /** - * Decrement the rendering counter. - * - * @return void - * @static - */ - public static function decrementRender() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->decrementRender(); - } - /** - * Check if there are no active render operations. - * - * @return bool - * @static - */ - public static function doneRendering() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->doneRendering(); - } - /** - * Determine if the given once token has been rendered. - * - * @param string $id - * @return bool - * @static - */ - public static function hasRenderedOnce($id) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->hasRenderedOnce($id); - } - /** - * Mark the given once token as having been rendered. - * - * @param string $id - * @return void - * @static - */ - public static function markAsRenderedOnce($id) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->markAsRenderedOnce($id); - } - /** - * Add a location to the array of view locations. - * - * @param string $location - * @return void - * @static - */ - public static function addLocation($location) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->addLocation($location); - } - /** - * Add a new namespace to the loader. - * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory - * @static - */ - public static function addNamespace($namespace, $hints) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->addNamespace($namespace, $hints); - } - /** - * Prepend a new namespace to the loader. - * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory - * @static - */ - public static function prependNamespace($namespace, $hints) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->prependNamespace($namespace, $hints); - } - /** - * Replace the namespace hints for the given namespace. - * - * @param string $namespace - * @param string|array $hints - * @return \Illuminate\View\Factory - * @static - */ - public static function replaceNamespace($namespace, $hints) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->replaceNamespace($namespace, $hints); - } - /** - * Register a valid view extension and its engine. - * - * @param string $extension - * @param string $engine - * @param \Closure|null $resolver - * @return void - * @static - */ - public static function addExtension($extension, $engine, $resolver = null) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->addExtension($extension, $engine, $resolver); - } - /** - * Flush all of the factory state like sections and stacks. - * - * @return void - * @static - */ - public static function flushState() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushState(); - } - /** - * Flush all of the section contents if done rendering. - * - * @return void - * @static - */ - public static function flushStateIfDoneRendering() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushStateIfDoneRendering(); - } - /** - * Get the extension to engine bindings. - * - * @return array - * @static - */ - public static function getExtensions() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getExtensions(); - } - /** - * Get the engine resolver instance. - * - * @return \Illuminate\View\Engines\EngineResolver - * @static - */ - public static function getEngineResolver() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getEngineResolver(); - } - /** - * Get the view finder instance. - * - * @return \Illuminate\View\ViewFinderInterface - * @static - */ - public static function getFinder() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getFinder(); - } - /** - * Set the view finder instance. - * - * @param \Illuminate\View\ViewFinderInterface $finder - * @return void - * @static - */ - public static function setFinder($finder) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->setFinder($finder); - } - /** - * Flush the cache of views located by the finder. - * - * @return void - * @static - */ - public static function flushFinderCache() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushFinderCache(); - } - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static - */ - public static function getDispatcher() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getDispatcher(); - } - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static - */ - public static function setDispatcher($events) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->setDispatcher($events); - } - /** - * Get the IoC container instance. - * - * @return \Illuminate\Contracts\Container\Container - * @static - */ - public static function getContainer() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getContainer(); - } - /** - * Set the IoC container instance. - * - * @param \Illuminate\Contracts\Container\Container $container - * @return void - * @static - */ - public static function setContainer($container) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->setContainer($container); - } - /** - * Get an item from the shared data. - * - * @param string $key - * @param mixed $default - * @return mixed - * @static - */ - public static function shared($key, $default = null) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->shared($key, $default); - } - /** - * Get all of the shared data for the environment. - * - * @return array - * @static - */ - public static function getShared() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getShared(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\View\Factory::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\View\Factory::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\View\Factory::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\View\Factory::flushMacros(); - } - /** - * Start a component rendering process. - * - * @param \Illuminate\Contracts\View\View|\Illuminate\Contracts\Support\Htmlable|\Closure|string $view - * @param array $data - * @return void - * @static - */ - public static function startComponent($view, $data = []) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startComponent($view, $data); - } - /** - * Get the first view that actually exists from the given list, and start a component. - * - * @param array $names - * @param array $data - * @return void - * @static - */ - public static function startComponentFirst($names, $data = []) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startComponentFirst($names, $data); - } - /** - * Render the current component. - * - * @return string - * @static - */ - public static function renderComponent() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderComponent(); - } - /** - * Get an item from the component data that exists above the current component. - * - * @param string $key - * @param mixed $default - * @return mixed|null - * @static - */ - public static function getConsumableComponentData($key, $default = null) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getConsumableComponentData($key, $default); - } - /** - * Start the slot rendering process. - * - * @param string $name - * @param string|null $content - * @param array $attributes - * @return void - * @static - */ - public static function slot($name, $content = null, $attributes = []) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->slot($name, $content, $attributes); - } - /** - * Save the slot content for rendering. - * - * @return void - * @static - */ - public static function endSlot() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->endSlot(); - } - /** - * Register a view creator event. - * - * @param array|string $views - * @param \Closure|string $callback - * @return array - * @static - */ - public static function creator($views, $callback) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->creator($views, $callback); - } - /** - * Register multiple view composers via an array. - * - * @param array $composers - * @return array - * @static - */ - public static function composers($composers) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->composers($composers); - } - /** - * Register a view composer event. - * - * @param array|string $views - * @param \Closure|string $callback - * @return array - * @static - */ - public static function composer($views, $callback) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->composer($views, $callback); - } - /** - * Call the composer for a given view. - * - * @param \Illuminate\Contracts\View\View $view - * @return void - * @static - */ - public static function callComposer($view) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->callComposer($view); - } - /** - * Call the creator for a given view. - * - * @param \Illuminate\Contracts\View\View $view - * @return void - * @static - */ - public static function callCreator($view) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->callCreator($view); - } - /** - * Start injecting content into a fragment. - * - * @param string $fragment - * @return void - * @static - */ - public static function startFragment($fragment) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startFragment($fragment); - } - /** - * Stop injecting content into a fragment. - * - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function stopFragment() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopFragment(); - } - /** - * Get the contents of a fragment. - * - * @param string $name - * @param string|null $default - * @return mixed - * @static - */ - public static function getFragment($name, $default = null) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getFragment($name, $default); - } - /** - * Get the entire array of rendered fragments. - * - * @return array - * @static - */ - public static function getFragments() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getFragments(); - } - /** - * Flush all of the fragments. - * - * @return void - * @static - */ - public static function flushFragments() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushFragments(); - } - /** - * Start injecting content into a section. - * - * @param string $section - * @param string|null $content - * @return void - * @static - */ - public static function startSection($section, $content = null) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startSection($section, $content); - } - /** - * Inject inline content into a section. - * - * @param string $section - * @param string $content - * @return void - * @static - */ - public static function inject($section, $content) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->inject($section, $content); - } - /** - * Stop injecting content into a section and return its contents. - * - * @return string - * @static - */ - public static function yieldSection() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldSection(); - } - /** - * Stop injecting content into a section. - * - * @param bool $overwrite - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function stopSection($overwrite = false) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopSection($overwrite); - } - /** - * Stop injecting content into a section and append it. - * - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function appendSection() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->appendSection(); - } - /** - * Get the string contents of a section. - * - * @param string $section - * @param string $default - * @return string - * @static - */ - public static function yieldContent($section, $default = '') - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldContent($section, $default); - } - /** - * Get the parent placeholder for the current request. - * - * @param string $section - * @return string - * @static - */ - public static function parentPlaceholder($section = '') - { - return \Illuminate\View\Factory::parentPlaceholder($section); - } - /** - * Check if section exists. - * - * @param string $name - * @return bool - * @static - */ - public static function hasSection($name) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->hasSection($name); - } - /** - * Check if section does not exist. - * - * @param string $name - * @return bool - * @static - */ - public static function sectionMissing($name) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->sectionMissing($name); - } - /** - * Get the contents of a section. - * - * @param string $name - * @param string|null $default - * @return mixed - * @static - */ - public static function getSection($name, $default = null) - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getSection($name, $default); - } - /** - * Get the entire array of sections. - * - * @return array - * @static - */ - public static function getSections() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getSections(); - } - /** - * Flush all of the sections. - * - * @return void - * @static - */ - public static function flushSections() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushSections(); - } - /** - * Add new loop to the stack. - * - * @param \Countable|array $data - * @return void - * @static - */ - public static function addLoop($data) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->addLoop($data); - } - /** - * Increment the top loop's indices. - * - * @return void - * @static - */ - public static function incrementLoopIndices() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->incrementLoopIndices(); - } - /** - * Pop a loop from the top of the loop stack. - * - * @return void - * @static - */ - public static function popLoop() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->popLoop(); - } - /** - * Get an instance of the last loop in the stack. - * - * @return \stdClass|null - * @static - */ - public static function getLastLoop() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getLastLoop(); - } - /** - * Get the entire loop stack. - * - * @return array - * @static - */ - public static function getLoopStack() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->getLoopStack(); - } - /** - * Start injecting content into a push section. - * - * @param string $section - * @param string $content - * @return void - * @static - */ - public static function startPush($section, $content = '') - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startPush($section, $content); - } - /** - * Stop injecting content into a push section. - * - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function stopPush() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopPush(); - } - /** - * Start prepending content into a push section. - * - * @param string $section - * @param string $content - * @return void - * @static - */ - public static function startPrepend($section, $content = '') - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startPrepend($section, $content); - } - /** - * Stop prepending content into a push section. - * - * @return string - * @throws \InvalidArgumentException - * @static - */ - public static function stopPrepend() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->stopPrepend(); - } - /** - * Get the string contents of a push section. - * - * @param string $section - * @param string $default - * @return string - * @static - */ - public static function yieldPushContent($section, $default = '') - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->yieldPushContent($section, $default); - } - /** - * Flush all of the stacks. - * - * @return void - * @static - */ - public static function flushStacks() - { - /** @var \Illuminate\View\Factory $instance */ - $instance->flushStacks(); - } - /** - * Start a translation block. - * - * @param array $replacements - * @return void - * @static - */ - public static function startTranslation($replacements = []) - { - /** @var \Illuminate\View\Factory $instance */ - $instance->startTranslation($replacements); - } - /** - * Render the current translation. - * - * @return string - * @static - */ - public static function renderTranslation() - { - /** @var \Illuminate\View\Factory $instance */ - return $instance->renderTranslation(); - } - - } - /** - * - * - * @see \Illuminate\Foundation\Vite - */ - class Vite { - /** - * Get the preloaded assets. - * - * @return array - * @static - */ - public static function preloadedAssets() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->preloadedAssets(); - } - /** - * Get the Content Security Policy nonce applied to all generated tags. - * - * @return string|null - * @static - */ - public static function cspNonce() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->cspNonce(); - } - /** - * Generate or set a Content Security Policy nonce to apply to all generated tags. - * - * @param string|null $nonce - * @return string - * @static - */ - public static function useCspNonce($nonce = null) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useCspNonce($nonce); - } - /** - * Use the given key to detect integrity hashes in the manifest. - * - * @param string|false $key - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useIntegrityKey($key) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useIntegrityKey($key); - } - /** - * Set the Vite entry points. - * - * @param array $entryPoints - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function withEntryPoints($entryPoints) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->withEntryPoints($entryPoints); - } - /** - * Set the filename for the manifest file. - * - * @param string $filename - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useManifestFilename($filename) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useManifestFilename($filename); - } - /** - * Get the Vite "hot" file path. - * - * @return string - * @static - */ - public static function hotFile() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->hotFile(); - } - /** - * Set the Vite "hot" file path. - * - * @param string $path - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useHotFile($path) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useHotFile($path); - } - /** - * Set the Vite build directory. - * - * @param string $path - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useBuildDirectory($path) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useBuildDirectory($path); - } - /** - * Use the given callback to resolve attributes for script tags. - * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useScriptTagAttributes($attributes) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useScriptTagAttributes($attributes); - } - /** - * Use the given callback to resolve attributes for style tags. - * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): array)|array $attributes - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function useStyleTagAttributes($attributes) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->useStyleTagAttributes($attributes); - } - /** - * Use the given callback to resolve attributes for preload tags. - * - * @param \Illuminate\Foundation\(callable(string, string, ?array, ?array): (array|false))|array|false $attributes - * @return \Illuminate\Foundation\Vite - * @static - */ - public static function usePreloadTagAttributes($attributes) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->usePreloadTagAttributes($attributes); - } - /** - * Generate React refresh runtime script. - * - * @return \Illuminate\Support\HtmlString|void - * @static - */ - public static function reactRefresh() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->reactRefresh(); - } - /** - * Get the URL for an asset. - * - * @param string $asset - * @param string|null $buildDirectory - * @return string - * @static - */ - public static function asset($asset, $buildDirectory = null) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->asset($asset, $buildDirectory); - } - /** - * Get the content of a given asset. - * - * @param string $asset - * @param string|null $buildDirectory - * @return string - * @throws \Exception - * @static - */ - public static function content($asset, $buildDirectory = null) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->content($asset, $buildDirectory); - } - /** - * Get a unique hash representing the current manifest, or null if there is no manifest. - * - * @param string|null $buildDirectory - * @return string|null - * @static - */ - public static function manifestHash($buildDirectory = null) - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->manifestHash($buildDirectory); - } - /** - * Determine if the HMR server is running. - * - * @return bool - * @static - */ - public static function isRunningHot() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->isRunningHot(); - } - /** - * Get the Vite tag content as a string of HTML. - * - * @return string - * @static - */ - public static function toHtml() - { - /** @var \Illuminate\Foundation\Vite $instance */ - return $instance->toHtml(); - } - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Foundation\Vite::macro($name, $macro); - } - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Foundation\Vite::mixin($mixin, $replace); - } - /** - * Checks if macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - return \Illuminate\Foundation\Vite::hasMacro($name); - } - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Foundation\Vite::flushMacros(); - } - - } - -} - - namespace Illuminate\Support { - /** - * - * - */ - class Arr { - - } - /** - * - * - */ - class Js { - - } - /** - * - * - */ - class Str { - - } - -} - - namespace Intervention\Image\Facades { - /** - * - * - */ - class Image { - /** - * Overrides configuration settings - * - * @param array $config - * @return self - * @static - */ - public static function configure($config = []) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->configure($config); - } - /** - * Initiates an Image instance from different input types - * - * @param mixed $data - * @return \Intervention\Image\Image - * @static - */ - public static function make($data) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->make($data); - } - /** - * Creates an empty image canvas - * - * @param int $width - * @param int $height - * @param mixed $background - * @return \Intervention\Image\Image - * @static - */ - public static function canvas($width, $height, $background = null) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->canvas($width, $height, $background); - } - /** - * Create new cached image and run callback - * (requires additional package intervention/imagecache) - * - * @param \Closure $callback - * @param int $lifetime - * @param boolean $returnObj - * @return \Image - * @static - */ - public static function cache($callback, $lifetime = null, $returnObj = false) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->cache($callback, $lifetime, $returnObj); - } - - } - /** - * - * - */ - class Image { - /** - * Overrides configuration settings - * - * @param array $config - * @return self - * @static - */ - public static function configure($config = []) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->configure($config); - } - /** - * Initiates an Image instance from different input types - * - * @param mixed $data - * @return \Intervention\Image\Image - * @static - */ - public static function make($data) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->make($data); - } - /** - * Creates an empty image canvas - * - * @param int $width - * @param int $height - * @param mixed $background - * @return \Intervention\Image\Image - * @static - */ - public static function canvas($width, $height, $background = null) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->canvas($width, $height, $background); - } - /** - * Create new cached image and run callback - * (requires additional package intervention/imagecache) - * - * @param \Closure $callback - * @param int $lifetime - * @param boolean $returnObj - * @return \Image - * @static - */ - public static function cache($callback, $lifetime = null, $returnObj = false) - { - /** @var \Intervention\Image\ImageManager $instance */ - return $instance->cache($callback, $lifetime, $returnObj); - } - - } - -} - - namespace Clockwork\Support\Laravel { - /** - * - * - */ - class Facade { - /** - * - * - * @static - */ - public static function addDataSource($dataSource) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->addDataSource($dataSource); - } - /** - * - * - * @static - */ - public static function resolveRequest() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->resolveRequest(); - } - /** - * - * - * @static - */ - public static function resolveAsCommand($name, $exitCode = null, $arguments = [], $options = [], $argumentsDefaults = [], $optionsDefaults = [], $output = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->resolveAsCommand($name, $exitCode, $arguments, $options, $argumentsDefaults, $optionsDefaults, $output); - } - /** - * - * - * @static - */ - public static function resolveAsQueueJob($name, $description = null, $status = 'processed', $payload = [], $queue = null, $connection = null, $options = []) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->resolveAsQueueJob($name, $description, $status, $payload, $queue, $connection, $options); - } - /** - * - * - * @static - */ - public static function resolveAsTest($name, $status = 'passed', $statusMessage = null, $asserts = []) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->resolveAsTest($name, $status, $statusMessage, $asserts); - } - /** - * - * - * @static - */ - public static function extendRequest($request = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->extendRequest($request); - } - /** - * - * - * @static - */ - public static function storeRequest() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->storeRequest(); - } - /** - * - * - * @static - */ - public static function reset() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->reset(); - } - /** - * - * - * @static - */ - public static function request($request = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->request($request); - } - /** - * - * - * @static - */ - public static function log($level = null, $message = null, $context = []) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->log($level, $message, $context); - } - /** - * - * - * @static - */ - public static function timeline() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->timeline(); - } - /** - * - * - * @static - */ - public static function event($description, $data = []) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->event($description, $data); - } - /** - * - * - * @static - */ - public static function shouldCollect($shouldCollect = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->shouldCollect($shouldCollect); - } - /** - * - * - * @static - */ - public static function shouldRecord($shouldRecord = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->shouldRecord($shouldRecord); - } - /** - * - * - * @static - */ - public static function dataSources($dataSources = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->dataSources($dataSources); - } - /** - * - * - * @static - */ - public static function storage($storage = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->storage($storage); - } - /** - * - * - * @static - */ - public static function authenticator($authenticator = null) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->authenticator($authenticator); - } - /** - * - * - * @static - */ - public static function getDataSources() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->getDataSources(); - } - /** - * - * - * @static - */ - public static function getRequest() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->getRequest(); - } - /** - * - * - * @static - */ - public static function setRequest($request) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->setRequest($request); - } - /** - * - * - * @static - */ - public static function getStorage() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->getStorage(); - } - /** - * - * - * @static - */ - public static function setStorage($storage) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->setStorage($storage); - } - /** - * - * - * @static - */ - public static function getAuthenticator() - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->getAuthenticator(); - } - /** - * - * - * @static - */ - public static function setAuthenticator($authenticator) - { - /** @var \Clockwork\Clockwork $instance */ - return $instance->setAuthenticator($authenticator); - } - - } - -} - - namespace Spatie\LaravelIgnition\Facades { - /** - * - * - * @see \Spatie\FlareClient\Flare - */ - class Flare { - /** - * - * - * @static - */ - public static function make($apiKey = null, $contextDetector = null) - { - return \Spatie\FlareClient\Flare::make($apiKey, $contextDetector); - } - /** - * - * - * @static - */ - public static function setApiToken($apiToken) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->setApiToken($apiToken); - } - /** - * - * - * @static - */ - public static function apiTokenSet() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->apiTokenSet(); - } - /** - * - * - * @static - */ - public static function setBaseUrl($baseUrl) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->setBaseUrl($baseUrl); - } - /** - * - * - * @static - */ - public static function setStage($stage) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->setStage($stage); - } - /** - * - * - * @static - */ - public static function sendReportsImmediately() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->sendReportsImmediately(); - } - /** - * - * - * @static - */ - public static function determineVersionUsing($determineVersionCallable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->determineVersionUsing($determineVersionCallable); - } - /** - * - * - * @static - */ - public static function reportErrorLevels($reportErrorLevels) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->reportErrorLevels($reportErrorLevels); - } - /** - * - * - * @static - */ - public static function filterExceptionsUsing($filterExceptionsCallable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->filterExceptionsUsing($filterExceptionsCallable); - } - /** - * - * - * @static - */ - public static function filterReportsUsing($filterReportsCallable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->filterReportsUsing($filterReportsCallable); - } - /** - * - * - * @param array|ArgumentReducer>|\Spatie\Backtrace\Arguments\ArgumentReducers|null $argumentReducers - * @static - */ - public static function argumentReducers($argumentReducers) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->argumentReducers($argumentReducers); - } - /** - * - * - * @static - */ - public static function withStackFrameArguments($withStackFrameArguments = true) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->withStackFrameArguments($withStackFrameArguments); - } - /** - * - * - * @static - */ - public static function version() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->version(); - } - /** - * - * - * @return array> - * @static - */ - public static function getMiddleware() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->getMiddleware(); - } - /** - * - * - * @static - */ - public static function setContextProviderDetector($contextDetector) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->setContextProviderDetector($contextDetector); - } - /** - * - * - * @static - */ - public static function setContainer($container) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->setContainer($container); - } - /** - * - * - * @static - */ - public static function registerFlareHandlers() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->registerFlareHandlers(); - } - /** - * - * - * @static - */ - public static function registerExceptionHandler() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->registerExceptionHandler(); - } - /** - * - * - * @static - */ - public static function registerErrorHandler() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->registerErrorHandler(); - } - /** - * - * - * @param \Spatie\FlareClient\FlareMiddleware\FlareMiddleware|array|\Spatie\FlareClient\class-string|callable $middleware - * @return \Spatie\FlareClient\Flare - * @static - */ - public static function registerMiddleware($middleware) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->registerMiddleware($middleware); - } - /** - * - * - * @return array> - * @static - */ - public static function getMiddlewares() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->getMiddlewares(); - } - /** - * - * - * @param string $name - * @param string $messageLevel - * @param array $metaData - * @return \Spatie\FlareClient\Flare - * @static - */ - public static function glow($name, $messageLevel = 'info', $metaData = []) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->glow($name, $messageLevel, $metaData); - } - /** - * - * - * @static - */ - public static function handleException($throwable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->handleException($throwable); - } - /** - * - * - * @return mixed - * @static - */ - public static function handleError($code, $message, $file = '', $line = 0) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->handleError($code, $message, $file, $line); - } - /** - * - * - * @static - */ - public static function applicationPath($applicationPath) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->applicationPath($applicationPath); - } - /** - * - * - * @static - */ - public static function report($throwable, $callback = null, $report = null) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->report($throwable, $callback, $report); - } - /** - * - * - * @static - */ - public static function reportMessage($message, $logLevel, $callback = null) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->reportMessage($message, $logLevel, $callback); - } - /** - * - * - * @static - */ - public static function sendTestReport($throwable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->sendTestReport($throwable); - } - /** - * - * - * @static - */ - public static function reset() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->reset(); - } - /** - * - * - * @static - */ - public static function anonymizeIp() - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->anonymizeIp(); - } - /** - * - * - * @param array $fieldNames - * @return \Spatie\FlareClient\Flare - * @static - */ - public static function censorRequestBodyFields($fieldNames) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->censorRequestBodyFields($fieldNames); - } - /** - * - * - * @static - */ - public static function createReport($throwable) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->createReport($throwable); - } - /** - * - * - * @static - */ - public static function createReportFromMessage($message, $logLevel) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->createReportFromMessage($message, $logLevel); - } - /** - * - * - * @static - */ - public static function stage($stage) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->stage($stage); - } - /** - * - * - * @static - */ - public static function messageLevel($messageLevel) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->messageLevel($messageLevel); - } - /** - * - * - * @param string $groupName - * @param mixed $default - * @return array - * @static - */ - public static function getGroup($groupName = 'context', $default = []) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->getGroup($groupName, $default); - } - /** - * - * - * @static - */ - public static function context($key, $value) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->context($key, $value); - } - /** - * - * - * @param string $groupName - * @param array $properties - * @return \Spatie\FlareClient\Flare - * @static - */ - public static function group($groupName, $properties) - { - /** @var \Spatie\FlareClient\Flare $instance */ - return $instance->group($groupName, $properties); - } - - } - -} - - namespace Illuminate\Http { - /** - * - * - */ - class Request { - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param array $rules - * @param mixed $params - * @static - */ - public static function validate($rules, ...$params) - { - return \Illuminate\Http\Request::validate($rules, ...$params); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() - * @param string $errorBag - * @param array $rules - * @param mixed $params - * @static - */ - public static function validateWithBag($errorBag, $rules, ...$params) - { - return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $absolute - * @static - */ - public static function hasValidSignature($absolute = true) - { - return \Illuminate\Http\Request::hasValidSignature($absolute); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @static - */ - public static function hasValidRelativeSignature() - { - return \Illuminate\Http\Request::hasValidRelativeSignature(); - } - /** - * - * - * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() - * @param mixed $ignoreQuery - * @param mixed $absolute - * @static - */ - public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true) - { - return \Illuminate\Http\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute); - } - /** - * - * - * @see \App\Providers\AppServiceProvider::boot() - * @param mixed $param - * @param mixed $newParam - * @static - */ - public static function rename($param, $newParam = null) - { - return \Illuminate\Http\Request::rename($param, $newParam); - } - - } - -} - - namespace Illuminate\Routing { - /** - * - * - * @mixin \Illuminate\Routing\RouteRegistrar - */ - class Router { - /** - * - * - * @see \App\Providers\RouteServiceProvider::boot() - * @param mixed $addendum - * @param mixed $uri - * @param mixed $controller - * @static - */ - public static function apiAddendumResource($addendum, $uri, $controller) - { - return \Illuminate\Routing\Router::apiAddendumResource($addendum, $uri, $controller); - } - - } - -} - - namespace Illuminate\Filesystem { - /** - * - * - * @mixin \League\Flysystem\FilesystemOperator - */ - class FilesystemAdapter { - /** - * - * - * @see \App\Providers\AppServiceProvider::boot() - * @param mixed $diskName - * @static - */ - public static function public($diskName) - { - return \Illuminate\Filesystem\FilesystemAdapter::public($diskName); - } - - } - -} - - -namespace { - class App extends \Illuminate\Support\Facades\App {} - class Arr extends \Illuminate\Support\Arr {} - class Artisan extends \Illuminate\Support\Facades\Artisan {} - class Auth extends \Illuminate\Support\Facades\Auth {} - class Blade extends \Illuminate\Support\Facades\Blade {} - class Broadcast extends \Illuminate\Support\Facades\Broadcast {} - class Bus extends \Illuminate\Support\Facades\Bus {} - class Cache extends \Illuminate\Support\Facades\Cache {} - class Config extends \Illuminate\Support\Facades\Config {} - class Cookie extends \Illuminate\Support\Facades\Cookie {} - class Crypt extends \Illuminate\Support\Facades\Crypt {} - class Date extends \Illuminate\Support\Facades\Date {} - class DB extends \Illuminate\Support\Facades\DB {} - class Eloquent extends \Illuminate\Database\Eloquent\Model { - /** - * Create and return an un-saved model instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function make($attributes = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->make($attributes); - } - - /** - * Register a new global scope. - * - * @param string $identifier - * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withGlobalScope($identifier, $scope) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withGlobalScope($identifier, $scope); - } - - /** - * Remove a registered global scope. - * - * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withoutGlobalScope($scope) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withoutGlobalScope($scope); - } - - /** - * Remove all or passed registered global scopes. - * - * @param array|null $scopes - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withoutGlobalScopes($scopes = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withoutGlobalScopes($scopes); - } - - /** - * Get an array of global scopes that were removed from the query. - * - * @return array - * @static - */ - public static function removedScopes() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->removedScopes(); - } - - /** - * Add a where clause on the primary key to the query. - * - * @param mixed $id - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereKey($id) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereKey($id); - } - - /** - * Add a where clause on the primary key to the query. - * - * @param mixed $id - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereKeyNot($id) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereKeyNot($id); - } - - /** - * Add a basic where clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function where($column, $operator = null, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->where($column, $operator, $value, $boolean); - } - - /** - * Add a basic where clause to the query, and return the first result. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static|null - * @static - */ - public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->firstWhere($column, $operator, $value, $boolean); - } - - /** - * Add an "or where" clause to the query. - * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhere($column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhere($column, $operator, $value); - } - - /** - * Add a basic "where not" clause to the query. - * - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereNot($column, $operator = null, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereNot($column, $operator, $value, $boolean); - } - - /** - * Add an "or where not" clause to the query. - * - * @param \Closure|array|string|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereNot($column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereNot($column, $operator, $value); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function latest($column = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->latest($column); - } - - /** - * Add an "order by" clause for a timestamp to the query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function oldest($column = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->oldest($column); - } - - /** - * Create a collection of models from plain arrays. - * - * @param array $items - * @return \Illuminate\Database\Eloquent\Collection - * @static - */ - public static function hydrate($items) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->hydrate($items); - } - - /** - * Create a collection of models from a raw query. - * - * @param string $query - * @param array $bindings - * @return \Illuminate\Database\Eloquent\Collection - * @static - */ - public static function fromQuery($query, $bindings = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->fromQuery($query, $bindings); - } - - /** - * Find a model by its primary key. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null - * @static - */ - public static function find($id, $columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->find($id, $columns); - } - - /** - * Find multiple models by their primary keys. - * - * @param \Illuminate\Contracts\Support\Arrayable|array $ids - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection - * @static - */ - public static function findMany($ids, $columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->findMany($ids, $columns); - } - - /** - * Find a model by its primary key or throw an exception. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @static - */ - public static function findOrFail($id, $columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->findOrFail($id, $columns); - } - - /** - * Find a model by its primary key or return fresh model instance. - * - * @param mixed $id - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function findOrNew($id, $columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->findOrNew($id, $columns); - } - - /** - * Find a model by its primary key or call a callback. - * - * @param mixed $id - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|mixed - * @static - */ - public static function findOr($id, $columns = [], $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->findOr($id, $columns, $callback); - } - - /** - * Get the first record matching the attributes or instantiate it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function firstOrNew($attributes = [], $values = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->firstOrNew($attributes, $values); - } - - /** - * Get the first record matching the attributes. If the record is not found, create it. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function firstOrCreate($attributes = [], $values = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->firstOrCreate($attributes, $values); - } - - /** - * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function createOrFirst($attributes = [], $values = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->createOrFirst($attributes, $values); - } - - /** - * Create or update a record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function updateOrCreate($attributes, $values = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->updateOrCreate($attributes, $values); - } - - /** - * Execute the query and get the first result or throw an exception. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|static - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @static - */ - public static function firstOrFail($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->firstOrFail($columns); - } - - /** - * Execute the query and get the first result or call a callback. - * - * @param \Closure|array|string $columns - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed - * @static - */ - public static function firstOr($columns = [], $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->firstOr($columns, $callback); - } - - /** - * Execute the query and get the first result if it's the sole matching record. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Database\MultipleRecordsFoundException - * @static - */ - public static function sole($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->sole($columns); - } - - /** - * Get a single column's value from the first result of a query. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - * @static - */ - public static function value($column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->value($column); - } - - /** - * Get a single column's value from the first result of a query if it's the sole matching record. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @throws \Illuminate\Database\MultipleRecordsFoundException - * @static - */ - public static function soleValue($column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->soleValue($column); - } - - /** - * Get a single column's value from the first result of the query or throw an exception. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @return mixed - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException<\Illuminate\Database\Eloquent\Model> - * @static - */ - public static function valueOrFail($column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->valueOrFail($column); - } - - /** - * Execute the query as a "select" statement. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection|static[] - * @static - */ - public static function get($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->get($columns); - } - - /** - * Get the hydrated models without eager loading. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model[]|static[] - * @static - */ - public static function getModels($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->getModels($columns); - } - - /** - * Eager load the relationships for the models. - * - * @param array $models - * @return array - * @static - */ - public static function eagerLoadRelations($models) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->eagerLoadRelations($models); - } - - /** - * Get a lazy collection for the given query. - * - * @return \Illuminate\Support\LazyCollection - * @static - */ - public static function cursor() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->cursor(); - } - - /** - * Get a collection with the values of a given column. - * - * @param string|\Illuminate\Contracts\Database\Query\Expression $column - * @param string|null $key - * @return \Illuminate\Support\Collection - * @static - */ - public static function pluck($column, $key = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->pluck($column, $key); - } - - /** - * Paginate the given query. - * - * @param int|null|\Closure $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @param \Closure|int|null $total - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator - * @throws \InvalidArgumentException - * @static - */ - public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->paginate($perPage, $columns, $pageName, $page); - } - - /** - * Paginate the given query into a simple paginator. - * - * @param int|null $perPage - * @param array|string $columns - * @param string $pageName - * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - * @static - */ - public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->simplePaginate($perPage, $columns, $pageName, $page); - } - - /** - * Paginate the given query into a cursor paginator. - * - * @param int|null $perPage - * @param array|string $columns - * @param string $cursorName - * @param \Illuminate\Pagination\Cursor|string|null $cursor - * @return \Illuminate\Contracts\Pagination\CursorPaginator - * @static - */ - public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor); - } - - /** - * Save a new model and return the instance. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - * @static - */ - public static function create($attributes = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->create($attributes); - } - - /** - * Save a new model and return the instance. Allow mass-assignment. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - * @static - */ - public static function forceCreate($attributes) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->forceCreate($attributes); - } - - /** - * Save a new model instance with mass assignment without raising model events. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - * @static - */ - public static function forceCreateQuietly($attributes = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->forceCreateQuietly($attributes); - } - - /** - * Insert new records or update the existing ones. - * - * @param array $values - * @param array|string $uniqueBy - * @param array|null $update - * @return int - * @static - */ - public static function upsert($values, $uniqueBy, $update = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->upsert($values, $uniqueBy, $update); - } - - /** - * Register a replacement for the default delete function. - * - * @param \Closure $callback - * @return void - * @static - */ - public static function onDelete($callback) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - $instance->onDelete($callback); - } - - /** - * Call the given local model scopes. - * - * @param array|string $scopes - * @return static|mixed - * @static - */ - public static function scopes($scopes) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->scopes($scopes); - } - - /** - * Apply the scopes to the Eloquent builder instance and return it. - * - * @return static - * @static - */ - public static function applyScopes() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->applyScopes(); - } - - /** - * Prevent the specified relations from being eager loaded. - * - * @param mixed $relations - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function without($relations) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->without($relations); - } - - /** - * Set the relationships that should be eager loaded while removing any previously added eager loading specifications. - * - * @param mixed $relations - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withOnly($relations) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withOnly($relations); - } - - /** - * Create a new instance of the model being queried. - * - * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function newModelInstance($attributes = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->newModelInstance($attributes); - } - - /** - * Apply query-time casts to the model instance. - * - * @param array $casts - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withCasts($casts) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withCasts($casts); - } - - /** - * Execute the given Closure within a transaction savepoint if needed. - * - * @template TModelValue - * @param \Closure(): TModelValue $scope - * @return \Illuminate\Database\Eloquent\TModelValue - * @static - */ - public static function withSavepointIfNeeded($scope) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withSavepointIfNeeded($scope); - } - - /** - * Get the underlying query builder instance. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function getQuery() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->getQuery(); - } - - /** - * Set the underlying query builder instance. - * - * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function setQuery($query) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->setQuery($query); - } - - /** - * Get a base query builder instance. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function toBase() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->toBase(); - } - - /** - * Get the relationships being eagerly loaded. - * - * @return array - * @static - */ - public static function getEagerLoads() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->getEagerLoads(); - } - - /** - * Set the relationships being eagerly loaded. - * - * @param array $eagerLoad - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function setEagerLoads($eagerLoad) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->setEagerLoads($eagerLoad); - } - - /** - * Indicate that the given relationships should not be eagerly loaded. - * - * @param array $relations - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withoutEagerLoad($relations) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withoutEagerLoad($relations); - } - - /** - * Flush the relationships being eagerly loaded. - * - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withoutEagerLoads() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withoutEagerLoads(); - } - - /** - * Get the model instance being queried. - * - * @return \Illuminate\Database\Eloquent\Model|static - * @static - */ - public static function getModel() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->getModel(); - } - - /** - * Set a model instance for the model being queried. - * - * @param \Illuminate\Database\Eloquent\Model $model - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function setModel($model) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->setModel($model); - } - - /** - * Get the given macro by name. - * - * @param string $name - * @return \Closure - * @static - */ - public static function getMacro($name) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->getMacro($name); - } - - /** - * Checks if a macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasMacro($name) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->hasMacro($name); - } - - /** - * Get the given global macro by name. - * - * @param string $name - * @return \Closure - * @static - */ - public static function getGlobalMacro($name) - { - return \Illuminate\Database\Eloquent\Builder::getGlobalMacro($name); - } - - /** - * Checks if a global macro is registered. - * - * @param string $name - * @return bool - * @static - */ - public static function hasGlobalMacro($name) - { - return \Illuminate\Database\Eloquent\Builder::hasGlobalMacro($name); - } - - /** - * Clone the Eloquent query builder. - * - * @return static - * @static - */ - public static function clone() - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->clone(); - } - - /** - * Chunk the results of the query. - * - * @param int $count - * @param callable $callback - * @return bool - * @static - */ - public static function chunk($count, $callback) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->chunk($count, $callback); - } - - /** - * Run a map over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return \Illuminate\Support\Collection - * @static - */ - public static function chunkMap($callback, $count = 1000) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->chunkMap($callback, $count); - } - - /** - * Execute a callback over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return bool - * @throws \RuntimeException - * @static - */ - public static function each($callback, $count = 1000) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->each($callback, $count); - } - - /** - * Chunk the results of a query by comparing IDs. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - * @static - */ - public static function chunkById($count, $callback, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->chunkById($count, $callback, $column, $alias); - } - - /** - * Execute a callback over each item while chunking by ID. - * - * @param callable $callback - * @param int $count - * @param string|null $column - * @param string|null $alias - * @return bool - * @static - */ - public static function eachById($callback, $count = 1000, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->eachById($callback, $count, $column, $alias); - } - - /** - * Query lazily, by chunks of the given size. - * - * @param int $chunkSize - * @return \Illuminate\Support\LazyCollection - * @throws \InvalidArgumentException - * @static - */ - public static function lazy($chunkSize = 1000) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->lazy($chunkSize); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - * @throws \InvalidArgumentException - * @static - */ - public static function lazyById($chunkSize = 1000, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->lazyById($chunkSize, $column, $alias); - } - - /** - * Query lazily, by chunking the results of a query by comparing IDs in descending order. - * - * @param int $chunkSize - * @param string|null $column - * @param string|null $alias - * @return \Illuminate\Support\LazyCollection - * @throws \InvalidArgumentException - * @static - */ - public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->lazyByIdDesc($chunkSize, $column, $alias); - } - - /** - * Execute the query and get the first result. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null - * @static - */ - public static function first($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->first($columns); - } - - /** - * Execute the query and get the first result if it's the sole matching record. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null - * @throws \Illuminate\Database\RecordsNotFoundException - * @throws \Illuminate\Database\MultipleRecordsFoundException - * @static - */ - public static function baseSole($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->baseSole($columns); - } - - /** - * Pass the query to a given callback. - * - * @param callable $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function tap($callback) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->tap($callback); - } - - /** - * Apply the callback if the given "value" is (or resolves to) truthy. - * - * @template TWhenParameter - * @template TWhenReturnType - * @param \Illuminate\Database\Eloquent\(\Closure($this): TWhenParameter)|TWhenParameter|null $value - * @param \Illuminate\Database\Eloquent\(callable($this, TWhenParameter): TWhenReturnType)|null $callback - * @param \Illuminate\Database\Eloquent\(callable($this, TWhenParameter): TWhenReturnType)|null $default - * @return $this|\Illuminate\Database\Eloquent\TWhenReturnType - * @static - */ - public static function when($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->when($value, $callback, $default); - } - - /** - * Apply the callback if the given "value" is (or resolves to) falsy. - * - * @template TUnlessParameter - * @template TUnlessReturnType - * @param \Illuminate\Database\Eloquent\(\Closure($this): TUnlessParameter)|TUnlessParameter|null $value - * @param \Illuminate\Database\Eloquent\(callable($this, TUnlessParameter): TUnlessReturnType)|null $callback - * @param \Illuminate\Database\Eloquent\(callable($this, TUnlessParameter): TUnlessReturnType)|null $default - * @return $this|\Illuminate\Database\Eloquent\TUnlessReturnType - * @static - */ - public static function unless($value = null, $callback = null, $default = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->unless($value, $callback, $default); - } - - /** - * Add a relationship count / exists condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\Relation|string $relation - * @param string $operator - * @param int $count - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @throws \RuntimeException - * @static - */ - public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->has($relation, $operator, $count, $boolean, $callback); - } - - /** - * Add a relationship count / exists condition to the query with an "or". - * - * @param string $relation - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orHas($relation, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orHas($relation, $operator, $count); - } - - /** - * Add a relationship count / exists condition to the query. - * - * @param string $relation - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function doesntHave($relation, $boolean = 'and', $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->doesntHave($relation, $boolean, $callback); - } - - /** - * Add a relationship count / exists condition to the query with an "or". - * - * @param string $relation - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orDoesntHave($relation) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orDoesntHave($relation); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereHas($relation, $callback, $operator, $count); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * Also load the relationship with same condition. - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withWhereHas($relation, $callback, $operator, $count); - } - - /** - * Add a relationship count / exists condition to the query with where clauses and an "or". - * - * @param string $relation - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereHas($relation, $callback, $operator, $count); - } - - /** - * Add a relationship count / exists condition to the query with where clauses. - * - * @param string $relation - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereDoesntHave($relation, $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereDoesntHave($relation, $callback); - } - - /** - * Add a relationship count / exists condition to the query with where clauses and an "or". - * - * @param string $relation - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereDoesntHave($relation, $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereDoesntHave($relation, $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $operator - * @param int $count - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orHasMorph($relation, $types, $operator, $count); - } - - /** - * Add a polymorphic relationship count / exists condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param string $boolean - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->doesntHaveMorph($relation, $types, $boolean, $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orDoesntHaveMorph($relation, $types) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orDoesntHaveMorph($relation, $types); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereHasMorph($relation, $types, $callback, $operator, $count); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @param string $operator - * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereDoesntHaveMorph($relation, $types, $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereDoesntHaveMorph($relation, $types, $callback); - } - - /** - * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereDoesntHaveMorph($relation, $types, $callback); - } - - /** - * Add a basic where clause to a relationship query. - * - * @param string $relation - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereRelation($relation, $column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereRelation($relation, $column, $operator, $value); - } - - /** - * Add an "or where" clause to a relationship query. - * - * @param string $relation - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereRelation($relation, $column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereRelation($relation, $column, $operator, $value); - } - - /** - * Add a polymorphic relationship condition to the query with a where clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereMorphRelation($relation, $types, $column, $operator, $value); - } - - /** - * Add a polymorphic relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param string|array $types - * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value); - } - - /** - * Add a morph-to relationship condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string|null $model - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereMorphedTo($relation, $model, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereMorphedTo($relation, $model, $boolean); - } - - /** - * Add a not morph-to relationship condition to the query. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function whereNotMorphedTo($relation, $model, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereNotMorphedTo($relation, $model, $boolean); - } - - /** - * Add a morph-to relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string|null $model - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereMorphedTo($relation, $model) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereMorphedTo($relation, $model); - } - - /** - * Add a not morph-to relationship condition to the query with an "or where" clause. - * - * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation - * @param \Illuminate\Database\Eloquent\Model|string $model - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function orWhereNotMorphedTo($relation, $model) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereNotMorphedTo($relation, $model); - } - - /** - * Add a "belongs to" relationship where clause to the query. - * - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection<\Illuminate\Database\Eloquent\Model> $related - * @param string|null $relationshipName - * @param string $boolean - * @return \Illuminate\Database\Eloquent\Builder|static - * @throws \Illuminate\Database\Eloquent\RelationNotFoundException - * @static - */ - public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->whereBelongsTo($related, $relationshipName, $boolean); - } - - /** - * Add an "BelongsTo" relationship with an "or where" clause to the query. - * - * @param \Illuminate\Database\Eloquent\Model $related - * @param string|null $relationshipName - * @return \Illuminate\Database\Eloquent\Builder|static - * @throws \RuntimeException - * @static - */ - public static function orWhereBelongsTo($related, $relationshipName = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->orWhereBelongsTo($related, $relationshipName); - } - - /** - * Add subselect queries to include an aggregate value for a relationship. - * - * @param mixed $relations - * @param string $column - * @param string $function - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withAggregate($relations, $column, $function = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withAggregate($relations, $column, $function); - } - - /** - * Add subselect queries to count the relations. - * - * @param mixed $relations - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withCount($relations) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withCount($relations); - } - - /** - * Add subselect queries to include the max of the relation's column. - * - * @param string|array $relation - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withMax($relation, $column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withMax($relation, $column); - } - - /** - * Add subselect queries to include the min of the relation's column. - * - * @param string|array $relation - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withMin($relation, $column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withMin($relation, $column); - } - - /** - * Add subselect queries to include the sum of the relation's column. - * - * @param string|array $relation - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withSum($relation, $column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withSum($relation, $column); - } - - /** - * Add subselect queries to include the average of the relation's column. - * - * @param string|array $relation - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withAvg($relation, $column) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withAvg($relation, $column); - } - - /** - * Add subselect queries to include the existence of related models. - * - * @param string|array $relation - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function withExists($relation) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->withExists($relation); - } - - /** - * Merge the where constraints from another query to the current query. - * - * @param \Illuminate\Database\Eloquent\Builder $from - * @return \Illuminate\Database\Eloquent\Builder|static - * @static - */ - public static function mergeConstraintsFrom($from) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->mergeConstraintsFrom($from); - } - - /** - * Set the columns to be selected. - * - * @param array|mixed $columns - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function select($columns = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->select($columns); - } - - /** - * Add a subselect expression to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function selectSub($query, $as) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->selectSub($query, $as); - } - - /** - * Add a new "raw" select expression to the query. - * - * @param string $expression - * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function selectRaw($expression, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->selectRaw($expression, $bindings); - } - - /** - * Makes "from" fetch from a subquery. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function fromSub($query, $as) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->fromSub($query, $as); - } - - /** - * Add a raw from clause to the query. - * - * @param string $expression - * @param mixed $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function fromRaw($expression, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->fromRaw($expression, $bindings); - } - - /** - * Add a new select column to the query. - * - * @param array|mixed $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function addSelect($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->addSelect($column); - } - - /** - * Force the query to only return distinct results. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function distinct() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->distinct(); - } - - /** - * Set the table which the query is targeting. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $table - * @param string|null $as - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function from($table, $as = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->from($table, $as); - } - - /** - * Add an index hint to suggest a query index. - * - * @param string $index - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function useIndex($index) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->useIndex($index); - } - - /** - * Add an index hint to force a query index. - * - * @param string $index - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function forceIndex($index) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->forceIndex($index); - } - - /** - * Add an index hint to ignore a query index. - * - * @param string $index - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function ignoreIndex($index) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->ignoreIndex($index); - } - - /** - * Add a join clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @param string $type - * @param bool $where - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->join($table, $first, $operator, $second, $type, $where); - } - - /** - * Add a "join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string $second - * @param string $type - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function joinWhere($table, $first, $operator, $second, $type = 'inner') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->joinWhere($table, $first, $operator, $second, $type); - } - - /** - * Add a subquery join clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @param string $type - * @param bool $where - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where); - } - - /** - * Add a left join to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function leftJoin($table, $first, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->leftJoin($table, $first, $operator, $second); - } - - /** - * Add a "join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function leftJoinWhere($table, $first, $operator, $second) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->leftJoinWhere($table, $first, $operator, $second); - } - - /** - * Add a subquery left join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function leftJoinSub($query, $as, $first, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->leftJoinSub($query, $as, $first, $operator, $second); - } - - /** - * Add a right join to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function rightJoin($table, $first, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->rightJoin($table, $first, $operator, $second); - } - - /** - * Add a "right join where" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string $first - * @param string $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function rightJoinWhere($table, $first, $operator, $second) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->rightJoinWhere($table, $first, $operator, $second); - } - - /** - * Add a subquery right join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @param \Closure|string $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function rightJoinSub($query, $as, $first, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->rightJoinSub($query, $as, $first, $operator, $second); - } - - /** - * Add a "cross join" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $table - * @param \Closure|string|null $first - * @param string|null $operator - * @param \Illuminate\Contracts\Database\Query\Expression|string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function crossJoin($table, $first = null, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->crossJoin($table, $first, $operator, $second); - } - - /** - * Add a subquery cross join to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @param string $as - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function crossJoinSub($query, $as) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->crossJoinSub($query, $as); - } - - /** - * Merge an array of where clauses and bindings. - * - * @param array $wheres - * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function mergeWheres($wheres, $bindings) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->mergeWheres($wheres, $bindings); - } - - /** - * Prepare the value and operator for a where clause. - * - * @param string $value - * @param string $operator - * @param bool $useDefault - * @return array - * @throws \InvalidArgumentException - * @static - */ - public static function prepareValueAndOperator($value, $operator, $useDefault = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->prepareValueAndOperator($value, $operator, $useDefault); - } - - /** - * Add a "where" clause comparing two columns to the query. - * - * @param string|array $first - * @param string|null $operator - * @param string|null $second - * @param string|null $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereColumn($first, $operator, $second, $boolean); - } - - /** - * Add an "or where" clause comparing two columns to the query. - * - * @param string|array $first - * @param string|null $operator - * @param string|null $second - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereColumn($first, $operator = null, $second = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereColumn($first, $operator, $second); - } - - /** - * Add a raw where clause to the query. - * - * @param string $sql - * @param mixed $bindings - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereRaw($sql, $bindings = [], $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereRaw($sql, $bindings, $boolean); - } - - /** - * Add a raw or where clause to the query. - * - * @param string $sql - * @param mixed $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereRaw($sql, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereRaw($sql, $bindings); - } - - /** - * Add a "where in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereIn($column, $values, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereIn($column, $values, $boolean, $not); - } - - /** - * Add an "or where in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereIn($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereIn($column, $values); - } - - /** - * Add a "where not in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNotIn($column, $values, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNotIn($column, $values, $boolean); - } - - /** - * Add an "or where not in" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param mixed $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNotIn($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNotIn($column, $values); - } - - /** - * Add a "where in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereIntegerInRaw($column, $values, $boolean, $not); - } - - /** - * Add an "or where in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereIntegerInRaw($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereIntegerInRaw($column, $values); - } - - /** - * Add a "where not in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereIntegerNotInRaw($column, $values, $boolean); - } - - /** - * Add an "or where not in raw" clause for integer values to the query. - * - * @param string $column - * @param \Illuminate\Contracts\Support\Arrayable|array $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereIntegerNotInRaw($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereIntegerNotInRaw($column, $values); - } - - /** - * Add a "where null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNull($columns, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNull($columns, $boolean, $not); - } - - /** - * Add an "or where null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNull($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNull($column); - } - - /** - * Add a "where not null" clause to the query. - * - * @param string|array|\Illuminate\Contracts\Database\Query\Expression $columns - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNotNull($columns, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNotNull($columns, $boolean); - } - - /** - * Add a where between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \Illuminate\Database\Query\iterable $values - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereBetween($column, $values, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereBetween($column, $values, $boolean, $not); - } - - /** - * Add a where between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereBetweenColumns($column, $values, $boolean, $not); - } - - /** - * Add an or where between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \Illuminate\Database\Query\iterable $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereBetween($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereBetween($column, $values); - } - - /** - * Add an or where between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereBetweenColumns($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereBetweenColumns($column, $values); - } - - /** - * Add a where not between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \Illuminate\Database\Query\iterable $values - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNotBetween($column, $values, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNotBetween($column, $values, $boolean); - } - - /** - * Add a where not between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNotBetweenColumns($column, $values, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNotBetweenColumns($column, $values, $boolean); - } - - /** - * Add an or where not between statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param \Illuminate\Database\Query\iterable $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNotBetween($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNotBetween($column, $values); - } - - /** - * Add an or where not between statement using columns to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param array $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNotBetweenColumns($column, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNotBetweenColumns($column, $values); - } - - /** - * Add an "or where not null" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNotNull($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNotNull($column); - } - - /** - * Add a "where date" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereDate($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereDate($column, $operator, $value, $boolean); - } - - /** - * Add an "or where date" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereDate($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereDate($column, $operator, $value); - } - - /** - * Add a "where time" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereTime($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereTime($column, $operator, $value, $boolean); - } - - /** - * Add an "or where time" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereTime($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereTime($column, $operator, $value); - } - - /** - * Add a "where day" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereDay($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereDay($column, $operator, $value, $boolean); - } - - /** - * Add an "or where day" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereDay($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereDay($column, $operator, $value); - } - - /** - * Add a "where month" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereMonth($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereMonth($column, $operator, $value, $boolean); - } - - /** - * Add an "or where month" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereMonth($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereMonth($column, $operator, $value); - } - - /** - * Add a "where year" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereYear($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereYear($column, $operator, $value, $boolean); - } - - /** - * Add an "or where year" statement to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $operator - * @param \DateTimeInterface|string|int|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereYear($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereYear($column, $operator, $value); - } - - /** - * Add a nested where statement to the query. - * - * @param \Closure $callback - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNested($callback, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNested($callback, $boolean); - } - - /** - * Create a new query instance for nested where condition. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function forNestedWhere() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->forNestedWhere(); - } - - /** - * Add another query builder as a nested where to the query builder. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function addNestedWhereQuery($query, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->addNestedWhereQuery($query, $boolean); - } - - /** - * Add an exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereExists($callback, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereExists($callback, $boolean, $not); - } - - /** - * Add an or exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereExists($callback, $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereExists($callback, $not); - } - - /** - * Add a where not exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereNotExists($callback, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereNotExists($callback, $boolean); - } - - /** - * Add a where not exists clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $callback - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereNotExists($callback) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereNotExists($callback); - } - - /** - * Add an exists clause to the query. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function addWhereExistsQuery($query, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->addWhereExistsQuery($query, $boolean, $not); - } - - /** - * Adds a where condition using row values. - * - * @param array $columns - * @param string $operator - * @param array $values - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function whereRowValues($columns, $operator, $values, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereRowValues($columns, $operator, $values, $boolean); - } - - /** - * Adds an or where condition using row values. - * - * @param array $columns - * @param string $operator - * @param array $values - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereRowValues($columns, $operator, $values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereRowValues($columns, $operator, $values); - } - - /** - * Add a "where JSON contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereJsonContains($column, $value, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereJsonContains($column, $value, $boolean, $not); - } - - /** - * Add an "or where JSON contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereJsonContains($column, $value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereJsonContains($column, $value); - } - - /** - * Add a "where JSON not contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereJsonDoesntContain($column, $value, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereJsonDoesntContain($column, $value, $boolean); - } - - /** - * Add an "or where JSON not contains" clause to the query. - * - * @param string $column - * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereJsonDoesntContain($column, $value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereJsonDoesntContain($column, $value); - } - - /** - * Add a clause that determines if a JSON path exists to the query. - * - * @param string $column - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereJsonContainsKey($column, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereJsonContainsKey($column, $boolean, $not); - } - - /** - * Add an "or" clause that determines if a JSON path exists to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereJsonContainsKey($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereJsonContainsKey($column); - } - - /** - * Add a clause that determines if a JSON path does not exist to the query. - * - * @param string $column - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereJsonDoesntContainKey($column, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereJsonDoesntContainKey($column, $boolean); - } - - /** - * Add an "or" clause that determines if a JSON path does not exist to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereJsonDoesntContainKey($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereJsonDoesntContainKey($column); - } - - /** - * Add a "where JSON length" clause to the query. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereJsonLength($column, $operator, $value, $boolean); - } - - /** - * Add an "or where JSON length" clause to the query. - * - * @param string $column - * @param mixed $operator - * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereJsonLength($column, $operator, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereJsonLength($column, $operator, $value); - } - - /** - * Handles dynamic "where" clauses to the query. - * - * @param string $method - * @param array $parameters - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function dynamicWhere($method, $parameters) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dynamicWhere($method, $parameters); - } - - /** - * Add a "where fulltext" clause to the query. - * - * @param string|string[] $columns - * @param string $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function whereFullText($columns, $value, $options = [], $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->whereFullText($columns, $value, $options, $boolean); - } - - /** - * Add a "or where fulltext" clause to the query. - * - * @param string|string[] $columns - * @param string $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orWhereFullText($columns, $value, $options = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orWhereFullText($columns, $value, $options); - } - - /** - * Add a "group by" clause to the query. - * - * @param array|\Illuminate\Contracts\Database\Query\Expression|string $groups - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function groupBy(...$groups) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->groupBy(...$groups); - } - - /** - * Add a raw groupBy clause to the query. - * - * @param string $sql - * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function groupByRaw($sql, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->groupByRaw($sql, $bindings); - } - - /** - * Add a "having" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column - * @param string|int|float|null $operator - * @param string|int|float|null $value - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function having($column, $operator = null, $value = null, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->having($column, $operator, $value, $boolean); - } - - /** - * Add an "or having" clause to the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|\Closure|string $column - * @param string|int|float|null $operator - * @param string|int|float|null $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orHaving($column, $operator = null, $value = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orHaving($column, $operator, $value); - } - - /** - * Add a nested having statement to the query. - * - * @param \Closure $callback - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function havingNested($callback, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->havingNested($callback, $boolean); - } - - /** - * Add another query builder as a nested having to the query builder. - * - * @param \Illuminate\Database\Query\Builder $query - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function addNestedHavingQuery($query, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->addNestedHavingQuery($query, $boolean); - } - - /** - * Add a "having null" clause to the query. - * - * @param string|array $columns - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function havingNull($columns, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->havingNull($columns, $boolean, $not); - } - - /** - * Add an "or having null" clause to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orHavingNull($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orHavingNull($column); - } - - /** - * Add a "having not null" clause to the query. - * - * @param string|array $columns - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function havingNotNull($columns, $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->havingNotNull($columns, $boolean); - } - - /** - * Add an "or having not null" clause to the query. - * - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orHavingNotNull($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orHavingNotNull($column); - } - - /** - * Add a "having between " clause to the query. - * - * @param string $column - * @param \Illuminate\Database\Query\iterable $values - * @param string $boolean - * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function havingBetween($column, $values, $boolean = 'and', $not = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->havingBetween($column, $values, $boolean, $not); - } - - /** - * Add a raw having clause to the query. - * - * @param string $sql - * @param array $bindings - * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function havingRaw($sql, $bindings = [], $boolean = 'and') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->havingRaw($sql, $bindings, $boolean); - } - - /** - * Add a raw or having clause to the query. - * - * @param string $sql - * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orHavingRaw($sql, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orHavingRaw($sql, $bindings); - } - - /** - * Add an "order by" clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @param string $direction - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function orderBy($column, $direction = 'asc') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orderBy($column, $direction); - } - - /** - * Add a descending "order by" clause to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|\Illuminate\Contracts\Database\Query\Expression|string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orderByDesc($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orderByDesc($column); - } - - /** - * Put the query's results in random order. - * - * @param string|int $seed - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function inRandomOrder($seed = '') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->inRandomOrder($seed); - } - - /** - * Add a raw "order by" clause to the query. - * - * @param string $sql - * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function orderByRaw($sql, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->orderByRaw($sql, $bindings); - } - - /** - * Alias to set the "offset" value of the query. - * - * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function skip($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->skip($value); - } - - /** - * Set the "offset" value of the query. - * - * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function offset($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->offset($value); - } - - /** - * Alias to set the "limit" value of the query. - * - * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function take($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->take($value); - } - - /** - * Set the "limit" value of the query. - * - * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function limit($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->limit($value); - } - - /** - * Set the limit and offset for a given page. - * - * @param int $page - * @param int $perPage - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function forPage($page, $perPage = 15) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->forPage($page, $perPage); - } - - /** - * Constrain the query to the previous "page" of results before a given ID. - * - * @param int $perPage - * @param int|null $lastId - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->forPageBeforeId($perPage, $lastId, $column); - } - - /** - * Constrain the query to the next "page" of results after a given ID. - * - * @param int $perPage - * @param int|null $lastId - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->forPageAfterId($perPage, $lastId, $column); - } - - /** - * Remove all existing orders and optionally add a new order. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Query\Expression|string|null $column - * @param string $direction - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function reorder($column = null, $direction = 'asc') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->reorder($column, $direction); - } - - /** - * Add a union statement to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query - * @param bool $all - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function union($query, $all = false) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->union($query, $all); - } - - /** - * Add a union all statement to the query. - * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function unionAll($query) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->unionAll($query); - } - - /** - * Lock the selected rows in the table. - * - * @param string|bool $value - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function lock($value = true) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->lock($value); - } - - /** - * Lock the selected rows in the table for updating. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function lockForUpdate() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->lockForUpdate(); - } - - /** - * Share lock the selected rows in the table. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function sharedLock() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->sharedLock(); - } - - /** - * Register a closure to be invoked before the query is executed. - * - * @param callable $callback - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function beforeQuery($callback) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->beforeQuery($callback); - } - - /** - * Invoke the "before query" modification callbacks. - * - * @return void - * @static - */ - public static function applyBeforeQueryCallbacks() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - $instance->applyBeforeQueryCallbacks(); - } - - /** - * Get the SQL representation of the query. - * - * @return string - * @static - */ - public static function toSql() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->toSql(); - } - - /** - * Get the raw SQL representation of the query with embedded bindings. - * - * @return string - * @static - */ - public static function toRawSql() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->toRawSql(); - } - - /** - * Get a single expression value from the first result of a query. - * - * @param string $expression - * @param array $bindings - * @return mixed - * @static - */ - public static function rawValue($expression, $bindings = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->rawValue($expression, $bindings); - } - - /** - * Get the count of the total records for the paginator. - * - * @param array $columns - * @return int - * @static - */ - public static function getCountForPagination($columns = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getCountForPagination($columns); - } - - /** - * Concatenate values of a given column as a string. - * - * @param string $column - * @param string $glue - * @return string - * @static - */ - public static function implode($column, $glue = '') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->implode($column, $glue); - } - - /** - * Determine if any rows exist for the current query. - * - * @return bool - * @static - */ - public static function exists() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->exists(); - } - - /** - * Determine if no rows exist for the current query. - * - * @return bool - * @static - */ - public static function doesntExist() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->doesntExist(); - } - - /** - * Execute the given callback if no rows exist for the current query. - * - * @param \Closure $callback - * @return mixed - * @static - */ - public static function existsOr($callback) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->existsOr($callback); - } - - /** - * Execute the given callback if rows exist for the current query. - * - * @param \Closure $callback - * @return mixed - * @static - */ - public static function doesntExistOr($callback) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->doesntExistOr($callback); - } - - /** - * Retrieve the "count" result of the query. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $columns - * @return int - * @static - */ - public static function count($columns = '*') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->count($columns); - } - - /** - * Retrieve the minimum value of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - * @static - */ - public static function min($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->min($column); - } - - /** - * Retrieve the maximum value of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - * @static - */ - public static function max($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->max($column); - } - - /** - * Retrieve the sum of the values of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - * @static - */ - public static function sum($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->sum($column); - } - - /** - * Retrieve the average of the values of a given column. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - * @static - */ - public static function avg($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->avg($column); - } - - /** - * Alias for the "avg" method. - * - * @param \Illuminate\Contracts\Database\Query\Expression|string $column - * @return mixed - * @static - */ - public static function average($column) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->average($column); - } - - /** - * Execute an aggregate function on the database. - * - * @param string $function - * @param array $columns - * @return mixed - * @static - */ - public static function aggregate($function, $columns = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->aggregate($function, $columns); - } - - /** - * Execute a numeric aggregate function on the database. - * - * @param string $function - * @param array $columns - * @return float|int - * @static - */ - public static function numericAggregate($function, $columns = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->numericAggregate($function, $columns); - } - - /** - * Insert new records into the database. - * - * @param array $values - * @return bool - * @static - */ - public static function insert($values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->insert($values); - } - - /** - * Insert new records into the database while ignoring errors. - * - * @param array $values - * @return int - * @static - */ - public static function insertOrIgnore($values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->insertOrIgnore($values); - } - - /** - * Insert a new record and get the value of the primary key. - * - * @param array $values - * @param string|null $sequence - * @return int - * @static - */ - public static function insertGetId($values, $sequence = null) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->insertGetId($values, $sequence); - } - - /** - * Insert new records into the table using a subquery. - * - * @param array $columns - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query - * @return int - * @static - */ - public static function insertUsing($columns, $query) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->insertUsing($columns, $query); - } - - /** - * Update records in a PostgreSQL database using the update from syntax. - * - * @param array $values - * @return int - * @static - */ - public static function updateFrom($values) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->updateFrom($values); - } - - /** - * Insert or update a record matching the attributes, and fill it with values. - * - * @param array $attributes - * @param array $values - * @return bool - * @static - */ - public static function updateOrInsert($attributes, $values = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->updateOrInsert($attributes, $values); - } - - /** - * Increment the given column's values by the given amounts. - * - * @param array $columns - * @param array $extra - * @return int - * @throws \InvalidArgumentException - * @static - */ - public static function incrementEach($columns, $extra = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->incrementEach($columns, $extra); - } - - /** - * Decrement the given column's values by the given amounts. - * - * @param array $columns - * @param array $extra - * @return int - * @throws \InvalidArgumentException - * @static - */ - public static function decrementEach($columns, $extra = []) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->decrementEach($columns, $extra); - } - - /** - * Run a truncate statement on the table. - * - * @return void - * @static - */ - public static function truncate() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - $instance->truncate(); - } - - /** - * Get all of the query builder's columns in a text-only array with all expressions evaluated. - * - * @return array - * @static - */ - public static function getColumns() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getColumns(); - } - - /** - * Create a raw database expression. - * - * @param mixed $value - * @return \Illuminate\Contracts\Database\Query\Expression - * @static - */ - public static function raw($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->raw($value); - } - - /** - * Get the current query value bindings in a flattened array. - * - * @return array - * @static - */ - public static function getBindings() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getBindings(); - } - - /** - * Get the raw array of bindings. - * - * @return array - * @static - */ - public static function getRawBindings() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getRawBindings(); - } - - /** - * Set the bindings on the query builder. - * - * @param array $bindings - * @param string $type - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function setBindings($bindings, $type = 'where') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->setBindings($bindings, $type); - } - - /** - * Add a binding to the query. - * - * @param mixed $value - * @param string $type - * @return \Illuminate\Database\Query\Builder - * @throws \InvalidArgumentException - * @static - */ - public static function addBinding($value, $type = 'where') - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->addBinding($value, $type); - } - - /** - * Cast the given binding value. - * - * @param mixed $value - * @return mixed - * @static - */ - public static function castBinding($value) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->castBinding($value); - } - - /** - * Merge an array of bindings into our bindings. - * - * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function mergeBindings($query) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->mergeBindings($query); - } - - /** - * Remove all of the expressions from a list of bindings. - * - * @param array $bindings - * @return array - * @static - */ - public static function cleanBindings($bindings) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->cleanBindings($bindings); - } - - /** - * Get the database query processor instance. - * - * @return \Illuminate\Database\Query\Processors\Processor - * @static - */ - public static function getProcessor() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getProcessor(); - } - - /** - * Get the query grammar instance. - * - * @return \Illuminate\Database\Query\Grammars\Grammar - * @static - */ - public static function getGrammar() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->getGrammar(); - } - - /** - * Use the "write" PDO connection when executing the query. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function useWritePdo() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->useWritePdo(); - } - - /** - * Clone the query without the given properties. - * - * @param array $properties - * @return static - * @static - */ - public static function cloneWithout($properties) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->cloneWithout($properties); - } - - /** - * Clone the query without the given bindings. - * - * @param array $except - * @return static - * @static - */ - public static function cloneWithoutBindings($except) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->cloneWithoutBindings($except); - } - - /** - * Dump the current SQL and bindings. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function dump() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dump(); - } - - /** - * Dump the raw current SQL with embedded bindings. - * - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function dumpRawSql() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dumpRawSql(); - } - - /** - * Die and dump the current SQL and bindings. - * - * @return \Illuminate\Database\Query\never - * @static - */ - public static function dd() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->dd(); - } - - /** - * Die and dump the current SQL with embedded bindings. - * - * @return \Illuminate\Database\Query\never - * @static - */ - public static function ddRawSql() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->ddRawSql(); - } - - /** - * Explains the query. - * - * @return \Illuminate\Support\Collection - * @static - */ - public static function explain() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->explain(); - } - - /** - * Register a custom macro. - * - * @param string $name - * @param object|callable $macro - * @return void - * @static - */ - public static function macro($name, $macro) - { - \Illuminate\Database\Query\Builder::macro($name, $macro); - } - - /** - * Mix another object into the class. - * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static - */ - public static function mixin($mixin, $replace = true) - { - \Illuminate\Database\Query\Builder::mixin($mixin, $replace); - } - - /** - * Flush the existing macros. - * - * @return void - * @static - */ - public static function flushMacros() - { - \Illuminate\Database\Query\Builder::flushMacros(); - } - - /** - * Dynamically handle calls to the class. - * - * @param string $method - * @param array $parameters - * @return mixed - * @throws \BadMethodCallException - * @static - */ - public static function macroCall($method, $parameters) - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->macroCall($method, $parameters); - } - } - class Event extends \Illuminate\Support\Facades\Event {} - class File extends \Illuminate\Support\Facades\File {} - class Gate extends \Illuminate\Support\Facades\Gate {} - class Hash extends \Illuminate\Support\Facades\Hash {} - class Http extends \Illuminate\Support\Facades\Http {} - class Js extends \Illuminate\Support\Js {} - class Lang extends \Illuminate\Support\Facades\Lang {} - class Log extends \Illuminate\Support\Facades\Log {} - class Mail extends \Illuminate\Support\Facades\Mail {} - class Notification extends \Illuminate\Support\Facades\Notification {} - class Password extends \Illuminate\Support\Facades\Password {} - class Process extends \Illuminate\Support\Facades\Process {} - class Queue extends \Illuminate\Support\Facades\Queue {} - class RateLimiter extends \Illuminate\Support\Facades\RateLimiter {} - class Redirect extends \Illuminate\Support\Facades\Redirect {} - class Request extends \Illuminate\Support\Facades\Request {} - class Response extends \Illuminate\Support\Facades\Response {} - class Route extends \Illuminate\Support\Facades\Route {} - class Schema extends \Illuminate\Support\Facades\Schema {} - class Session extends \Illuminate\Support\Facades\Session {} - class Storage extends \Illuminate\Support\Facades\Storage {} - class Str extends \Illuminate\Support\Str {} - class URL extends \Illuminate\Support\Facades\URL {} - class Validator extends \Illuminate\Support\Facades\Validator {} - class View extends \Illuminate\Support\Facades\View {} - class Vite extends \Illuminate\Support\Facades\Vite {} - class ImageIntervention extends \Intervention\Image\Facades\Image {} - class Image extends \Intervention\Image\Facades\Image {} - class Clockwork extends \Clockwork\Support\Laravel\Facade {} - class Flare extends \Spatie\LaravelIgnition\Facades\Flare {} - -} - - - - diff --git a/app/Conductors/AnalyticsConductor.php b/app/Conductors/AnalyticsConductor.php deleted file mode 100644 index 302d364..0000000 --- a/app/Conductors/AnalyticsConductor.php +++ /dev/null @@ -1,71 +0,0 @@ -user(); - return ($user !== null && $user->hasPermission('admin/analytics') === true); - } - - /** - * Return if the current model is creatable. - * - * @return boolean Allow creating model. - */ - public static function creatable(): bool - { - return true; - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/analytics') === true); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/analytics') === true); - } -} diff --git a/app/Conductors/ArticleConductor.php b/app/Conductors/ArticleConductor.php deleted file mode 100644 index 4814a3e..0000000 --- a/app/Conductors/ArticleConductor.php +++ /dev/null @@ -1,181 +0,0 @@ -user(); - if ($user === null || $user->hasPermission('admin/articles') === false) { - $builder - ->where('publish_at', '<=', now()); - } - } - - /** - * Return if the current model is visible. - * - * @param Model $model The model. - * @return boolean Allow model to be visible. - */ - public static function viewable(Model $model): bool - { - if (Carbon::parse($model->publish_at)->isFuture() === true) { - /** @var \App\Models\User */ - $user = auth()->user(); - if ($user === null || $user->hasPermission('admin/articles') === false) { - return false; - } - } - - return true; - } - - /** - * Return if the current model is creatable. - * - * @return boolean Allow creating model. - */ - public static function creatable(): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/articles') === true); - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/articles') === true); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/articles') === true); - } - - /** - * Transform the final model data - * - * @param array $data The model data to transform. - * @return array The transformed model. - */ - public function transformFinal(array $data): array - { - unset($data['user_id']); - return $data; - } - - /** - * Include Attachments Field. - * - * @param Model $model Them model. - * @return mixed The model result. - */ - public function includeAttachments(Model $model) - { - return $model->getAttachments()->map(function ($attachment) { - return MediaConductor::includeModel(request(), 'attachments', $attachment->media); - }); - } - - /** - * Include Gallery Field. - * - * @param Model $model Them model. - * @return mixed The model result. - */ - public function includeGallery(Model $model) - { - return $model->getGallery()->map(function ($item) { - return MediaConductor::includeModel(request(), 'gallery', $item->media); - }); - } - - /** - * Include User Field. - * - * @param Model $model Them model. - * @return mixed The model result. - */ - public function includeUser(Model $model) - { - $cacheKey = "user:{$model['user_id']}"; - $user = Cache::remember($cacheKey, now()->addDays(28), function () use ($model) { - return User::find($model['user_id']); - }); - - return UserConductor::includeModel(request(), 'user', $user); - } - - /** - * Transform the Hero field. - * - * @param mixed $value The current value. - * @return array|null The new value. - */ - public function transformHero(mixed $value): array|null - { - $cacheKey = "media:{$value}"; - $media = Cache::remember($cacheKey, now()->addDays(28), function () use ($value) { - return Media::find($value); - }); - - return MediaConductor::includeModel(request(), 'hero', $media); - } -} diff --git a/app/Conductors/Conductor.php b/app/Conductors/Conductor.php deleted file mode 100644 index 5ed9823..0000000 --- a/app/Conductors/Conductor.php +++ /dev/null @@ -1,1055 +0,0 @@ -all(); - if ($limitFields !== null) { - $filterFields = array_intersect_key($filterFields, array_flip($limitFields)); - } - $filterFields += $this->defaultFilters; - - foreach ($filterFields as $field => $value) { - if ( - is_array($limitFields) === false || - in_array(strtolower($field), array_map('strtolower', $limitFields)) !== false - ) { - $value = trim($value); - $operator = ''; - $join = 'AND'; - - // Check if value has a operator and remove it if it's a number - if (preg_match('/^(!?=|[<>]=?|<>|!|\|)([^=!<>].*)*$/', $value, $matches) > 0) { - $operator = $matches[1]; - $value = ($matches[2] ?? ''); - } - - if (strlen($value) === 0 && ($operator !== '==' && $operator !== '!=')) { - continue; - } - - switch ($operator) { - case '=': - $operator = '=='; - break; - case '!': - $operator = 'NOT LIKE'; - $value = "%{$value}%"; - break; - case '>': - case '<': - case '|': - $separatorPos = strpos($value, '|'); - if ($separatorPos !== false) { - $operator = '=='; - $valueList = explode('|', $value); - foreach ($valueList as $valueItem) { - $this->appendFilter($field, $operator, $valueItem, 'OR'); - } - continue 2; - } - break; - case '>=': - case '<=': - case '!=': - break; - case '<>': - $operator = '!='; - break; - default: - $operator = 'LIKE'; - $value = "%{$value}%"; - break; - }//end switch - - $this->appendFilter($field, $operator, $value, $join); - }//end if - }//end foreach - if ($request->has('filter') === true) { - $this->appendFilterString($request->input('filter', ''), $limitFields); - } - - $this->applyFilters(); - } - - /** - * Apple the filter array to the collection. - * - * @return void - */ - final public function applyFilters(): void - { - $parseFunc = function ($filterArray, $query) use (&$parseFunc) { - $item = null; - $result = null; - $join = 'AND'; - - $relationFilter = []; - - $buildWhereFunc = function ($query, $field, $operator, $value, $join) { - if ($join === 'OR') { - if ($operator === '<>') { - $separatorPos = strpos($value, '|'); - if ($separatorPos !== false) { - $query->orWhereBetween( - $field, - [substr($value, 0, $separatorPos), substr($value, ($separatorPos + 1))] - ); - } else { - $query->orWhere($field, '!=', $value); - } - } else { - $query->orWhere($field, $operator, $value); - } - } else { - if ($operator === '<>') { - $separatorPos = strpos($value, '|'); - if ($separatorPos !== false) { - $query->whereBetween( - $field, - [substr($value, 0, $separatorPos), substr($value, ($separatorPos + 1))] - ); - } else { - $query->where($field, '!=', $value); - } - } else { - $query->where($field, $operator, $value); - } - }//end if - }; - - if (gettype($query) === 'array') { - $item = $query; - } - - foreach ($filterArray as $condition) { - $currentResult = false; - - if (is_array($condition) === true) { - if (isset($condition[0]) === true && is_array($condition[0]) === true) { - if ($item !== null) { - $currentResult = $parseFunc($condition, $item); - } else { - if ($join === 'OR') { - $query->orWhere(function ($subQuery) use ($parseFunc, $condition) { - $parseFunc($condition, $subQuery); - }); - } else { - $query->where(function ($subQuery) use ($parseFunc, $condition) { - $parseFunc($condition, $subQuery); - }); - } - } - } else { - if (count($condition) < 3 && $condition[0] !== '') { - if (count($condition) < 2) { - $condition[1] = 'LIKE'; - } - $condition[2] = '%'; - } - - if (count($condition) === 3) { - list($field, $operator, $value) = $condition; - - if ($item !== null) { - if (array_key_exists($field, $item) === true) { - switch ($operator) { - case '==': - $currentResult = ($item[$field] == $value); - break; - case 'NOT LIKE': - $currentResult = (stripos($item[$field], substr($value, 1, -1)) === false); - break; - case '>': - $currentResult = ($item[$field] > $value); - break; - case '<': - $currentResult = ($item[$field] < $value); - break; - case '>=': - $currentResult = ($item[$field] >= $value); - break; - case '<=': - $currentResult = ($item[$field] <= $value); - break; - case '!=': - $currentResult = ($item[$field] != $value); - break; - case '<>': - $separatorPos = strpos($value, '|'); - if ($separatorPos !== false) { - $fieldInt = intval($item[$field]); - $currentResult = ( - $fieldInt > intVal( - substr($value, 0, $separatorPos) - ) && $fieldInt < intVal(substr($value, ($separatorPos + 1)))); - } else { - $currentResult = ($item[$field] != $value); - } - break; - case 'LIKE': - $currentResult = (stripos($item[$field], substr($value, 1, -1)) !== false); - break; - }//end switch - }//end if - } else { - if ($operator === '==') { - $operator = '='; - } - - $relationSplit = strpos($field, '.'); - if ($relationSplit !== false) { - $relation = substr($field, 0, $relationSplit); - $field = substr($field, ($relationSplit + 1)); - - if (method_exists($this->class, $relation) === true) { - $relationFilter[$relation][] = [$field, $operator, $value, $join]; - } - } else { - $buildWhereFunc($query, $field, $operator, $value, $join); - } - }//end if - }//end if - }//end if - - if ($item !== null) { - if ($result === null) { - $result = $currentResult; - } else { - if ($join === 'OR') { - $result = $result || $currentResult; - } else { - $result = $result && $currentResult; - } - } - } - - $join = 'OR'; - } else { - $join = $condition; - }//end if - }//end foreach - - foreach ($relationFilter as $relation => $conditions) { - $query->whereHas($relation, function ($subQuery) use ($buildWhereFunc, $conditions) { - foreach ($conditions as $condition) { - $buildWhereFunc($subQuery, $condition[0], $condition[1], $condition[2], $condition[3]); - } - }); - } - - return $result; - }; - - $filterArray = $this->filterArray; - if (count($filterArray) === 0) { - $filterArray = $this->defaultFilters; - } - if (count($filterArray) !== 0) { - if ($this->collection !== null) { - $this->collection = $this->collection->filter(function ($item) use ($parseFunc) { - return $parseFunc($this->filterArray, $item); - }); - } else { - $parseFunc($this->filterArray, $this->query); - } - } - } - - /** - * Run the conductor on a Request to generate a collection and total. - * - * @param Request $request The request data. - * @return array The processed and transformed collection | the total rows found. - */ - final public static function request(Request $request): array - { - $conductor_class = get_called_class(); - $conductor = new $conductor_class(); - - $total = 0; - - try { - $conductor->query = $conductor->class::query(); - } catch (\Throwable $e) { - throw new \Exception('Failed to create query builder instance for ' . $conductor->class . '.', 0, $e); - } - - // Filter request - $limitFields = $conductor->fields(new $conductor->class()); - if (is_array($limitFields) === false) { - $limitFields = []; - } - $conductor->filter($request, $limitFields); - - // After Scope query - $conductor->query->where(function ($query) use ($conductor) { - $conductor->scope($query); - }); - - // Sort request - $sort = $request->input('sort', $conductor->sort); - if (strlen($sort) === 0) { - if (strlen($conductor->sort) > 0) { - $conductor->sort($conductor->sort); - } - } else { - $conductor->sort($sort); - } - - // Get total - $total = $conductor->count(); - - // Paginate - $conductor->paginate($request->input('page', 1), $request->input('limit', -1), $request->input('offset', 0)); - - // Filter request - $fields = $conductor->fields(new $conductor->class()); - if (is_array($fields) === false) { - $fields = []; - } - - // Limit fields - $limitFields = array_map(function ($field) { - if (strpos($field, '.') !== false) { - return substr($field, 0, strpos($field, '.')); - } - return $field; - }, explode(',', $request->input('fields', ''))); - if ($limitFields === null) { - $limitFields = $fields; - } else { - $limitFields = array_intersect($limitFields, $fields); - } - $conductor->limitFields($limitFields); - $conductor->collection = $conductor->query->get(); - - // Transform and Includes - $includes = $conductor->includes; - if (count($limitFields) > 0) { - $includes = array_intersect($limitFields, $conductor->includes); - } - - $conductor->collection = $conductor->collection->map( - function ($model) use ($conductor, $includes, $limitFields) { - $conductor->applyIncludes($model, $includes); - - if (count($limitFields) > 0) { - $model->setAppends(array_intersect($model->getAppends(), $limitFields)); - } - - $model = $conductor->transformModel($model); - - return $model; - } - ); - - return [$conductor->collection, $total]; - } - - /** - * Run the conductor on a collection with the data stored in a Request. - * - * @param Request $request The request data. - * @param Collection $collection The collection. - * @return array The processed and transformed model data. - */ - final public static function collection(Request $request, Collection $collection): array - { - $conductor_class = get_called_class(); - $conductor = new $conductor_class(); - - $conductor->collection = collect(); - - foreach ($collection as $item) { - if ($conductor->viewable($item) === true) { - $conductor->collection->push($conductor->transformModel($item)); - } - } - - // Filter request - $limitFields = $conductor->fields(new $conductor->class()); - if (is_array($limitFields) === false) { - $limitFields = []; - } - $conductor->filter($request, $limitFields); - - // Get total - $total = $conductor->collection->count(); - - // Sort request - $sort = $request->input('sort', $conductor->sort); - if (strlen($sort) === 0) { - if (strlen($conductor->sort) > 0) { - $conductor->sort($sort); - } - } else { - $conductor->sort($sort); - } - - // Paginate - $conductor->paginate($request->input('page', 1), $request->input('limit', -1), $request->input('offset', 0)); - - - return [$conductor->collection, $total]; - } - - /** - * Filter a custom query on a user request. - * - * @param Builder $query The custom query. - * @param Request $request The request. - * @param array|null $limitFields Limit the request to these fields. - * @return Builder - */ - public static function filterQuery(Builder $query, Request $request, array|null $limitFields = null): Builder - { - $conductor_class = get_called_class(); - $conductor = new $conductor_class(); - - $conductor->query = $query; - $conductor->filter($request, $limitFields); - - return $conductor->query; - } - - - /** - * Run the conductor on a Model with the data stored in a Request. - * - * @param Request $request The request data. - * @param string $key The key prefix to use. - * @param Model|null $model The model. - * @return array|null The processed and transformed model data. - */ - final public static function includeModel(Request $request, string $key, mixed $model): array|null - { - $fields = []; - - if ($request !== null && $request->has('fields') === true) { - $requestFields = $request->input('fields'); - if ($requestFields !== null) { - $requestFields = explode(',', $requestFields); - if (in_array($key, $requestFields) === false) { - foreach ($requestFields as $field) { - if (strpos($field, $key . '.') === 0) { - $fields[] = substr($field, (strlen($key) + 1)); - } - } - } - } - } - - return static::model($fields, $model); - } - - /** - * Run the conductor on a Model with the data stored in a Request. - * - * @param mixed $fields The fields to show. - * @param Model|null $model The model. - * @return array|null The processed and transformed model data. - */ - final public static function model(mixed $fields, mixed $model): array|null - { - if ($model === null) { - return null; - } - - $conductor_class = get_called_class(); - $conductor = new $conductor_class(); - - $requestIncludes = []; - $modelFields = $conductor->fields(new $conductor->class()); - - // Limit fields - $limitFields = $modelFields; - if ($fields instanceof Request) { - if ($fields !== null && $fields->has('fields') === true) { - $requestFields = $fields->input('fields'); - if ($requestFields !== null) { - $limitFields = array_intersect(explode(',', $requestFields), $modelFields); - } - } - } elseif (is_array($fields) === true && count($fields) > 0) { - $limitFields = array_intersect($fields, $modelFields); - } - - if (empty($limitFields) === false) { - $modelAppends = $model->getAppends(); - - foreach (array_diff($modelFields, $limitFields) as $attribute) { - $key = array_search($attribute, $modelAppends); - if ($key !== false) { - unset($modelAppends[$key]); - } else { - unset($model[$attribute]); - } - } - $model->setAppends($modelAppends); - } - - // Includes - $includes = array_intersect($limitFields, $conductor->includes); - $conductor->applyIncludes($model, $includes); - - // Transform - $model = $conductor->transformModel($model); - - return $model; - } - - /** - * Return the current conductor collection count. - * - * @return integer The current collection count. - */ - final public function count(): int - { - if ($this->query !== null) { - return $this->query->count(); - } - - return 0; - } - - /** - * Sort the conductor collection. - * - * @param mixed $fields A field name or array of field names to sort. Supports prefix of +/- to change direction. - * @return void - */ - final public function sort(mixed $fields = null): void - { - $collectionSort = []; - - if (is_string($fields) === true) { - $fields = explode(',', $fields); - } elseif ($fields === null) { - $fields = $this->sort; - } - - if (is_array($fields) === true) { - foreach ($fields as $orderByField) { - $direction = 'asc'; - $directionChar = substr($orderByField, 0, 1); - - if (in_array($directionChar, ['-', '+']) === true) { - $orderByField = substr($orderByField, 1); - if ($directionChar === '-') { - $direction = 'desc'; - } - } - - if ($this->collection !== null) { - $collectionSort[] = [trim($orderByField), $direction]; - } else { - $this->query->orderBy(trim($orderByField), $direction); - } - } - } else { - throw new \InvalidArgumentException('Expected string or array, got ' . gettype($fields)); - }//end if - - if ($this->collection !== null) { - $this->collection = $this->collection->sortBy($collectionSort)->values(); - } - } - - /** - * Paginate the conductor collection. - * - * @param integer $page The current page to return. - * @param integer $limit The limit of items to include or use default. - * @param integer $offset Offset the page count after this count of rows. - * @return mixed - */ - final public function paginate(int $page = 1, int $limit = -1, int $offset = 0) - { - // Limit - if ($limit < 1) { - $limit = $this->limit; - } else { - $limit = min($limit, $this->maxLimit); - } - - // Page - if ($page < 1) { - $page = 1; - } - - // After - if ($offset < 0) { - $offset = 0; - } - - if ($this->collection !== null) { - $this->collection = $this->collection->splice(((($page - 1) * $limit) + $offset), $limit); - } else { - $this->query->limit($limit); - $this->query->offset((($page - 1) * $limit) + $offset); - } - } - - /** - * Apply a list of includes to the model. - * - * @param Model $model The model to append. - * @param array $includes The list of includes to include. - * @return void - */ - final public function applyIncludes(Model $model, array $includes): void - { - foreach ($includes as $include) { - $includeMethodName = 'include' . Str::studly($include); - if (method_exists($this, $includeMethodName) === true) { - $attributeName = Str::snake($include); - $attributeValue = $this->{$includeMethodName}($model); - if ($attributeValue !== null) { - $model->$attributeName = $this->{$includeMethodName}($model); - } - } - } - } - - /** - * Limit the returned fields in the conductor collection. - * - * @param array $fields An array of field names. - * @return void - */ - final public function limitFields(array $fields): void - { - if (empty($fields) !== true) { - $this->query->select(array_diff($fields, $this->includes)); - } - } - - /** - * Filter the conductor collection using raw data. - * - * @param string $rawFilter The raw filter string to parse. - * @param array|null $limitFields The fields to allow in the filter string. - * @param string $outerJoin The join for this filter group. - * @return void - */ - final public function appendFilterString( - string $rawFilter, - array|null $limitFields = null, - string $outerJoin = 'AND' - ): void { - if ($rawFilter === '') { - return; - } - - if (substr($rawFilter, -1) !== ',') { - $rawFilter .= ','; - } - - $parseFunc = function ($string, &$i = 0) use (&$parseFunc, $limitFields) { - $tokens = []; - $ignoreUntil = ''; - $skipUntil = ''; - $field = ''; - $value = null; - $set = &$field; - - for (; $i < strlen($string); $i++) { - $char = $string[$i]; - - if ($skipUntil !== '' && $char !== $skipUntil) { - continue; - } - - if ($ignoreUntil === '') { - if ($char === '\'' || $char === '"') { - $ignoreUntil = $char; - } elseif ($char === ':') { - if ($field === '') { - $skipUntil = ','; - continue; - } - - if ($field[0] === '\'' || $field[0] === '"') { - $field = substr($field, 1, -1); - } - - if ($set !== $value) { - $set = &$value; - continue; - } - } elseif (($char === ')' && $string[($i + 1)] === ',') || $char === ',') { - if ($value === null) { - $tokens[] = $field; - } else { - $value = trim($value); - $operator = 'LIKE'; - - // Check if value has a operator and remove it if it's a number - if (preg_match('/^(!?=|[<>]=?|<>|!)([^=!<>].*)*$/', $value, $matches) > 0) { - $operator = $matches[1]; - $value = ($matches[2] ?? ''); - } - - if ($value[0] === '\'' || $value[0] === '"') { - $value = substr($value, 1, -1); - } - - if ($operator === 'LIKE') { - $value = "%{$value}%"; - } - - if ( - is_array($limitFields) === false || - in_array(strtolower($field), array_map('strtolower', $limitFields)) !== false - ) { - $tokens[] = [$field, $operator, $value]; - } - }//end if - - $field = ''; - $value = null; - $set = &$field; - - if ($char === ')') { - $i++; - return $tokens; - } - - continue; - } elseif ($char === '(') { - if ($field === '') { - $i++; - $tokens[] = $parseFunc($string, $i); - continue; - } - }//end if - } elseif ($char === $ignoreUntil) { - $ignoreUntil = ''; - }//end if - - $set .= $char; - }//end for - - return $tokens; - }; - - $i = 0; - $filterArray = $parseFunc($rawFilter, $i); - - if (count($this->filterArray) !== 0) { - $this->filterArray[] = $outerJoin; - } - $this->filterArray[] = $filterArray; - } - - /** - * Append a field to the filter array. - * - * @param string $field The field name to append. - * @param string $operator The operator to append. - * @param string $value The value to append. - * @param string $join The join to append. - * @return void - */ - final public function appendFilter(string $field, string $operator, string $value, string $join = 'OR'): void - { - if (count($this->filterArray) !== 0) { - $this->filterArray[] = $join; - } - $this->filterArray[] = [$field, $operator, $value]; - } - - /** - * Run a scope query on the collection before anything else. - * - * @param Builder $builder The builder in use. - * @return void - */ - public function scope(Builder $builder): void - { - // empty - } - - /** - * Return an array of model fields visible to the current user. - * - * @param Model $model The model in question. - * @return array The array of field names. - */ - public function fields(Model $model): array - { - $visibleFields = Cache::remember( - "model:{$model->getTable()}:visible", - now()->addDays(28), - function () use ($model) { - $fields = $model->getVisible(); - if (empty($fields) === true) { - $fields = Cache::remember( - "schema:{$model->getTable()}:columns", - now()->addDays(28), - function () use ($model) { - return $model->getConnection() - ->getSchemaBuilder() - ->getColumnListing($model->getTable()); - } - ); - } - - return $fields; - } - ); - - $appends = $model->getAppends(); - if (is_array($appends) === true) { - $visibleFields = array_merge($visibleFields, $appends); - } - - if (is_array($this->includes) === true) { - $visibleFields = array_merge($visibleFields, $this->includes); - } - - return $visibleFields; - } - - /** - * Transform the passed Model to an array - * - * @param Model $model The model to transform. - * @return array The transformed model. - */ - protected function transformModel(Model $model): array - { - $result = $this->transform($model); - foreach ($result as $key => $value) { - $transformFunction = 'transform' . Str::studly($key); - if (method_exists($this, $transformFunction) === true) { - $result[$key] = $this->$transformFunction($value); - } - } - - $result = $this->transformFinal($result); - return $result; - } - - /** - * Transform the passed Model to an array - * - * @param Model $model The model to transform. - * @return array The transformed model. - */ - public function transform(Model $model): array - { - $result = $model->toArray(); - - $fields = $this->fields($model); - - if (is_array($fields) === true) { - $result = array_intersect_key($result, array_flip($fields)); - } - - return $result; - } - - /** - * Final Transform of the model array - * - * @param array $data The model array to transform. - * @return array The transformed model. - */ - public function transformFinal(array $data): array - { - return $data; - } - - /** - * Is the passed model viewable by the current user? - * - * @param Model $model The model in question. - * @return boolean Is the model viewable. - */ - public static function viewable(Model $model): bool - { - return true; - } - - /** - * Is the model creatable by the current user? - * - * @return boolean Is the model creatable. - */ - public static function creatable(): bool - { - return true; - } - - /** - * Is the passed model updatable by the current user? - * - * @param Model $model The model in question. - * @return boolean Is the model updatable. - */ - public static function updatable(Model $model): bool - { - return true; - } - - /** - * Is the passed model destroyable by the current user? - * - * @param Model $model The model in question. - * @return boolean Is the model destroyable. - */ - public static function destroyable(Model $model): bool - { - return true; - } -} diff --git a/app/Conductors/EventConductor.php b/app/Conductors/EventConductor.php deleted file mode 100644 index d91c14e..0000000 --- a/app/Conductors/EventConductor.php +++ /dev/null @@ -1,140 +0,0 @@ -user(); - if ($user === null || $user->hasPermission('admin/events') === false) { - $builder - ->where('status', '!=', 'draft') - ->where('publish_at', '<=', now()); - } - } - - /** - * Return if the current model is visible. - * - * @param Model $model The model. - * @return boolean Allow model to be visible. - */ - public static function viewable(Model $model): bool - { - if (strtolower($model->status) === 'draft' || Carbon::parse($model->publish_at)->isFuture() === true) { - /** @var \App\Models\User */ - $user = auth()->user(); - if ($user === null || $user->hasPermission('admin/events') === false) { - return false; - } - } - - return true; - } - - /** - * Return if the current model is creatable. - * - * @return boolean Allow creating model. - */ - public static function creatable(): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/events') === true); - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/events') === true); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/events') === true); - } - - /** - * Include Attachments Field. - * - * @param Model $model Them model. - * @return mixed The model result. - */ - public function includeAttachments(Model $model) - { - /** @var \App\Models\User */ - $user = auth()->user(); - - return $model->getAttachments()->map(function ($attachment) use ($user) { - if ($attachment->private === false || ($user !== null && $user->hasPermission('admin/events') === true)) { - return MediaConductor::includeModel(request(), 'attachments', $attachment->media); - } - }); - } - - /** - * Transform the Hero field. - * - * @param mixed $value The current value. - * @return array|null The new value. - */ - public function transformHero(mixed $value): array|null - { - $cacheKey = "media:{$value}"; - $media = Cache::remember($cacheKey, now()->addDays(28), function () use ($value) { - return Media::find($value); - }); - - return MediaConductor::includeModel(request(), 'hero', $media); - } -} diff --git a/app/Conductors/MediaConductor.php b/app/Conductors/MediaConductor.php deleted file mode 100644 index f627744..0000000 --- a/app/Conductors/MediaConductor.php +++ /dev/null @@ -1,184 +0,0 @@ - 'OK' - // ]; - - - /** - * Return an array of model fields visible to the current user. - * - * @param Model $model The model in question. - * @return array The array of field names. - */ - public function fields(Model $model): array - { - $fields = parent::fields($model); - - /** @var \App\Models\User */ - $user = auth()->user(); - if ($user === null || $user->hasPermission('admin/media') === false) { - $fields = arrayRemoveItem($fields, ['security_data', 'storage']); - } - - return $fields; - } - - /** - * Run a scope query on the collection before anything else. - * - * @param Builder $builder The builder in use. - * @return void - */ - public function scope(Builder $builder): void - { - $user = auth()->user(); - if ($user === null) { - $builder->where('security_type', '') - ->orWhere('security_type', 'password'); - } else { - $builder->where(function ($query) use ($user) { - $query->where('security_type', '') - ->orWhere('security_type', 'password') - ->orWhere(function ($subquery) use ($user) { - $subquery->where('security_type', 'permission') - ->whereIn('security_data', $user->permissions); - }); - }); - } - } - - /** - * Return if the current model is visible. - * - * @param Model $model The model. - * @return boolean Allow model to be visible. - */ - public static function viewable(Model $model): bool - { - if (strcasecmp('permission', $model->security_type) === 0) { - /** @var \App\Models\User */ - $user = auth()->user(); - if ($user === null || $user->hasPermission($model->security_data) === false) { - return false; - } - } elseif ($model->security_type !== '' && strcasecmp('password', $model->security_type) !== 0) { - return false; - } - - return true; - } - - /** - * Return if the current model is creatable. - * - * @return boolean Allow creating model. - */ - public static function creatable(): bool - { - $user = auth()->user(); - return ($user !== null); - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && (strcasecmp($model->user_id, $user->id) === 0 || - $user->hasPermission('admin/media') === true)); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && ($model->user_id === $user->id || $user->hasPermission('admin/media') === true)); - } - - /** - * Transform the final model data - * - * @param array $data The model data to transform. - * @return array The transformed model. - */ - public function transformFinal(array $data): array - { - unset($data['user_id']); - return $data; - } - - /** - * Include User Field. - * - * @param Model $model Them model. - * @return mixed The model result. - */ - public function includeUser(Model $model) - { - $user = Cache::remember("user:{$model['user_id']}", now()->addDays(28), function () use ($model) { - return User::find($model['user_id']); - }); - - return UserConductor::includeModel(request(), 'user', $user); - } - - /** - * Include job models in Media - * - * @param Model $model The reference model. - * @return mixed - */ - public function includeJobs(Model $model) - { - $jobs = $model->jobs() - ->select(['id','created_at','updated_at','user_id','status','status_text','progress']) - ->orderBy('created_at', 'desc')->get(); - return $jobs; - } -} diff --git a/app/Conductors/MediaJobConductor.php b/app/Conductors/MediaJobConductor.php deleted file mode 100644 index a55ef30..0000000 --- a/app/Conductors/MediaJobConductor.php +++ /dev/null @@ -1,76 +0,0 @@ -user(); - return ($user !== null && $user->hasPermission('admin/shortlinks') === true); - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/shortlinks') === true); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/shortlinks') === true); - } -} diff --git a/app/Conductors/SubscriptionConductor.php b/app/Conductors/SubscriptionConductor.php deleted file mode 100644 index 5bc3a3a..0000000 --- a/app/Conductors/SubscriptionConductor.php +++ /dev/null @@ -1,45 +0,0 @@ -user(); - return ($user !== null && ( - (strcasecmp($model->email, $user->email) === 0 && $user->email_verified_at !== null) || - $user->hasPermission('admin/subscriptions') === true - )); - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && ((strcasecmp($model->email, $user->email) === 0 && - $user->email_verified_at !== null) || $user->hasPermission('admin/subscriptions') === true)); - } -} diff --git a/app/Conductors/UserConductor.php b/app/Conductors/UserConductor.php deleted file mode 100644 index 4222de9..0000000 --- a/app/Conductors/UserConductor.php +++ /dev/null @@ -1,89 +0,0 @@ -user(); - if ($user === null || $user->hasPermission('admin/users') === false) { - return ['id', 'display_name']; - } - - return parent::fields($model); - } - - /** - * Transform the passed Model to an array - * - * @param Model $model The model to transform. - * @return array The transformed model. - */ - public function transform(Model $model): array - { - /** @var \App\Models\User */ - $user = auth()->user(); - $data = $model->toArray(); - $limit = $this->fields($model); - - if ( - $user === null || ( - $user->hasPermission('admin/users') === false && strcasecmp($user->id, $model->id) !== 0 - ) - ) { - $limit = ['id', 'display_name']; - } else { - $data['permissions'] = $user->permissions; - } - - $data = arrayLimitKeys($data, $limit); - return $data; - } - - /** - * Return if the current model is updatable. - * - * @param Model $model The model. - * @return boolean Allow updating model. - */ - public static function updatable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - if ($user !== null) { - return ($user->hasPermission('admin/users') === true || strcasecmp($user->id, $model->id) === 0); - } - - return false; - } - - /** - * Return if the current model is destroyable. - * - * @param Model $model The model. - * @return boolean Allow deleting model. - */ - public static function destroyable(Model $model): bool - { - /** @var \App\Models\User */ - $user = auth()->user(); - return ($user !== null && $user->hasPermission('admin/users') === true); - } -} diff --git a/app/Console/Commands/CleanupTempFiles.php b/app/Console/Commands/CleanupTempFiles.php deleted file mode 100644 index a68ad2f..0000000 --- a/app/Console/Commands/CleanupTempFiles.php +++ /dev/null @@ -1,46 +0,0 @@ - $keepTime) { - unlink($filename); - $deletedFileCount++; - } - } - - $this->comment('Deleted ' . $deletedFileCount . ' files'); - } -} diff --git a/app/Console/Commands/RemoveStaleMediaJobs.php b/app/Console/Commands/RemoveStaleMediaJobs.php deleted file mode 100644 index 48aee29..0000000 --- a/app/Console/Commands/RemoveStaleMediaJobs.php +++ /dev/null @@ -1,42 +0,0 @@ -subHours(48); - - $staleJobs = MediaJob::where('updated_at', '<=', $threshold)->get(); - - foreach ($staleJobs as $job) { - $job->delete(); - } - - $this->info(count($staleJobs) . ' stale media_jobs removed.'); - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 61d0d1a..e6b9960 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -9,25 +9,18 @@ class Kernel extends ConsoleKernel { /** * Define the application's command schedule. - * - * @param \Illuminate\Console\Scheduling\Schedule $schedule The schedule. - * @return void */ protected function schedule(Schedule $schedule): void { // $schedule->command('inspire')->hourly(); - $schedule->command('app:cleanup-temp-files')->everyThirtyMinutes(); - $schedule->command('app:remove-stale-media-jobs')->everyThirtyMinutes(); } /** * Register the commands for the application. - * - * @return void */ protected function commands(): void { - $this->load(__DIR__ . '/Commands'); + $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } diff --git a/app/Enum/CurlErrorCodes.php b/app/Enum/CurlErrorCodes.php deleted file mode 100644 index 9429f13..0000000 --- a/app/Enum/CurlErrorCodes.php +++ /dev/null @@ -1,169 +0,0 @@ - 'Unsupported protocol.', - 2 => 'Failed initalization.', - 3 => 'Invalid URL format.', - 4 => 'CURLE_URL_MALFORMAT_USER.', - 5 => 'Could not resolve proxy.', - 6 => 'Could not resolve host.', - 7 => 'Could not connect to host.', - 8 => 'Invalid reply from FTP server.', - 9 => 'Access denied on host.', - 11 => 'Invalid pass reply from FTP server.', - 13 => 'Invalid pasv reply from FTP server.', - 14 => 'Invalid 227 format from FTP server.', - 15 => 'Could not get FTP host.', - 17 => 'Could not set type for FTP transfer.', - 18 => 'Invalid partial size.', - 19 => 'Could not retrieve file from FTP server.', - 21 => 'Quote error.', - 22 => 'HTTP server returned error.', - 23 => 'File write error.', - 25 => 'Upload file error.', - 26 => 'File read error.', - 27 => 'Out of memory.', - 28 => 'File transfer timed out.', - 30 => 'Invalid port for FTP server.', - 31 => 'Could not use rest for FTP server.', - 33 => 'File range error.', - 34 => 'Invalid POST for HTTP server.', - 35 => 'SSL connectio error.', - 36 => 'Invalid resume download.', - 37 => 'Could not read file.', - 38 => 'Could not bind to LDAP.', - 39 => 'LDAP search failed.', - 41 => 'Function not found.', - 42 => 'Aborted by callback.', - 43 => 'Bad function argument.', - 45 => 'Interface failed.', - 47 => 'Too many redirects.', - 48 => 'Unknown telnet option.', - 49 => 'Telnet option syntax invalid.', - 51 => 'Peer failed verification.', - 52 => 'Did not receive any data.', - 53 => 'SSL engine was not found.', - 54 => 'SSL engine failed.', - 55 => 'Send data error.', - 56 => 'Receive data error.', - 58 => 'SSL certificate error.', - 59 => 'SSL cipher error.', - 60 => 'SSL CACertificate failed.', - 61 => 'Invalid content encoding.', - 62 => 'Invalid LDAP url.', - 63 => 'Filesize exceeded.', - 64 => 'SSL Failed.', - 65 => 'CURLE_SEND_FAIL_REWIND.', - 66 => 'SSL engine initalization failed.', - 67 => 'CURLE_LOGIN_DENIED.', - 68 => 'CURLE_TFTP_NOTFOUND.', - 69 => 'CURLE_TFTP_PERM.', - 70 => 'CURLE_REMOTE_DISK_FULL.', - 71 => 'CURLE_TFTP_ILLEGAL.', - 72 => 'CURLE_TFTP_UNKNOWNID.', - 73 => 'Remote file already exists.', - 74 => 'No such user on FTP server.', - 75 => 'Conversion failed.', - 76 => 'Conversion required.', - 77 => 'SSL CACertificate bad file.', - 78 => 'Remove file not found.', - 79 => 'SSH error.', - 80 => 'SSL Shutdown failed.', - 81 => 'Again.', - 82 => 'SSL bad CRL file.', - 83 => 'SSL issuer error.', - 84 => 'FTP pret failed.', - 85 => 'CURLE_RTSP_CSEQ_ERROR.', - 86 => 'CURLE_RTSP_SESSION_ERROR.', - 87 => 'CURLE_FTP_BAD_FILE_LIST.', - 88 => 'CURLE_CHUNK_FAILED.', - - - ]; -} diff --git a/app/Enum/Enum.php b/app/Enum/Enum.php deleted file mode 100644 index 9217845..0000000 --- a/app/Enum/Enum.php +++ /dev/null @@ -1,73 +0,0 @@ -> - */ - public static $messages = []; - - /** - * Caches reflections of enum subclasses. - * - * @var array, ReflectionClass> - */ - public static $reflectionCache = []; - - - /** - * Returns a reflection of the enum subclass. - * - * @return ReflectionClass - */ - public static function getReflection(): ReflectionClass - { - $class = static::class; - - return static::$reflectionCache[$class] ??= new ReflectionClass($class); - } - - - /** - * Returns the constants in the enum subclass - * - * @return array - */ - public static function getConstants(): array - { - return static::getReflection()->getConstants(); - } - - - /** - * Returns the constants values in the enum subclass - * - * @return array - */ - public static function getConstantValues(): array - { - return array_values(static::getReflection()->getConstants()); - } - - /** - * Returns a message from the enum subclass - * - * @param integer $messageIndex The message index to retrieve. - * @param string $defaultMessage Message to use if index does not exist. - * @return string - */ - public static function getMessage(int $messageIndex, string $defaultMessage = 'Unknown'): string - { - if (array_key_exists($messageIndex, self::$messages) === true) { - return self::$messages[$messageIndex]; - } - - return $defaultMessage; - } -} diff --git a/app/Enum/HttpResponseCodes.php b/app/Enum/HttpResponseCodes.php deleted file mode 100644 index 73513b5..0000000 --- a/app/Enum/HttpResponseCodes.php +++ /dev/null @@ -1,165 +0,0 @@ - 'Continue.', - 101 => 'Switching Protocols.', - 102 => 'Processing.', - // RFC2518 - 200 => 'OK.', - 201 => 'Created.', - 202 => 'Accepted.', - 203 => 'Non-Authoritative Information.', - 204 => 'No Content.', - 205 => 'Reset Content.', - 206 => 'Partial Content.', - 207 => 'Multi-Status.', - // RFC4918 - 208 => 'Already Reported.', - // RFC5842 - 226 => 'IM Used.', - // RFC3229 - 300 => 'Multiple Choices.', - 301 => 'Moved Permanently.', - 302 => 'Found.', - 303 => 'See Other.', - 304 => 'Not Modified.', - 305 => 'Use Proxy.', - 307 => 'Temporary Redirect.', - 308 => 'Permanent Redirect.', - // RFC7238 - 400 => 'Bad Request.', - 401 => 'Unauthorized.', - 402 => 'Payment Required.', - 403 => 'Forbidden.', - 404 => 'Not Found.', - 405 => 'Method Not Allowed.', - 406 => 'Not Acceptable.', - 407 => 'Proxy Authentication Required.', - 408 => 'Request Timeout.', - 409 => 'Conflict.', - 410 => 'Gone.', - 411 => 'Length Required.', - 412 => 'Precondition Failed.', - 413 => 'Payload Too Large.', - 414 => 'URI Too Long.', - 415 => 'Unsupported Media Type.', - 416 => 'Range Not Satisfiable.', - 417 => 'Expectation Failed.', - 418 => 'I\'m a teapot.', - // RFC2324 - 421 => 'Misdirected Request.', - // RFC7540 - 422 => 'Unprocessable Entity.', - // RFC4918 - 423 => 'Locked.', - // RFC4918 - 424 => 'Failed Dependency.', - // RFC4918 - 425 => 'Reserved for WebDAV advanced collections expired proposal.', - // RFC2817 - 426 => 'Upgrade Required.', - // RFC2817 - 428 => 'Precondition Required.', - // RFC6585 - 429 => 'Too Many Requests.', - // RFC6585 - 431 => 'Request Header Fields Too Large.', - // RFC6585 - 451 => 'Unavailable For Legal Reasons.', - // RFC7725 - 500 => 'Internal Server Error.', - 501 => 'Not Implemented.', - 502 => 'Bad Gateway.', - 503 => 'Service Unavailable.', - 504 => 'Gateway Timeout.', - 505 => 'HTTP Version Not Supported.', - 506 => 'Variant Also Negotiates.', - // RFC2295 - 507 => 'Insufficient Storage.', - // RFC4918 - 508 => 'Loop Detected.', - // RFC5842 - 510 => 'Not Extended.', - // RFC2774 - 511 => 'Network Authentication Required.', - // RFC6585 - ]; -} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 74672f9..56af264 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -3,19 +3,12 @@ namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Throwable; -use PDOException; -use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer; -use Illuminate\Support\Facades\App; -use Illuminate\Support\Facades\Log; -use Illuminate\Support\Facades\Mail; -use Symfony\Component\ErrorHandler\Exception\FlattenException; class Handler extends ExceptionHandler { /** - * A list of the inputs that are never flashed to the session on validation exceptions. + * The list of the inputs that are never flashed to the session on validation exceptions. * * @var array */ @@ -25,74 +18,13 @@ class Handler extends ExceptionHandler 'password_confirmation', ]; - /** * Register the exception handling callbacks for the application. - * - * @return void */ public function register(): void { - // $this->renderable(function (HttpException $e, $request) { - // if ($request->is('api/*')) { - // $message = $e->getMessage(); - // if ($message === '') { - // $message = HttpResponseCodes::$statusTexts[$e->getStatusCode()]; - // } - - // return response()->json([ - // 'message' => $message - // ], $e->getStatusCode()); - // } - // }); - - $this->renderable(function (NotFoundHttpException $e, $request) { - if ($request->is('api/*') === true) { - return response()->json([ - 'message' => 'Resource not found' - ], 404); - } - }); - - $this->renderable(function (PDOException $e, $request) { - if ($request->is('api/*') === true) { - return response()->json([ - 'message' => 'The server is currently unavailable' - ], 503); - } - }); - $this->reportable(function (Throwable $e) { - if ($this->shouldReport($e) === true) { - if (App::runningUnitTests() === false) { - $this->sendEmail($e); - } - } + // }); } - - /** - * Send email - * - * @param Throwable $exception Throwable object. - * @return void - */ - public function sendEmail(Throwable $exception) - { - try { - $e = FlattenException::createFromThrowable($exception); - $handler = new HtmlErrorRenderer(true); - $css = $handler->getStylesheet(); - $content = $handler->getBody($e); - - Mail::send('emails.exception', compact('css', 'content'), function ($message) { - $message - ->to('webmaster@stemmechanics.com.au') - ->subject('Exception Generated') - ; - }); - } catch (Throwable $ex) { - Log::error($ex); - } - } } diff --git a/app/Filters/SubscriptionFilter.php b/app/Filters/SubscriptionFilter.php deleted file mode 100644 index 8e210d2..0000000 --- a/app/Filters/SubscriptionFilter.php +++ /dev/null @@ -1,30 +0,0 @@ -hasPermission('admin/users') !== true) { - return ['id', 'email', 'confirmed_at']; - } - } -} diff --git a/app/Helpers/Array.php b/app/Helpers/Array.php deleted file mode 100644 index 76e0103..0000000 --- a/app/Helpers/Array.php +++ /dev/null @@ -1,78 +0,0 @@ - $directory, - 'basename' => $name . ($extension !== '' ? ".{$extension}" : ''), - 'filename' => $name, - 'extension' => $extension, - 'part' => $part, - ]; -} - -/** - * Check a temporary file exists. - * - * @param string $dir The file parent directory. - * @param string $name The file name. - * @param string $extension The file extension to use. - * @param string $part The file part number. - * @return boolean If the file exists. - */ -function tempFileExists(string $dir, string $name, string $extension = '', string $part = ''): bool -{ - $filename = constructTempFileName($dir, $name, $extension, $part); - $exists = file_exists($filename); - - return $exists; -} - -/** - * Construct the temp file name based on the information - * - * @param string $dir The file parent directory. - * @param string $name The file name. - * @param string $extension The file extension to use. - * @param string $part The file part number. - * @return string The file path. - */ -function constructTempFileName(string $dir, string $name, string $extension = '', string $part = ''): string -{ - $filename = $dir . DIRECTORY_SEPARATOR . $name . ($extension !== '' ? ".{$extension}" : '') . - ($part !== "" ? ".part-{$part}" : ''); - - return $filename; -} diff --git a/app/Helpers/TypeValue.php b/app/Helpers/TypeValue.php deleted file mode 100644 index fac3573..0000000 --- a/app/Helpers/TypeValue.php +++ /dev/null @@ -1,27 +0,0 @@ -middleware('auth:sanctum') - ->only([ - 'index', - 'update', - 'delete' - ]); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - if ($request->user() !== null && $request->user()?->hasPermission('admin/analytics') === true) { - $request->rename([ - 'type' => 'requests.type', - 'path' => 'requests.path' - ]); - - list($collection, $total) = AnalyticsConductor::request($request); - - return $this->respondAsResource( - $collection, - ['resourceName' => 'session', - 'isCollection' => true, - 'appendData' => ['total' => $total] - ] - ); - }//end if - - return $this->respondForbidden(); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\AnalyticsSession $session The analytics session. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, AnalyticsSession $session) - { - if ($request->user() !== null && $request->user()?->hasPermission('admin/analytics') === true) { - $session->load(['requests' => function ($query) { - $query->select('session_id', 'type', 'path', 'created_at'); - } - ]); - - foreach ($session->requests as $requestItem) { - $requestItem->makeHidden('session_id'); - } - - return $this->respondAsResource( - $session, - ['resourceName' => 'session'] - ); - } - - return $this->respondForbidden(); - } - - /** - * Store a newly created resource in storage. - * - * @param \App\Http\Requests\AnalyticsRequest $request The user request. - * @return \Illuminate\Http\Response - */ - public function store(AnalyticsRequest $request) - { - if (AnalyticsConductor::creatable() === true) { - $analytics = null; - $user = $request->user(); - - $data = [ - 'type' => $request->input('type'), - 'path' => $request->input('path', ''), - 'useragent' => $request->userAgent(), - 'ip' => $request->ip() - ]; - - if ( - $user !== null && - $user->hasPermission('admin/analytics') === true && - $request->has('session') === true - ) { - $data['session_id'] = $request->input('session_id'); - $analytics = AnalyticsItemRequest::create($data); - } else { - $analytics = AnalyticsItemRequest::create($data); - } - - return $this->respondAsResource( - AnalyticsConductor::model($request, $analytics), - ['respondCode' => HttpResponseCodes::HTTP_CREATED] - ); - } else { - return $this->respondForbidden(); - }//end if - } -} diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php deleted file mode 100644 index d51842b..0000000 --- a/app/Http/Controllers/Api/ApiController.php +++ /dev/null @@ -1,243 +0,0 @@ -json($data, $respondCode, $headers); - } - - /** - * Return forbidden message - * - * @param string $message Response message. - * @return JsonResponse - */ - public function respondForbidden( - string $message = 'You do not have permission to access the resource.' - ): JsonResponse { - return response()->json(['message' => $message], HttpResponseCodes::HTTP_FORBIDDEN); - } - - /** - * Return forbidden message - * - * @param string $message Response message. - * @return JsonResponse - */ - public function respondNotFound(string $message = 'The resource was not found.'): JsonResponse - { - return response()->json(['message' => $message], HttpResponseCodes::HTTP_NOT_FOUND); - } - - /** - * Return too large message - * - * @param string $message Response message. - * @return JsonResponse - */ - public function respondTooLarge(string $message = 'The request entity is too large.'): JsonResponse - { - return response()->json(['message' => $message], HttpResponseCodes::HTTP_REQUEST_ENTITY_TOO_LARGE); - } - - /** - * Return no content. - * - * @return JsonResponse - */ - public function respondNoContent(): JsonResponse - { - return response()->json([], HttpResponseCodes::HTTP_NO_CONTENT); - } - - /** - * Return no content - * - * @return JsonResponse - */ - public function respondNotImplemented(): JsonResponse - { - return response()->json([], HttpResponseCodes::HTTP_NOT_IMPLEMENTED); - } - - /** - * Return created. - * - * @return JsonResponse - */ - public function respondCreated(): JsonResponse - { - return response()->json([], HttpResponseCodes::HTTP_CREATED); - } - - /** - * Return accepted. - * - * @return JsonResponse - */ - public function respondAccepted(): JsonResponse - { - return response()->json([], HttpResponseCodes::HTTP_ACCEPTED); - } - - /** - * Return server error. - * - * @return JsonResponse - */ - public function respondServerError(): JsonResponse - { - return response()->json([], HttpResponseCodes::HTTP_INTERNAL_SERVER_ERROR); - } - - /** - * Return single error message - * - * @param string $message Error message. - * @param integer $responseCode Resource code. - * @return JsonResponse - */ - public function respondError( - string $message, - int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY - ): JsonResponse { - return response()->json([ - 'message' => $message - ], $responseCode); - } - - /** - * Return formatted errors - * - * @param array $errors Error messages. - * @param integer $responseCode Resource code. - * @return JsonResponse - */ - public function respondWithErrors( - array $errors, - int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY - ): JsonResponse { - $keys = array_keys($errors); - $error = $errors[$keys[0]]; - - if (count($keys) > 1) { - $additional_errors = (count($keys) - 1); - $error .= sprintf(' (and %d more %s', $additional_errors, Str::plural('error', $additional_errors)); - } - - return response()->json([ - 'message' => $error, - 'errors' => $errors - ], $responseCode); - } - - /** - * Return resource data - * - * @param array|Model|Collection $data Resource data. - * @param array $options Respond options. - * @param callable|null $validationFn Optional validation function to check the data before responding. - * @return JsonResponse - */ - protected function respondAsResource( - mixed $data, - array $options = [], - $validationFn = null - ): JsonResponse { - $isCollection = ($options['isCollection'] ?? false); - $appendData = ($options['appendData'] ?? null); - $resourceName = ($options['resourceName'] ?? ''); - $transformResourceName = ($options['transformResourceName'] ?? true); - $respondCode = ($options['respondCode'] ?? HttpResponseCodes::HTTP_OK); - - if ($data === null || ($data instanceof Collection && $data->count() === 0)) { - $validationData = []; - if (array_key_exists('appendData', $options) === true) { - $validationData = $options['appendData']; - } - - if ($validationFn === null || $validationFn($validationData) === true) { - return $this->respondNotFound(); - } - } - - if (empty($resourceName) === true) { - $resourceName = $this->resourceName; - } - - if (empty($resourceName) === true) { - $resourceName = get_class($this); - $resourceName = substr($resourceName, (strrpos($resourceName, '\\') + 1)); - $resourceName = substr($resourceName, 0, strpos($resourceName, 'Controller')); - $resourceName = strtolower($resourceName); - } - - $dataArray = []; - if ($data instanceof Collection) { - $dataArray = $data->toArray(); - } elseif (is_array($data) === true) { - $dataArray = $data; - } elseif ($data instanceof Model) { - $dataArray = $data->toArray(); - } - - $resource = []; - if ($isCollection === true) { - $resource = [$transformResourceName === true ? Str::plural($resourceName) : $resourceName => $dataArray]; - } else { - $resource = [$transformResourceName === true ? Str::singular($resourceName) : $resourceName => $dataArray]; - } - - if ($appendData !== null) { - $resource += $appendData; - } - - return response()->json($resource, $respondCode); - } - - /** - * Get the Controller Model Class name. - * - * @return string - */ - public function getModelClass(): string - { - $controllerClass = static::class; - - $modelName = 'App\\Models\\' . Str::replaceLast('Controller', '', Str::afterLast($controllerClass, '\\')); - - if (class_exists($modelName) === false) { - return $modelName; - } - - return $modelName; - } -} diff --git a/app/Http/Controllers/Api/ArticleController.php b/app/Http/Controllers/Api/ArticleController.php deleted file mode 100644 index dd98184..0000000 --- a/app/Http/Controllers/Api/ArticleController.php +++ /dev/null @@ -1,139 +0,0 @@ -middleware('auth:sanctum') - ->only([ - 'store', - 'update', - 'delete' - ]); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - list($collection, $total) = ArticleConductor::request($request); - - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ] - ); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\Article $article The article model. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, Article $article) - { - if (ArticleConductor::viewable($article) === true) { - return $this->respondAsResource(ArticleConductor::model($request, $article)); - } - - return $this->respondForbidden(); - } - - /** - * Store a newly created resource in storage. - * - * @param \App\Http\Requests\ArticleRequest $request The user request. - * @return \Illuminate\Http\Response - */ - public function store(ArticleRequest $request) - { - if (ArticleConductor::creatable() === true) { - $article = Article::create($request->except(['attachments', 'gallery'])); - - if ($request->has('attachments') === true) { - $article->addAttachments($request->get('attachments')); - } - - if ($request->has('gallery') === true) { - $article->galleryAddMany($request->get('gallery')); - } - - return $this->respondAsResource( - ArticleConductor::model($request, $article), - ['respondCode' => HttpResponseCodes::HTTP_CREATED] - ); - } else { - return $this->respondForbidden(); - }//end if - } - - /** - * Update the specified resource in storage. - * - * @param \App\Http\Requests\ArticleRequest $request The article update request. - * @param \App\Models\Article $article The specified article. - * @return \Illuminate\Http\Response - */ - public function update(ArticleRequest $request, Article $article) - { - if (ArticleConductor::updatable($article) === true) { - if ($request->has('attachments') === true) { - $article->deleteAttachments(); - $article->addAttachments($request->get('attachments')); - } - - if ($request->has('gallery') === true) { - $article->gallery()->delete(); - $article->galleryAddMany($request->get('gallery')); - } - - $article->update($request->except(['attachments', 'gallery'])); - return $this->respondAsResource(ArticleConductor::model($request, $article)); - } - - return $this->respondForbidden(); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Models\Article $article The specified article. - * @return \Illuminate\Http\Response - */ - public function destroy(Article $article) - { - if (ArticleConductor::destroyable($article) === true) { - $article->delete(); - return $this->respondNoContent(); - } else { - return $this->respondForbidden(); - } - } -} diff --git a/app/Http/Controllers/Api/AuthController.php b/app/Http/Controllers/Api/AuthController.php deleted file mode 100644 index 0fe1851..0000000 --- a/app/Http/Controllers/Api/AuthController.php +++ /dev/null @@ -1,105 +0,0 @@ -middleware('auth:sanctum') - // ->only(['me']); - } - - /** - * Current User details - * - * @param Request $request Current request data. - * @return JsonResponse - */ - public function me(Request $request): JsonResponse - { - $user = $request->user()->makeVisible(['permissions']); - return $this->respondAsResource($user); - } - - /** - * Login user with supplied creditials - * - * @param App\Http\Controllers\Api\AuthLoginRequest $request Created request data. - * @return JsonResponse|void - */ - public function login(AuthLoginRequest $request) - { - $user = User::where('email', '=', $request->input('email'))->first(); - - if ( - $user !== null && - strlen($user->password) > 0 && - Hash::check($request->input('password'), $user->password) === true - ) { - if ($user->email_verified_at === null) { - return $this->respondWithErrors([ - 'email' => 'Email address has not been verified.' - ]); - } - - if ($user->disabled === true) { - return $this->respondWithErrors([ - 'email' => 'Account has been disabled.' - ]); - } - - $token = $user->createToken('user_token')->plainTextToken; - - $user->logins()->create([ - 'token' => $token, - 'login' => now(), - 'ip_address' => $request->ip(), - 'user_agent' => $request->userAgent() - ]); - - return $this->respondAsResource( - $user->makeVisible(['permissions']), - ['appendData' => ['token' => $token]] - ); - }//end if - - return $this->respondWithErrors([ - 'email' => 'Invalid email or password', - 'password' => 'Invalid email or password', - ]); - } - - /** - * Logout current user - * - * @param Request $request Current request data. - * @return JsonResponse - */ - public function logout(Request $request): JsonResponse - { - $user = $request->user(); - - $user->logins()->where('token', $user->currentAccessToken())->update(['logout' => now()]); - $user->currentAccessToken()->delete(); - - return $this->respondNoContent(); - } -} diff --git a/app/Http/Controllers/Api/ContactController.php b/app/Http/Controllers/Api/ContactController.php deleted file mode 100644 index 85d65fb..0000000 --- a/app/Http/Controllers/Api/ContactController.php +++ /dev/null @@ -1,30 +0,0 @@ -input('name'), - $request->input('email'), - $request->input('content') - ) - )))->onQueue('mail'); - - return $this->respondCreated(); - } -} diff --git a/app/Http/Controllers/Api/EventController.php b/app/Http/Controllers/Api/EventController.php deleted file mode 100644 index 31b562c..0000000 --- a/app/Http/Controllers/Api/EventController.php +++ /dev/null @@ -1,234 +0,0 @@ -middleware('auth:sanctum') - ->only(['store','update','destroy', 'userAdd', 'userUpdate', 'userDelete']); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - list($collection, $total) = EventConductor::request($request); - - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ] - ); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\Event $event The specified event. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, Event $event) - { - if (EventConductor::viewable($event) === true) { - return $this->respondAsResource(EventConductor::model($request, $event)); - } - - return $this->respondForbidden(); - } - - /** - * Store a newly created resource in storage. - * - * @param \App\Http\Requests\EventRequest $request The request. - * @return \Illuminate\Http\Response - */ - public function store(EventRequest $request) - { - if (EventConductor::creatable() === true) { - $event = Event::create($request->except(['attachments'])); - - if ($request->has('attachments') === true) { - $event->addAttachments($request->get('attachments')); - } - - return $this->respondAsResource( - EventConductor::model($request, $event), - ['respondCode' => HttpResponseCodes::HTTP_CREATED] - ); - } else { - return $this->respondForbidden(); - } - } - - /** - * Update the specified resource in storage. - * - * @param \App\Http\Requests\EventRequest $request The endpoint request. - * @param \App\Models\Event $event The specified event. - * @return \Illuminate\Http\Response - */ - public function update(EventRequest $request, Event $event) - { - if (EventConductor::updatable($event) === true) { - if ($request->has('attachments') === true) { - $event->deleteAttachments(); - $event->addAttachments($request->get('attachments')); - } - - $event->update($request->except(['attachments'])); - return $this->respondAsResource(EventConductor::model($request, $event)); - } - - return $this->respondForbidden(); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Models\Event $event The specified event. - * @return \Illuminate\Http\Response - */ - public function destroy(Event $event) - { - if (EventConductor::destroyable($event) === true) { - $event->delete(); - return $this->respondNoContent(); - } else { - return $this->respondForbidden(); - } - } - - /** - * List users of Event - * @param Request $request The HTTP request. - * @param Event $event Event model. - * @return JsonResponse - */ - public function userList(Request $request, Event $event): JsonResponse - { - $authUser = $request->user(); - $eventUsers = $event->users; - - if ($authUser !== null) { - $isAdmin = $authUser->hasPermission('admin/events'); - $isEventUser = $eventUsers->contains($authUser->id); - - if ($isAdmin === true || $isEventUser === true) { - if ($isAdmin === false) { - $eventUsers = $eventUsers->filter(function ($user) use ($authUser) { - return $user->id === $authUser->id; - }); - } - - return $this->respondAsResource( - UserConductor::collection($request, $eventUsers), - [ - 'isCollection' => true, - 'resourceName' => 'users' - ] - ); - } - - return $this->respondNotFound(); - }//end if - - return $this->respondForbidden(); - } - - /** - * Add user to Event - * @param Request $request The HTTP request. - * @param Event $event Event model. - * @return JsonResponse - */ - public function userAdd(Request $request, Event $event): JsonResponse - { - $authUser = $request->user(); - if ($authUser !== null && $authUser->hasPermission('admin/events') === true) { - if ($request->has("users") === true) { - $eventUsers = $event->users()->pluck('user_id')->toArray(); // Get the current users in the event - $requestedUsers = $request->input("users"); // Get the requested users - - $usersToAdd = array_diff($requestedUsers, $eventUsers); // Users to add - $usersToRemove = array_diff($eventUsers, $requestedUsers); // Users to remove - - // Add missing users - foreach ($usersToAdd as $userToAdd) { - if (User::find($userToAdd) !== null) { - $event->users()->attach($userToAdd); - } - } - - // Remove extra users - foreach ($usersToRemove as $userToRemove) { - $event->users()->detach($userToRemove); - } - - return $this->respondNoContent(); - }//end if - - return $this->respondWithErrors(['users' => 'The user list was not found']); - }//end if - - return $this->respondForbidden(); - } - - /** - * Update user - * @param Request $request The HTTP request. - * @param Event $event Event model. - * @return void - */ - public function userUpdate(Request $request, Event $event): void - { - // only admin/events permitted - } - - /** - * Delete user from event - * - * @param Request $request The HTTP request. - * @param Event $event Event model. - * @param User $user User model. - * @return JsonResponse - */ - public function userDelete(Request $request, Event $event, User $user): JsonResponse - { - $authUser = $request->user(); - if ($authUser !== null && $authUser->hasPermission('admin/events') === true) { - $eventUsers = $event->users; - if ($eventUsers->find($user->id) !== null) { - $eventUsers->detach($user->id); - return $this->respondNoContent(); - } else { - return $this->respondNotFound(); - } - } - - return $this->respondForbidden(); - } -} diff --git a/app/Http/Controllers/Api/InfoController.php b/app/Http/Controllers/Api/InfoController.php deleted file mode 100644 index 964ba6b..0000000 --- a/app/Http/Controllers/Api/InfoController.php +++ /dev/null @@ -1,26 +0,0 @@ - "1.0.0", - "max_upload_size" => Media::getMaxUploadSize() - ]; - - return $this->respondJson($info); - } -} diff --git a/app/Http/Controllers/Api/LogController.php b/app/Http/Controllers/Api/LogController.php deleted file mode 100644 index c81c802..0000000 --- a/app/Http/Controllers/Api/LogController.php +++ /dev/null @@ -1,165 +0,0 @@ -middleware('auth:sanctum') - ->only(['show']); - } - - /** - * Display the specified resource. - * - * @param Request $request The log request. - * @param string $name The log name. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, string $name) - { - if ($request->user()?->hasPermission('logs/' . $name) === true) { - switch (strtolower($name)) { - case 'discord': - $data = []; - - $log = $request->get('log'); - if ($log === null) { - $log = ['output', 'error']; - } else { - $log = explode(',', strtolower($log)); - } - - $lines = intval($request->get('lines', 50)); - if ($lines > 100) { - $lines = 100; - } elseif ($lines < 0) { - $lines = 1; - } - - $before = $request->get('before'); - if ($before !== null) { - $before = preg_split( - "/([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/", - $before, - -1, - (PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) - ); - if (count($before) !== 6) { - $before = null; - } - } - - $after = $request->get('after'); - if ($after !== null) { - $after = preg_split( - "/([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/", - $after, - -1, - (PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) - ); - if (count($after) !== 6) { - $after = null; - } - } - - $logFiles = [ - [ - 'name' => 'output', - 'path' => '/home/discordbot/.pm2/logs/stemmech-discordbot-out-0.log' - ],[ - 'name' => 'error', - 'path' => '/home/discordbot/.pm2/logs/stemmech-discordbot-error-0.log' - ] - ]; - - foreach ($logFiles as $logFile) { - if (in_array($logFile['name'], $log) === true) { - $logContent = ''; - - if (file_exists($logFile['path']) === true) { - $logContent = file_get_contents($logFile['path']); - } - - $logArray = preg_split( - // phpcs:ignore Generic.Files.LineLength.TooLong - "/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}: (?:(?!\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}: )[\s\S])*)/", - $logContent, - -1, - (PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) - ); - - $logContent = ''; - $logLineCount = 0; - $logLineSkip = false; - foreach (array_reverse($logArray) as $logLine) { - $lineDate = preg_split( - "/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2}): /", - $logLine, - -1, - (PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) - ); - if (count($lineDate) >= 6) { - $logLineSkip = false; - - // Is line before - if ( - $before !== null && ( - $lineDate[0] > $before[0] || - $lineDate[1] > $before[1] || - $lineDate[2] > $before[2] || - $lineDate[3] > $before[3] || - $lineDate[4] > $before[4] || - $lineDate[5] > $before[5] - ) - ) { - $logLineSkip = true; - continue; - } - - // Is line after - if ( - $after !== null && ( - $after[0] > $lineDate[0] || - $after[1] > $lineDate[1] || - $after[2] > $lineDate[2] || - $after[3] > $lineDate[3] || - $after[4] > $lineDate[4] || - $after[5] > $lineDate[5] - ) - ) { - $logLineSkip = true; - continue; - } - - $logLineCount += 1; - }//end if - - if ($logLineCount > $lines) { - break; - } - - if ($logLineSkip === false) { - $logContent .= $logLine; - } - }//end foreach - - $data[$logFile['name']] = $logContent; - }//end if - }//end foreach - - return $this->respondJson([ - 'log' => $data - ]); - }//end switch - }//end if - - return $this->respondForbidden(); - } -} diff --git a/app/Http/Controllers/Api/MediaController.php b/app/Http/Controllers/Api/MediaController.php deleted file mode 100644 index 7e6b87c..0000000 --- a/app/Http/Controllers/Api/MediaController.php +++ /dev/null @@ -1,443 +0,0 @@ -middleware('auth:sanctum') - ->only(['store','update','destroy']); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - list($collection, $total) = MediaConductor::request($request); - - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ], - function ($options) { - return $options['total'] === 0; - } - ); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\Media $medium The request media. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, Media $medium) - { - if (MediaConductor::viewable($medium) === true) { - return $this->respondAsResource(MediaConductor::model($request, $medium)); - } - - return $this->respondForbidden(); - } - - /** - * Store a new media resource - * - * @param \App\Http\Requests\MediaRequest $request The uploaded media. - * @return \Illuminate\Http\Response - */ - public function store(MediaRequest $request) - { - // allowed to create a media item - if (MediaConductor::creatable() === false) { - return $this->respondForbidden(); - } - - // check for file - $file = $request->file('file'); - if ($file === null) { - return $this->respondWithErrors(['file' => 'The browser did not upload the file correctly to the server.']); - } - - return $this->storeOrUpdate($request, null); - } - - /** - * Update the media resource in storage. - * - * @param \App\Http\Requests\MediaRequest $request The update request. - * @param \App\Models\Media $medium The specified media. - * @return \Illuminate\Http\Response - */ - public function update(MediaRequest $request, Media $medium) - { - // allowed to update a media item - if (MediaConductor::updatable($medium) === false) { - return $this->respondForbidden(); - } - - return $this->storeOrUpdate($request, $medium); - } - - /** - * Store a new media resource - * - * @param \App\Http\Requests\MediaRequest $request The uploaded media. - * @param \App\Models\Media|null $medium The specified media. - * @return \Illuminate\Http\Response - */ - public function storeOrUpdate(MediaRequest $request, Media|null $medium) - { - $file = $request->file('file'); - if ($file !== null) { - // validate file object - if ($file->isValid() !== true) { - switch ($file->getError()) { - case UPLOAD_ERR_INI_SIZE: - case UPLOAD_ERR_FORM_SIZE: - return $this->respondTooLarge(); - case UPLOAD_ERR_PARTIAL: - return $this->respondWithErrors([$file => 'The file upload was interrupted.']); - default: - return $this->respondWithErrors( - [$file => 'An error occurred uploading the file to the server.'] - ); - } - } - - if ($file->getSize() > Media::getMaxUploadSize()) { - return $this->respondTooLarge(); - } - } - - // create/get media job - $mediaJob = null; - $data = []; - - if ($request->missing('job_id') === true) { - /** @var \App\Models\User */ - $user = auth()->user(); - - $mediaJob = new MediaJob(); - $mediaJob->user_id = $user->id; - if ($medium !== null) { - $mediaJob->media_id = $medium->id; - } - - if ($request->has('title') === true || $file !== null) { - $data['title'] = $request->get('title', ''); - } - - if ($request->has('name') === true || $file !== null) { - $data['name'] = ( - $request->has('chunk') === true ? $request->get('name', '') : $file->getClientOriginalName() - ); - } - - if ($file !== null) { - $data['size'] = $request->has('chunk') === true ? intval($request->get('size', 0)) : $file->getSize(); - $data['mime_type'] = ( - $request->has('chunk') === true ? $request->get('mime_type', '') : $file->getMimeType() - ); - } - - if ($request->has('storage') === true || $file !== null) { - $data['storage'] = $request->get('storage', ''); - } - - if ($request->has('security_type') === true || $file !== null) { - $data['security']['type'] = $request->get('security_type', ''); - $data['security']['data'] = $request->get('security_data', ''); - - if ($data['security']['type'] === '') { - $data['security']['data'] = ''; - } - - if ($medium === null || strcasecmp($data['security']['type'], $medium->security_type) !== 0) { - if ($request->has('storage') === false) { - $mime_type = $request->get('mime_type', $medium === null ? '' : $medium->mime_type); - $data['storage'] = Media::recommendedStorage($mime_type, $data['security']['type']); - } - } - } - - if ( - array_key_exists('storage', $data) === true && ( - array_key_exists('security', $data) === true && - array_key_exists('type', $data['security']) === true - ) && - array_key_exists('mime_type', $data) === true && - $data['mime_type'] !== "" - ) { - $error = Media::verifyStorage($data['mime_type'], $data['security']['type'], $data['storage']); - // Log::error($data['mime_type'] . ' - ' . $data['security']['type'] . ' - ' . $data['storage']); - switch ($error) { - case Media::STORAGE_VALID: - break; - case Media::STORAGE_MIME_MISSING: - return $this->respondWithErrors(['mime_type' => 'The file type is required.']); - case Media::STORAGE_NOT_FOUND: - return $this->respondWithErrors(['storage' => 'Storage was not found.']); - case Media::STORAGE_INVALID_SECURITY: - return $this->respondWithErrors( - ['storage' => 'Storage invalid for this security requirement.'] - ); - default: - return $this->respondWithErrors(['storage' => 'Storage verification error occurred.']); - } - } - - if ($request->has('transform') === true) { - $transform = []; - - foreach (explode(',', $request->get('transform', '')) as $value) { - if (is_string($value) === true) { - if (preg_match('/^rotate-(-?\d+)$/', $value, $matches) !== false) { - $transform['rotate'] = $matches[1]; - } elseif (preg_match('/^flip-([vh]|vh|hv)$/', $value, $matches) !== false) { - $transform['flip'] = $matches[1]; - } elseif (preg_match('/^crop-(\d+)-(\d+)$/', $value, $matches) !== false) { - $transform['crop'] = ['width' => $matches[1], 'height' => $matches[2]]; - } elseif (preg_match('/^crop-(\d+)-(\d+)-(\d+)-(\d+)$/', $value, $matches) !== false) { - $transform['crop'] = [ - 'width' => $matches[1], - 'height' => $matches[2], - 'x' => $matches[3], - 'y' => $matches[4] - ]; - } - } - } - - if (count($transform) > 0) { - $data['transform'] = $transform; - } - }//end if - - $mediaJob->setStatusWaiting(); - } else { - $mediaJob = MediaJob::find($request->get('job_id')); - if ($mediaJob === null || $mediaJob->exists() === false) { - $this->respondNotFound(); - } - - $data = json_decode($mediaJob->data, true); - if ($data === null) { - Log::error(`{$mediaJob->id} contains no data`); - return $this->respondServerError(); - } - - if (array_key_exists('name', $data) === false) { - Log::error(`{$mediaJob->id} data does not contain the name key`); - return $this->respondServerError(); - } - }//end if - - if ($mediaJob === null) { - Log::error(`media job does not exist`); - return $this->respondServerError(); - } - - // save uploaded file - if ($file !== null) { - if ($data['name'] === '') { - Log::error(`filename does not exist`); - return $this->respondServerError(); - } - - $temporaryFilePath = generateTempFilePath( - pathinfo($data['name'], PATHINFO_EXTENSION), - $request->get('chunk', '') - ); - copy($file->path(), $temporaryFilePath); - - if ($request->has('chunk') === true) { - $data['chunks'][$request->get('chunk', '1')] = $temporaryFilePath; - $data['chunk_count'] = $request->get('chunk_count', 1); - } else { - $data['file'] = $temporaryFilePath; - } - } - - $mediaJob->data = json_encode($data, true); - $mediaJob->save(); - $mediaJob->process(); - - return $this->respondAsResource( - MediaJobConductor::model($request, $mediaJob), - ['resourceName' => 'media_job', 'respondCode' => HttpResponseCodes::HTTP_ACCEPTED] - ); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Models\Media $medium Specified media file. - * @return \Illuminate\Http\Response - */ - public function destroy(Media $medium) - { - if (MediaConductor::destroyable($medium) === true) { - $medium->delete(); - return $this->respondNoContent(); - } - - return $this->respondForbidden(); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\Media $media Specified media. - * @return \Illuminate\Http\Response - */ - public function download(Request $request, Media $media): Response - { - $headers = []; - - /* Check file exists */ - if (Storage::disk($media->storage)->exists($media->name) === false) { - return $this->respondNotFound(); - } - - $updated_at = Carbon::parse(Storage::disk($media->storage)->lastModified($media->name)); - - $headerPragma = 'no-cache'; - $headerCacheControl = 'max-age=0, must-revalidate'; - $headerExpires = $updated_at->toRfc2822String(); - - /* construct user if can */ - $user = $request->user(); - if ($user === null && $request->has('token') === true) { - $accessToken = PersonalAccessToken::findToken(urldecode($request->input('token'))); - - if ( - $accessToken !== null && (config('sanctum.expiration') === null || - $accessToken->created_at->lte(now()->subMinutes(config('sanctum.expiration'))) === false) - ) { - $user = $accessToken->tokenable; - } - } - - if ($media->security_type === '') { - /* no security */ - $headerPragma = 'public'; - $headerExpires = $updated_at->addMonth()->toRfc2822String(); - } elseif (strcasecmp('password', $media->security_type) === 0) { - /* password */ - if ( - ($user === null || $user->hasPermission('admin/media') === false) && - ($request->has('password') === false || $request->get('password') !== $media->security_data) - ) { - return $this->respondForbidden(); - } - } elseif (strcasecmp('permission', $media->security_type) === 0) { - /* permission */ - if ( - $user === null || ( - $user->hasPermission('admin/media') === false && - $user->hasPermission($media->security_data) === false - ) - ) { - return $this->respondForbidden(); - } - }//end if - - // deepcode ignore InsecureHash: Browsers expect Etag to be a md5 hash - $headerEtag = md5($updated_at->format('U')); - $headerLastModified = $updated_at->toRfc2822String(); - - $headers = [ - 'Cache-Control' => $headerCacheControl, - 'Content-Disposition' => sprintf('inline; filename="%s"', basename($media->name)), - 'Etag' => $headerEtag, - 'Expires' => $headerExpires, - 'Last-Modified' => $headerLastModified, - 'Pragma' => $headerPragma, - ]; - - $server = request()->server; - - $requestModifiedSince = $server->has('HTTP_IF_MODIFIED_SINCE') && - $server->get('HTTP_IF_MODIFIED_SINCE') === $headerLastModified; - - $requestNoneMatch = $server->has('HTTP_IF_NONE_MATCH') && - $server->get('HTTP_IF_NONE_MATCH') === $headerEtag; - - if ($requestModifiedSince === true || $requestNoneMatch === true) { - return response()->make('', 304, $headers); - } - - $headers['Content-Type'] = Storage::disk($media->storage)->mimeType($media->name); - $headers['Content-Length'] = Storage::disk($media->storage)->size($media->name); - $headers['Content-Disposition'] = 'attachment; filename="' . basename($media->name) . '"'; - - $stream = Storage::disk($media->storage)->readStream($media->name); - return response()->stream( - function () use ($stream) { - while (ob_get_level() > 0) { - ob_end_flush(); - } - fpassthru($stream); - }, - 200, - $headers - ); - } - - /** - * Validate a File item in a request is valid - * - * @param UploadedFile $file The file to validate. - * @param string $errorKey The error key to use. - * @return JsonResponse|null - */ - private function validateFileObject(UploadedFile $file, string $errorKey = 'file'): JsonResponse|null - { - if ($file->isValid() !== true) { - switch ($file->getError()) { - case UPLOAD_ERR_INI_SIZE: - case UPLOAD_ERR_FORM_SIZE: - return $this->respondTooLarge(); - case UPLOAD_ERR_PARTIAL: - return $this->respondWithErrors([$errorKey => 'The file upload was interrupted.']); - default: - return $this->respondWithErrors( - [$errorKey => 'An error occurred uploading the file to the server.'] - ); - } - } - - if ($file->getSize() > Media::getMaxUploadSize()) { - return $this->respondTooLarge(); - } - - return null; - } -} diff --git a/app/Http/Controllers/Api/MediaJobController.php b/app/Http/Controllers/Api/MediaJobController.php deleted file mode 100644 index daa1c22..0000000 --- a/app/Http/Controllers/Api/MediaJobController.php +++ /dev/null @@ -1,52 +0,0 @@ -respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total], - 'resourceName' => 'media_job' - ], - function ($options) { - return $options['total'] === 0; - } - ); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\MediaJob $mediaJob The request media job. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, MediaJob $mediaJob) - { - if (MediaJobConductor::viewable($mediaJob) === true) { - return $this->respondAsResource( - MediaJobConductor::model($request, $mediaJob), - ['resourceName' => 'media_job'] - ); - } - - return $this->respondForbidden(); - } -} diff --git a/app/Http/Controllers/Api/OCRController.php b/app/Http/Controllers/Api/OCRController.php deleted file mode 100644 index 7c2cce5..0000000 --- a/app/Http/Controllers/Api/OCRController.php +++ /dev/null @@ -1,234 +0,0 @@ -middleware('auth:sanctum') - // ->only(['show']); - } - - /** - * Display the specified resource. - * - * @param Request $request The log request. - * @return \Illuminate\Http\Response - */ - public function show(Request $request) - { - // if ($request->user()?->hasPermission('logs/' . $name) === true) { - $url = $request->get('url'); - if ($url !== null) { - $data = ['ocr' => []]; - - $filters = $request->get('filters', ['tesseract']); - if (is_array($filters) === false) { - $filters = explode(',', $filters); - } - - $tesseractOEM = $request->get('tesseract.oem'); - $tesseractDigits = $request->get('tesseract.digits'); - $tesseractAllowlist = $request->get('tesseract.allowlist'); - - // Download URL - $urlDownloadFilePath = tempnam(sys_get_temp_dir(), 'download'); - $maxDownloadSize = (1024 * 1024); // 1MB - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - - // We need progress updates to break the connection mid-way - curl_setopt($ch, CURLOPT_BUFFERSIZE, 128); // more progress info - curl_setopt($ch, CURLOPT_NOPROGRESS, false); - curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function ( - $downloadSize, - $downloaded, - $uploadSize, - $uploaded - ) use ($maxDownloadSize) { - return ($downloaded > $maxDownloadSize) ? 1 : 0; - }); - - $curlResult = curl_exec($ch); - $curlError = curl_errno($ch); - $curlSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); - curl_close($ch); - if ($curlError !== 0) { - $error = 'File size is larger then allowed'; - if ($curlError !== CurlErrorCodes::CURLE_ABORTED_BY_CALLBACK) { - $error = CurlErrorCodes::getMessage($curlError); - } - - return $this->respondWithErrors(['url' => $error]); - } - - // Save url file - file_put_contents($urlDownloadFilePath, $curlResult); - $urlDownloadFilePathBase = preg_replace('/\\.[^.\\s]{3,4}$/', '', $urlDownloadFilePath); - - // tesseract (overall) - $ocr = null; - foreach ($filters as $filterItem) { - if (str_starts_with($filterItem, 'tesseract') === true) { - $ocr = new TesseractOCR(); - $ocr->image($urlDownloadFilePath); - if ($tesseractOEM !== null) { - $ocr->oem($tesseractOEM); - } - if ($tesseractDigits !== null) { - $ocr->digits(); - } - if ($tesseractAllowlist !== null) { - $ocr->allowlist($tesseractAllowlist); - } - break; - } - } - - // Image Filter Function - $tesseractImageFilterFunc = function ($filter, $options = null) use ($curlResult, $curlSize, $ocr) { - $result = ''; - $img = imagecreatefromstring($curlResult); - if ( - $img !== false && (($options !== null && imagefilter($img, $filter, $options) === true) || - ($options === null && imagefilter($img, $filter) === true)) - ) { - ob_start(); - imagepng($img); - $imgData = ob_get_contents(); - ob_end_clean(); - $imgDataSize = strlen($imgData); - - $ocr->imageData($imgData, $imgDataSize); - imagedestroy($img); - - $result = $ocr->run(500); - } - - return $result; - }; - - // Image Scale Function - $tesseractImageScaleFunc = function ($scaleFunc) use ($curlResult, $ocr) { - $result = ''; - $srcImage = imagecreatefromstring($curlResult); - $srcWidth = imagesx($srcImage); - $srcHeight = imagesy($srcImage); - - $dstWidth = $scaleFunc($srcWidth); - $dstHeight = $scaleFunc($srcHeight); - $dstImage = imagecreatetruecolor($dstWidth, $dstHeight); - - imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, $dstWidth, $dstHeight, $srcWidth, $srcHeight); - - ob_start(); - imagepng($dstImage); - $imgData = ob_get_contents(); - ob_end_clean(); - $imgDataSize = strlen($imgData); - - imagedestroy($srcImage); - imagedestroy($dstImage); - - $ocr->imageData($imgData, $imgDataSize); - $result = $ocr->run(500); - return $result; - }; - - // filter: tesseract - if (in_array('tesseract', $filters) === true) { - $data['ocr']['tesseract'] = $ocr->run(500); - } - - // filter: tesseract.grayscale - if (in_array('tesseract.grayscale', $filters) === true) { - $data['ocr']['tesseract.grayscale'] = $tesseractImageFilterFunc(IMG_FILTER_GRAYSCALE); - } - - // filter: tesseract.double_scale - if (in_array('tesseract.double_scale', $filters) === true) { - $data['ocr']['tesseract.double_scale'] = $tesseractImageScaleFunc(function ($size) { - return $size * 2; - }); - } - - // filter: tesseract.half_scale - if (in_array('tesseract.half_scale', $filters) === true) { - $data['ocr']['tesseract.half_scale'] = $tesseractImageScaleFunc(function ($size) { - return $size / 2; - }); - } - - // filter: tesseract.edgedetect - if (in_array('tesseract.edgedetect', $filters) === true) { - $data['ocr']['tesseract.edgedetect'] = $tesseractImageFilterFunc(IMG_FILTER_EDGEDETECT); - } - - // filter: tesseract.mean_removal - if (in_array('tesseract.mean_removal', $filters) === true) { - $data['ocr']['tesseract.mean_removal'] = $tesseractImageFilterFunc(IMG_FILTER_MEAN_REMOVAL); - } - - // filter: tesseract.negate - if (in_array('tesseract.negate', $filters) === true) { - $data['ocr']['tesseract.negate'] = $tesseractImageFilterFunc(IMG_FILTER_NEGATE); - } - - // filter: tesseract.pixelate - if (in_array('tesseract.pixelate', $filters) === true) { - $data['ocr']['tesseract.pixelate'] = $tesseractImageFilterFunc(IMG_FILTER_PIXELATE, 3); - } - - // filter: keras - if (in_array('keras', $filters) === true) { - $cmd = '/usr/bin/python3 ' . base_path() . '/scripts/keras_oc.py ' . urlencode($url); - $command = escapeshellcmd($cmd); - $output = shell_exec($cmd); - if ($output !== null && strlen($output) > 0) { - $output = substr($output, (strpos($output, '----------START----------') + 25)); - } else { - $output = ''; - } - $data['ocr']['keras'] = $output; - } - - unlink($urlDownloadFilePath); - return $this->respondJson($data); - }//end if - - return $this->respondWithErrors(['url' => 'url is missing']); - } - - // $ffmpeg = FFMpeg\FFMpeg::create(); - - // // Load the input video - // $inputFile = $ffmpeg->open('input.mp4'); - - // // Split the video into individual frames - // $videoFrames = $inputFile->frames(); - // foreach ($videoFrames as $frame) { - // // Save the frame as a PNG - // $frame->save(new FFMpeg\Format\Video\PNG(), 'frame-' . $frame->getMetadata('pts') . '.png'); - - // // Pass the PNG to Tesseract for processing - // exec("tesseract frame-" . $frame->getMetadata('pts') . ".png output"); - // } - - // // Read the output from Tesseract - // $text = file_get_contents("output.txt"); - - // // Do something with the text from Tesseract - // echo $text; -} diff --git a/app/Http/Controllers/Api/ShortlinkController.php b/app/Http/Controllers/Api/ShortlinkController.php deleted file mode 100644 index a8d1c23..0000000 --- a/app/Http/Controllers/Api/ShortlinkController.php +++ /dev/null @@ -1,111 +0,0 @@ -middleware('auth:sanctum') - ->only(['store','update','destroy']); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - list($collection, $total) = ShortlinkConductor::request($request); - - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ], - function ($options) { - return $options['total'] === 0; - } - ); - } - - /** - * Display the specified resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\Shortlink $shortlink The request shortlink. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, Shortlink $shortlink) - { - if (ShortlinkConductor::viewable($shortlink) === true) { - return $this->respondAsResource(ShortlinkConductor::model($request, $shortlink)); - } - - return $this->respondForbidden(); - } - - /** - * Store a new media resource - * - * @param \App\Http\Requests\ShortlinkRequest $request The shortlink. - * @return \Illuminate\Http\Response - */ - public function store(ShortlinkRequest $request) - { - if (ShortlinkConductor::creatable() === true) { - $shortlink = Shortlink::create($request->all()); - - return $this->respondAsResource( - ShortlinkConductor::model($request, $shortlink), - ['respondCode' => HttpResponseCodes::HTTP_ACCEPTED] - ); - }//end if - - return $this->respondForbidden(); - } - - /** - * Update the media resource in storage. - * - * @param \App\Http\Requests\ShortlinkRequest $request The update request. - * @param \App\Models\Shortlink $shortlink The specified shortlink. - * @return \Illuminate\Http\Response - */ - public function update(ShortlinkRequest $request, Shortlink $shortlink) - { - if (ShortlinkConductor::updatable($shortlink) === true) { - $shortlink->update($request->all()); - return $this->respondAsResource(ShortlinkConductor::model($request, $shortlink)); - }//end if - - return $this->respondForbidden(); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Models\Shortlink $shortlink Specified shortlink. - * @return \Illuminate\Http\Response - */ - public function destroy(Shortlink $shortlink) - { - if (ShortlinkConductor::destroyable($shortlink) === true) { - $shortlink->delete(); - return $this->respondNoContent(); - } - - return $this->respondForbidden(); - } -} diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php deleted file mode 100644 index 3cea08a..0000000 --- a/app/Http/Controllers/Api/UserController.php +++ /dev/null @@ -1,369 +0,0 @@ -middleware('auth:sanctum') - ->except([ - 'index', - 'show', - 'register', - 'exists', - 'forgotPassword', - 'resetPassword', - 'verifyEmail', - 'resendVerifyEmailCode', - 'eventList', - ]); - } - - /** - * Display a listing of the resource. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function index(Request $request) - { - list($collection, $total) = UserConductor::request($request); - - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ] - ); - } - - /** - * Store a newly created user in the database. - * - * @param \App\Http\Requests\UserRequest $request The endpoint request. - * @return \Illuminate\Http\Response - */ - public function store(UserRequest $request) - { - if (UserConductor::creatable() === true) { - $user = User::create($request->all()); - return $this->respondAsResource( - UserConductor::model($request, $user), - ['respondCode' => HttpResponseCodes::HTTP_CREATED] - ); - } else { - return $this->respondForbidden(); - } - } - - /** - * Display the specified user. - * - * @param \Illuminate\Http\Request $request The endpoint request. - * @param \App\Models\User $user The user model. - * @return \Illuminate\Http\Response - */ - public function show(Request $request, User $user) - { - if (UserConductor::viewable($user) === true) { - return $this->respondAsResource(UserConductor::model($request, $user)); - } - - return $this->respondForbidden(); - } - - /** - * Update the specified resource in storage. - * - * @param \App\Http\Requests\UserRequest $request The user update request. - * @param \App\Models\User $user The specified user. - * @return \Illuminate\Http\Response - */ - public function update(UserRequest $request, User $user) - { - if (UserConductor::updatable($user) === true) { - $input = []; - $updatable = ['first_name', 'last_name', 'email', 'phone', 'password', 'display_name']; - - if ($request->user()->hasPermission('admin/user') === true) { - $updatable = array_merge($updatable, ['email_verified_at']); - } - - $input = $request->only($updatable); - if (array_key_exists('password', $input) === true) { - $input['password'] = Hash::make($request->input('password')); - } - - $user->update($input); - - return $this->respondAsResource(UserConductor::model($request, $user)); - } - - return $this->respondForbidden(); - } - - /** - * Remove the user from the database. - * - * @param \App\Models\User $user The specified user. - * @return \Illuminate\Http\Response - */ - public function destroy(User $user) - { - if (UserConductor::destroyable($user) === true) { - $user->delete(); - return $this->respondNoContent(); - } - - return $this->respondForbidden(); - } - - /** - * Register a new user - * - * @param \App\Http\Requests\UserRegisterRequest $request The register user request. - * @return JsonResponse - */ - public function register(UserRegisterRequest $request): JsonResponse - { - try { - $userData = $request->only([ - 'first_name', - 'last_name', - 'email', - 'phone', - 'password', - 'display_name', - ]); - - $userData['password'] = Hash::make($userData['password']); - - $user = User::where('email', $request->input('email')) - ->whereNull('password') - ->first(); - - if ($user === null) { - $user = User::create($userData); - } else { - unset($userData['email']); - $user->update($userData); - }//end if - - $code = $user->codes()->create([ - 'action' => 'verify-email', - ]); - - dispatch((new SendEmailJob($user->email, new EmailVerify($user, $code->code))))->onQueue('mail'); - - return response()->json([ - 'message' => 'Check your email for a welcome code.' - ]); - } catch (\Exception $e) { - return response()->json([ - 'message' => 'A server error occurred. Please try again later' . $e - ], 500); - }//end try - } - - /** - * Generates a new reset password code - * - * @param \App\Http\Requests\UserForgotPasswordRequest $request The reset password request. - * @return \Illuminate\Http\Response - */ - public function forgotPassword(UserForgotPasswordRequest $request) - { - $user = User::where('email', $request->input('email'))->first(); - if ($user !== null) { - $user->codes()->where('action', 'reset-password')->delete(); - $code = $user->codes()->create([ - 'action' => 'reset-password' - ]); - - dispatch((new SendEmailJob($user->email, new ForgotPassword($user, $code->code))))->onQueue('mail'); - return $this->respondNoContent(); - } - - return $this->respondNotFound(); - } - - /** - * Resets a user password - * - * @param \App\Http\Requests\UserResetPasswordRequest $request The reset password request. - * @return \Illuminate\Http\Response - */ - public function resetPassword(UserResetPasswordRequest $request) - { - UserCode::clearExpired(); - - $code = UserCode::where('code', $request->input('code'))->where('action', 'reset-password')->first(); - if ($code !== null) { - $user = $code->user()->first(); - - $code->delete(); - $user->codes()->where('action', 'verify-email')->delete(); - - $user->password = Hash::make($request->input('password')); - - if ($user->email_verified_at === null) { - $user->email_verified_at = now(); - } - - $user->save(); - - dispatch((new SendEmailJob($user->email, new ChangedPassword($user))))->onQueue('mail'); - return $this->respondNoContent(); - } - - return $this->respondError([ - 'code' => 'The code was not found or has expired.' - ]); - } - - /** - * Verify an email code - * - * @param \App\Http\Requests\UserVerifyEmailRequest $request The verify email request. - * @return \Illuminate\Http\Response - */ - public function verifyEmail(UserVerifyEmailRequest $request) - { - UserCode::clearExpired(); - - $code = UserCode::where('code', $request->input('code'))->where('action', 'verify-email')->first(); - if ($code !== null) { - $user = $code->user()->first(); - $new_email = $code->data; - - if ($new_email === null) { - if ($user->email_verified_at === null) { - $user->email_verified_at = now(); - } - } else { - dispatch((new SendEmailJob($user->email, new ChangedEmail($user, $user->email, $new_email)))) - ->onQueue('mail'); - - $user->email = $new_email; - $user->email_verified_at = now(); - } - - $code->delete(); - $user->save(); - - return $this->respondNoContent(); - }//end if - - return $this->respondWithErrors([ - 'code' => 'The code was not found or has expired.' - ]); - } - - /** - * Resend a new verify email - * - * @param \App\Http\Requests\UserResendVerifyEmailRequest $request The resend verify email request. - * @return JsonResponse - */ - public function resendVerifyEmail(UserResendVerifyEmailRequest $request): JsonResponse - { - UserCode::clearExpired(); - - $user = User::where('email', $request->input('email'))->first(); - if ($user !== null) { - $code = $user->codes()->where('action', 'verify-email')->first(); - $code->regenerate(); - $code->save(); - - if ($code->data === null) { - dispatch((new SendEmailJob($user->email, new EmailVerify($user, $code->code))))->onQueue('mail'); - } else { - dispatch((new SendEmailJob($user->email, new ChangeEmailVerify($user, $code->code, $code->data)))) - ->onQueue('mail'); - } - } - - return response()->json(['message' => 'Verify email sent if user registered and required']); - } - - /** - * Resend verification email - * - * @param \App\Http\Requests\UserResendVerifyEmailRequest $request The resend user request. - * @return \Illuminate\Http\Response - */ - public function resendVerifyEmailCode(UserResendVerifyEmailRequest $request) - { - $user = User::where('email', $request->input('email'))->first(); - if ($user !== null) { - $user->codes()->where('action', 'verify-email')->delete(); - - if ($user->email_verified_at === null) { - $code = $user->codes()->create([ - 'action' => 'verify-email' - ]); - - dispatch((new SendEmailJob($user->email, new EmailVerify($user, $code->code))))->onQueue('mail'); - } - - return $this->respondNoContent(); - } - - return $this->respondNotFound(); - } - - /** - * Return a JSON event list of a user. - * - * @param Request $request The http request. - * @param User $user The specified user. - * @return JsonResponse - */ - public function eventList(Request $request, User $user): JsonResponse - { - if ( - $request->user() !== null && ( - $request->user() === $user || $request->user()->hasPermission('admin/events') === true - ) - ) { - $collection = $user->events; - $total = $collection->count(); - - $collection = EventConductor::collection($request, $collection); - return $this->respondAsResource( - $collection, - ['isCollection' => true, - 'appendData' => ['total' => $total] - ] - ); - } else { - return $this->respondForbidden(); - } - } -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index f1406be..77ec359 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -8,6 +8,5 @@ use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { - use AuthorizesRequests; - use ValidatesRequests; + use AuthorizesRequests, ValidatesRequests; } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 7b83b74..494c050 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -19,8 +19,8 @@ class Kernel extends HttpKernel \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - // \App\Http\Middleware\TrimStrings::class, - // \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ]; /** @@ -40,19 +40,15 @@ class Kernel extends HttpKernel 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - \Illuminate\Routing\Middleware\ThrottleRequests::class . ':api', + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, - // \App\Http\Middleware\ForceJsonResponse::class, - \App\Http\Middleware\UnmangleRequest::class, - 'useSanctumGuard', - \App\Http\Middleware\LogRequest::class, ], ]; /** * The application's middleware aliases. * - * Aliases may be used to conveniently assign middleware to routes and groups. + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. * * @var array */ @@ -63,11 +59,10 @@ class Kernel extends HttpKernel 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'unmangle' => \App\Http\Middleware\UnmangleRequest::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'useSanctumGuard' => \App\Http\Middleware\UseSanctumGuard::class ]; } diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 9515a4a..d4ef644 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -3,21 +3,15 @@ namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; +use Illuminate\Http\Request; class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. - * - * @param mixed $request Request. - * @return ?string */ - protected function redirectTo(mixed $request): ?string + protected function redirectTo(Request $request): ?string { - if ($request->expectsJson() === false) { - return route('login'); - } - - return null; + return $request->expectsJson() ? null : route('login'); } } diff --git a/app/Http/Middleware/ForceJsonResponse.php b/app/Http/Middleware/ForceJsonResponse.php deleted file mode 100644 index cdfa47e..0000000 --- a/app/Http/Middleware/ForceJsonResponse.php +++ /dev/null @@ -1,21 +0,0 @@ -headers->set('Accept', 'application/json'); - return $next($request); - } -} diff --git a/app/Http/Middleware/LogRequest.php b/app/Http/Middleware/LogRequest.php deleted file mode 100644 index 07e984c..0000000 --- a/app/Http/Middleware/LogRequest.php +++ /dev/null @@ -1,36 +0,0 @@ - 'apirequest', - 'path' => $request->path(), - ]); - - return $response; - } catch (\Error $e) { - report($e); - return $response; - } - } -} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 5ee6f4b..afc78c4 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -2,28 +2,25 @@ namespace App\Http\Middleware; -use Symfony\Component\HttpFoundation\Response; use App\Providers\RouteServiceProvider; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Symfony\Component\HttpFoundation\Response; class RedirectIfAuthenticated { /** * Handle an incoming request. * - * @param Request $request Request. - * @param \Closure $next Closure. - * @param string|null ...$guards Guards. - * @return Response + * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next, string ...$guards): Response { - $guards = empty($guards) === true ? [null] : $guards; + $guards = empty($guards) ? [null] : $guards; foreach ($guards as $guard) { - if (Auth::guard($guard)->check() === true) { + if (Auth::guard($guard)->check()) { return redirect(RouteServiceProvider::HOME); } } diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 3123f50..3391630 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -17,9 +17,12 @@ class TrustProxies extends Middleware /** * The headers that should be used to detect proxies. * - * @var integer + * @var int */ - // @codingStandardsIgnoreStart - protected $headers = (Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB); - // @codingStandardsIgnoreEnd + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; } diff --git a/app/Http/Middleware/UnmangleRequest.php b/app/Http/Middleware/UnmangleRequest.php deleted file mode 100644 index a903651..0000000 --- a/app/Http/Middleware/UnmangleRequest.php +++ /dev/null @@ -1,47 +0,0 @@ -all(); - - $string = $_SERVER['QUERY_STRING']; - $parts = explode('&', $string); - foreach ($parts as $part) { - $key = $part; - $splitPos = strpos($key, '='); - if ($splitPos !== false) { - $key = urldecode(substr($key, 0, $splitPos)); - } - - $replace_key = str_replace('.', '_', $key); - if (strpos($key, '.') !== false && array_key_exists($replace_key, $params) === true) { - $params[$key] = $params[$replace_key]; - unset($params[$replace_key]); - } - } - - $request->replace($params); - }//end if - - return $next($request); - } -} diff --git a/app/Http/Middleware/UseSanctumGuard.php b/app/Http/Middleware/UseSanctumGuard.php deleted file mode 100644 index 24a6c21..0000000 --- a/app/Http/Middleware/UseSanctumGuard.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ - public function postRules(): array - { - return [ - 'type' => 'required|string', - ]; - } - - /** - * Get the validation rules that apply to PUT request. - * - * @return array - */ - public function putRules(): array - { - return [ - 'type' => 'string', - 'useragent' => 'string', - 'ip' => 'ipv4|ipv6', - 'session' => 'number', - ]; - } -} diff --git a/app/Http/Requests/ArticleRequest.php b/app/Http/Requests/ArticleRequest.php deleted file mode 100644 index 2ad76d7..0000000 --- a/app/Http/Requests/ArticleRequest.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ - public function postRules(): array - { - return [ - 'slug' => 'required|string|min:6|unique:articles', - 'title' => 'required|string|min:6|max:255', - 'publish_at' => 'required|date', - 'user_id' => 'required|uuid|exists:users,id', - 'content' => 'required|string|min:6', - 'hero' => 'required|uuid|exists:media,id', - ]; - } - - /** - * Get the validation rules that apply to PUT request. - * - * @return array - */ - public function putRules(): array - { - return [ - 'slug' => [ - 'string', - 'min:6', - Rule::unique('articles')->ignoreModel($this->article), - ], - 'title' => 'string|min:6|max:255', - 'publish_at' => 'date', - 'user_id' => 'uuid|exists:users,id', - 'content' => 'string|min:6', - 'hero' => 'uuid|exists:media,id', - ]; - } -} diff --git a/app/Http/Requests/AuthLoginRequest.php b/app/Http/Requests/AuthLoginRequest.php deleted file mode 100644 index f450276..0000000 --- a/app/Http/Requests/AuthLoginRequest.php +++ /dev/null @@ -1,21 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'email' => 'required|string|min:6|max:255', - 'password' => 'required|string|min:6', - ]; - } -} diff --git a/app/Http/Requests/BaseRequest.php b/app/Http/Requests/BaseRequest.php deleted file mode 100644 index ac1e009..0000000 --- a/app/Http/Requests/BaseRequest.php +++ /dev/null @@ -1,107 +0,0 @@ -isMethod('post') === true && method_exists($this, 'postAuthorize') === true) { - return $this->postAuthorize(); - } elseif ( - ( - request()->isMethod('put') === true || request()->isMethod('patch') === true - ) && method_exists($this, 'putAuthorize') === true - ) { - return $this->putAuthorize(); - } elseif (request()->isMethod('delete') === true && method_exists($this, 'destroyAuthorize') === true) { - return $this->deleteAuthorize(); - } - - return true; - } - - /** - * Get the validation rules that apply to the request. - * - * @return array - */ - public function rules(): array - { - $rules = []; - - if (method_exists($this, 'baseRules') === true) { - $rules = $this->baseRules(); - } - - if (method_exists($this, 'postRules') === true && request()->isMethod('post') === true) { - $rules = $this->mergeRules($rules, $this->postRules()); - } elseif ( - method_exists($this, 'putRules') === true && ( - request()->isMethod('put') === true || request()->isMethod('patch') === true - ) - ) { - $rules = $this->mergeRules($rules, $this->putRules()); - } elseif (method_exists($this, 'destroyRules') === true && request()->isMethod('delete') === true) { - $rules = $this->mergeRules($rules, $this->destroyRules()); - } - - return $rules; - } - - /** - * Merge two collections of rules. - * - * @param array $collection1 The first collection of rules. - * @param array $collection2 The second collection of rules to merge. - * @return array - */ - private function mergeRules(array $collection1, array $collection2): array - { - $rules = []; - - foreach ($collection1 as $key => $ruleset) { - if (array_key_exists($key, $collection2) === true) { - if (is_string($collection1[$key]) === true && is_string($collection2[$key]) === true) { - $rules[$key] = $collection1[$key] . '|' . $collection2[$key]; - } else { - $key_ruleset = []; - - if (is_array($collection1[$key]) === true) { - $key_ruleset = $collection1[$key]; - } elseif (is_string($collection1[$key]) === true) { - $key_ruleset = explode('|', $collection1[$key]); - } - - if (is_array($collection2[$key]) === true) { - $key_ruleset = array_merge($key_ruleset, $collection2[$key]); - } elseif (is_string($collection2[$key]) === true) { - $key_ruleset = array_merge($key_ruleset, explode('|', $collection2[$key])); - } - - if (count($key_ruleset) > 0) { - $rules[$key] = $key_ruleset; - } - }//end if - } else { - $rules[$key] = $ruleset; - }//end if - }//end foreach - - foreach ($collection2 as $key => $ruleset) { - if (array_key_exists($key, $rules) === false) { - $rules[$key] = $collection2[$key]; - } - } - - return $rules; - } -} diff --git a/app/Http/Requests/ContactSendRequest.php b/app/Http/Requests/ContactSendRequest.php deleted file mode 100644 index fc9881e..0000000 --- a/app/Http/Requests/ContactSendRequest.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'name' => 'required|max:255', - 'email' => 'required|email|max:255', - 'content' => 'required|max:2000', - // 'captcha_token' => [new Recaptcha()], - ]; - } -} diff --git a/app/Http/Requests/EventRequest.php b/app/Http/Requests/EventRequest.php deleted file mode 100644 index e6eeb99..0000000 --- a/app/Http/Requests/EventRequest.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ - public function baseRules(): array - { - return [ - 'title' => 'min:6', - 'location' => [ - Rule::in(['online', 'physical']), - ], - 'address' => 'string|nullable', - 'start_at' => 'date', - 'end_at' => 'date|after:start_date', - 'publish_at' => 'date|nullable', - 'status' => [ - Rule::in(['draft', 'soon', 'open', 'closed', 'cancelled', 'scheduled', 'full']), - ], - 'registration_type' => [ - Rule::in(['none', 'email', 'link', 'message']), - ], - 'registration_data' => [ - Rule::when(strcasecmp('email', $this->attributes->get('registration_type')) == 0, 'required|email'), - Rule::when(strcasecmp('link', $this->attributes->get('registration_type')) == 0, 'required|url'), - Rule::when(strcasecmp('message', $this->attributes->get('registration_type')) == 0, 'required|message'), - ], - 'hero' => 'uuid|exists:media,id', - 'location_url' => 'sometimes|string|max:255', - ]; - } - - /** - * Apply the additional POST base rules to this request - * - * @return array - */ - protected function postRules(): array - { - return [ - 'title' => 'required', - 'location' => 'required', - 'address' => 'required_if:location,physical', - 'start_at' => 'required', - 'end_at' => 'required', - 'status' => 'required', - 'registration_type' => 'required', - 'hero' => 'required', - ]; - } -} diff --git a/app/Http/Requests/MediaRequest.php b/app/Http/Requests/MediaRequest.php deleted file mode 100644 index 5becd25..0000000 --- a/app/Http/Requests/MediaRequest.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - Rule::requiredIf(function () { - return request()->has('chunk') && request('chunk') != 1; - }), - 'string', - ], - 'name' => [ - Rule::requiredIf(function () { - return request()->has('chunk') && request('chunk') == 1; - }), - 'string', - ], - 'chunk' => 'required_with:chunk_count|integer|min:1|max:999|lte:chunk_count', - 'chunk_count' => 'required_with:chunk|integer|min:1', - ]; - } -} diff --git a/app/Http/Requests/ShortlinkRequest.php b/app/Http/Requests/ShortlinkRequest.php deleted file mode 100644 index 2a3b67c..0000000 --- a/app/Http/Requests/ShortlinkRequest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ - public function postRules(): array - { - return [ - 'code' => 'required|string|max:255|min:2|unique:shortlinks', - 'url' => 'required|string|max:255|min:2', - ]; - } - - /** - * Get the validation rules that apply to PUT request. - * - * @return array - */ - public function putRules(): array - { - $shortlink = $this->route('shortlink'); - - return [ - 'code' => ['required', 'string', 'max:255', 'min:2', Rule::unique('shortlinks')->ignore($shortlink->id)], - 'url' => 'required|string|max:255|min:2', - ]; - } -} diff --git a/app/Http/Requests/SubscriptionRequest.php b/app/Http/Requests/SubscriptionRequest.php deleted file mode 100644 index 7395fe8..0000000 --- a/app/Http/Requests/SubscriptionRequest.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ - public function postRules(): array - { - return [ - 'email' => 'required|email|unique:subscriptions', - // 'captcha_token' => [new Recaptcha()], - ]; - } - - /** - * Get the validation rules that apply to the request. - * - * @return array - */ - public function destroyRules(): array - { - return [ - 'email' => 'required|email', - // 'captcha_token' => [new Recaptcha()], - ]; - } - - /** - * Get the custom error messages. - * - * @return array - */ - public function messages(): array - { - return [ - 'email.unique' => 'This email address has already subscribed', - ]; - } -} diff --git a/app/Http/Requests/UserForgotPasswordRequest.php b/app/Http/Requests/UserForgotPasswordRequest.php deleted file mode 100644 index c45d56f..0000000 --- a/app/Http/Requests/UserForgotPasswordRequest.php +++ /dev/null @@ -1,22 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'email' => 'required|exists:users,email', - // 'captcha_token' => [new Recaptcha()], - ]; - } -} diff --git a/app/Http/Requests/UserRegisterRequest.php b/app/Http/Requests/UserRegisterRequest.php deleted file mode 100644 index 5557663..0000000 --- a/app/Http/Requests/UserRegisterRequest.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'display_name' => ['required','string','max:255', new Uniqueish('users')], - 'email' => 'required|string|email|max:255|unique:users', - 'password' => 'required|string|min:8', - ]; - } -} diff --git a/app/Http/Requests/UserRequest.php b/app/Http/Requests/UserRequest.php deleted file mode 100644 index bcaf651..0000000 --- a/app/Http/Requests/UserRequest.php +++ /dev/null @@ -1,111 +0,0 @@ - - */ - public function postRules(): array - { - $user = auth()->user(); - $isAdminUser = $user->hasPermission('admin/users'); - - return [ - 'first_name' => ( - $isAdminUser === true ? 'required_with:last_name,display_name,phone' : 'required' - ) . '|string|max:255|min:2', - 'last_name' => ( - $isAdminUser === true ? 'required_with:first_name,display_name,phone' : 'required' - ) . '|string|max:255|min:2', - 'display_name' => [ - $isAdminUser === true ? 'required_with:first_name,last_name,phone' : 'required', - 'string', - 'max:255', - new Uniqueish('users') - ], - 'email' => 'required|string|email|max:255|unique:users', - 'phone' => ['string', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'], - 'email_verified_at' => 'date' - ]; - } - - /** - * Get the validation rules that apply to PUT request. - * - * @return array - */ - public function putRules(): array - { - $user = auth()->user(); - $ruleUser = $this->route('user'); - $isAdminUser = $user->hasPermission('admin/users'); - - $requiredIfFieldsPresent = function (array $fields) use ($ruleUser): RequiredIf { - return new RequiredIf(function () use ($fields, $ruleUser) { - $input = $this->all(); - $values = Arr::only($input, $fields); - - foreach ($values as $key => $value) { - if ($value !== null && $value !== '') { - return true; - } - } - - $fields = array_diff($fields, array_keys($values)); - - foreach ($fields as $field) { - if ($ruleUser->$field !== '') { - return true; - } - } - - return false; - }); - }; - - return [ - 'first_name' => [ - 'sometimes', - $isAdminUser === true ? $requiredIfFieldsPresent(['last_name', 'display_name', 'phone']) : 'required', - 'string', - 'between:2,255', - ], - 'last_name' => [ - 'sometimes', - $isAdminUser === true ? $requiredIfFieldsPresent(['first_name', 'last_name', 'phone']) : 'required', - 'string', - 'between:2,255', - ], - 'display_name' => [ - 'sometimes', - $isAdminUser === true ? $requiredIfFieldsPresent(['first_name', 'display_name', 'phone']) : 'required', - 'string', - 'between:2,255', - (new Uniqueish('users', 'display_name'))->ignore($ruleUser->id) - ], - 'email' => [ - 'string', - 'email', - 'max:255', - Rule::unique('users')->ignore($ruleUser->id)->when( - $this->email !== $ruleUser->email, - function ($query) { - return $query->where('email', $this->email); - } - ), - ], - 'phone' => ['nullable', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'], - 'password' => "nullable|string|min:8" - ]; - } -} diff --git a/app/Http/Requests/UserResendVerifyEmailRequest.php b/app/Http/Requests/UserResendVerifyEmailRequest.php deleted file mode 100644 index 09e6442..0000000 --- a/app/Http/Requests/UserResendVerifyEmailRequest.php +++ /dev/null @@ -1,22 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'email' => 'required|exists:users,email', - // 'captcha_token' => [new Recaptcha()], - ]; - } -} diff --git a/app/Http/Requests/UserResetPasswordRequest.php b/app/Http/Requests/UserResetPasswordRequest.php deleted file mode 100644 index 55141e5..0000000 --- a/app/Http/Requests/UserResetPasswordRequest.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'code' => 'required|digits:6', - 'password' => 'required|string|min:8', - // 'captcha_token' => [new Recaptcha()], - ]; - } -} diff --git a/app/Http/Requests/UserVerifyEmailRequest.php b/app/Http/Requests/UserVerifyEmailRequest.php deleted file mode 100644 index 29c017e..0000000 --- a/app/Http/Requests/UserVerifyEmailRequest.php +++ /dev/null @@ -1,22 +0,0 @@ - - */ - public function rules(): array - { - return [ - 'code' => 'required|digits:6', - // 'captcha_token' => [new Recaptcha()], - ]; - } -} diff --git a/app/Jobs/MediaWorkerJob.php b/app/Jobs/MediaWorkerJob.php deleted file mode 100644 index 69e1c8a..0000000 --- a/app/Jobs/MediaWorkerJob.php +++ /dev/null @@ -1,393 +0,0 @@ -mediaJob = $mediaJob; - } - - /** - * Execute the job. - * - * @return void - */ - public function handle(): void - { - $media = $this->mediaJob->media()->first(); - $newMedia = false; - $data = json_decode($this->mediaJob->data, true); - - try { - // FILE - if (array_key_exists('file', $data) === true) { - if (file_exists($data['file']) === false) { - $this->throwMediaJobFailure('temporary upload file no longer exists'); - } - - // convert HEIC files to JPG - $fileExtension = File::extension($data['file']); - if ($fileExtension === 'heic') { - $this->mediaJob->setStatusProcessing(0, 0, 'converting image'); - - // Get the path without the file name - $uploadedFileDirectory = dirname($data['file']); - - // Convert the HEIC file to JPG - $jpgFileName = pathinfo($data['file'], PATHINFO_FILENAME) . '.jpg'; - $jpgFilePath = $uploadedFileDirectory . '/' . $jpgFileName; - if (file_exists($jpgFilePath) === true) { - $this->throwMediaJobFailure('file already exists on server'); - } - - Image::make($data['file'])->save($jpgFilePath); - - // Update the uploaded file path and file name - unlink($data['file']); - $data['file'] = $jpgFileName; - }//end if - - // get security - $security = []; - if ($media === null) { - if (array_key_exists('security', $data) === true) { - $security = $data['security']; - } - } else { - $security['type'] = $media->security_type; - $security['data'] = $media->security_data; - } - - // get storage - $storage = ''; - if ($media === null) { - if (array_key_exists('storage', $data) === true) { - $storage = $data['storage']; - } - } else { - $storage = $media->storage; - } - - if ($storage === '') { - if (count($security) === 0 || $security['type'] === '') { - if (strpos($data['mime_type'], 'image/') === 0) { - $storage = 'local'; - } else { - $storage = 'cdn'; - } - } else { - $storage = 'private'; - } - } - - // Check if file already exists - $exists = Storage::disk($storage)->exists($data['name']); - if ($exists === true) { - if (array_key_exists('noreplace', $data) === true && isTrue($data['noreplace']) === true) { - $this->throwMediaJobFailure('file already exists on server'); - } - } - - if ($exists === true) { - $pathInfo = pathinfo($data['name']); - $basename = $pathInfo['filename']; - $extension = $pathInfo['extension']; - $index = 0; - - do { - $index++; - $data['name'] = $basename . '-' . $index . '.' . $extension; - } while (Storage::disk($storage)->exists($data['name']) === true); - } - - if ($media === null) { - $newMedia = true; - $media = new Media([ - 'user_id' => $this->mediaJob->user_id, - 'title' => $data['title'], - 'name' => $data['name'], - 'mime_type' => $data['mime_type'], - 'size' => $data['size'], - 'security_type' => $data['security']['type'], - 'security_data' => $data['security']['data'], - 'storage' => $storage, - ]); - }//end if - - $media->setStagingFile($data['file']); - } else { - if ($media === null) { - $this->throwMediaJobFailure('The media item no longer exists'); - } - }//end if - - if (array_key_exists('transform', $data) === true) { - $media->createStagingFile(); - - // Modifications - if (strpos($media->mime_type, 'image/') === 0) { - $modified = false; - $image = Image::make($media->getStagingFilePath()); - - // ROTATE - if (array_key_exists("rotate", $data['transform']) === true) { - $rotate = intval($data['transform']['rotate']); - if ($rotate !== 0) { - $this->mediaJob->setStatusProcessing(0, 0, 'rotating image'); - $image = $image->rotate($rotate); - $modified = true; - } - } - - // FLIP-H/V - if (array_key_exists('flip', $data['transform']) === true) { - if (stripos($data['transform']['flip'], 'h') !== false) { - $this->mediaJob->setStatusProcessing(0, 0, 'flipping image'); - $image = $image->flip('h'); - $modified = true; - } - - if (stripos($data['transform']['flip'], 'v') !== false) { - $this->mediaJob->setStatusProcessing(0, 0, 'flipping image'); - $image = $image->flip('v'); - $modified = true; - } - } - - // CROP - if (array_key_exists("crop", $data['transform']) === true) { - $cropData = $data['transform']['crop']; - $width = intval(arrayDefaultValue("width", $cropData, $image->getWidth())); - $height = intval(arrayDefaultValue("height", $cropData, $image->getHeight())); - $x = intval(arrayDefaultValue("x", $cropData, 0)); - $y = intval(arrayDefaultValue("y", $cropData, 0)); - - $this->mediaJob->setStatusProcessing(0, 0, 'cropping image'); - $image = $image->crop($width, $height, $x, $y); - $modified = true; - }//end if - - if ($modified === true) { - $image->save(); - } - } elseif (strpos($data['mime_type'], 'video/') === 0) { - $stagingFilePath = $media->getStagingFilePath(); - $ffmpeg = FFMpeg\FFMpeg::create(); - $video = $ffmpeg->open($stagingFilePath); - $format = $this->detectVideoFormat($stagingFilePath); - $modified = false; - - if ($format === null) { - $this->mediaJob->setStatusFailed('Unsupported video format'); - return; - } - - /** @var FFMpeg\Media\Video::filters */ - $filters = $video->filters(); - - // ROTATE - if (array_key_exists("rotate", $data['transform']) === true) { - $rotate = intval($data['transform']['rotate']); - $rotate = (($rotate % 360 + 360) % 360); // remove excess rotations - $rotate = intval(round($rotate / 90) * 90); // round to nearest 90% - - if ($rotate > 0) { - $this->mediaJob->setStatusProcessing(0, 0, 'rotating video'); - - if ($rotate === 90) { - $filters->rotate(FFMpeg\Filters\Video\RotateFilter::ROTATE_270); - $modified = true; - } elseif ($rotate === 180) { - $filters->rotate(FFMpeg\Filters\Video\RotateFilter::ROTATE_180); - $modified = true; - } elseif ($rotate === 270) { - $filters->rotate(FFMpeg\Filters\Video\RotateFilter::ROTATE_90); - $modified = true; - } - } - } - - // FLIP-H/V - if (array_key_exists('flip', $data['transform']) === true) { - if (stripos($data['transform']['flip'], 'h') !== false) { - $this->mediaJob->setStatusProcessing(0, 0, 'flipping video'); - $filters->hflip()->synchronize(); - $modified = true; - } - - if (stripos($data['transform']['flip'], 'v') !== false) { - $this->mediaJob->setStatusProcessing(0, 0, 'flipping video'); - $filters->vflip()->synchronize(); - $modified = true; - } - } - - // CROP - if (array_key_exists("crop", $data['transform']) === true) { - $cropData = $data['transform']['crop']; - $videoStream = $video->getStreams()->videos()->first(); - - $width = intval(arrayDefaultValue("width", $cropData, $videoStream->get('width'))); - $height = intval(arrayDefaultValue("height", $cropData, $videoStream->get('height'))); - $x = intval(arrayDefaultValue("x", $cropData, 0)); - $y = intval(arrayDefaultValue("y", $cropData, 0)); - - $cropDimension = new Dimension($width, $height); - - $this->mediaJob->setStatusProcessing(0, 0, 'cropping video'); - $filters->crop($cropDimension, $x, $y)->synchronize(); - $modified = true; - }//end if - - $tempFilePath = generateTempFilePath(pathinfo($stagingFilePath, PATHINFO_EXTENSION)); - if (method_exists($format, 'on') === true) { - $mediaJob = $this->mediaJob; - $format->on('progress', function ($video, $format, $percentage) use ($mediaJob) { - $mediaJob->setStatusProcessing($percentage, 100, 'transcoded'); - }); - } - - if ($modified === true) { - $video->save($format, $tempFilePath); - $media->changeStagingFile($tempFilePath); - } - }//end if - }//end if - - // Update attributes - if (array_key_exists('title', $data) === true) { - $media->title = $data['title']; - } - - // Relocate file (if requested) - if (array_key_exists('security', $data) === true && array_key_exists('type', $data['security']) === true) { - $media->security_type = $data['security']['type']; - $media->security_data = $data['security']['data']; - } - - if (array_key_exists('storage', $data) === true) { - if ($media->storage !== $data['storage']) { - $media->createStagingFile(); - Storage::disk($media->storage)->delete($media->name); - $media->storage = $data['storage']; - } - } - - // Finish media object - if ($media->hasStagingFile() === true) { - $this->mediaJob->setStatusProcessing(0, 0, 'transferring to cdn'); - $media->deleteFile(); - $media->saveStagingFile(true); - } - - $media->save(); - $this->mediaJob->media_id = $media->id; - $this->mediaJob->setStatusComplete(); - } catch (\Exception $e) { - if ($this->mediaJob->status !== 'failed') { - $this->mediaJob->setStatusFailed('Unexpected server error occurred'); - } - - if ($media !== null) { - $media->deleteStagingFile(); - if ($newMedia === true) { - $media->delete(); - } - } - - Log::error($e->getMessage() . "\n" . $e->getFile() . " - " . $e->getLine() . "\n" . $e->getTraceAsString()); - $this->fail($e); - }//end try - } - - /** - * Detects the format of a video using FFProbe - * - * @param string $videoPath The video file path. - * @return VideoInterface | null - */ - public function detectVideoFormat(string $videoPath): VideoInterface | null - { - $ffprobe = FFProbe::create(); - - $videoStream = $ffprobe - ->streams($videoPath) // Provide the path to the video file - ->videos() // Filter video streams - ->first(); - - $codecName = $videoStream->get('codec_name'); - - $codecToFormatClass = [ - 'h264' => 'FFMpeg\Format\Video\X264', - 'wmv2' => 'FFMpeg\Format\Video\WMV', - 'vp9' => 'FFMpeg\Format\Video\WebM', - 'theora' => 'FFMpeg\Format\Video\Ogg', - 'mpeg4' => 'FFMpeg\Format\Video\Mpeg4', - // Add more mappings as needed - ]; - - if (isset($codecToFormatClass[$codecName]) === false) { - Log::info("Unsupported codec: $codecName"); - return null; - } - - $formatClassName = $codecToFormatClass[$codecName]; - - if (class_exists($formatClassName) === false) { - Log::info("Format class does not exist: $formatClassName"); - return null; - } - - return new $formatClassName(); - } - - /** - * Set failure status of MediaJob and throw exception. - * - * @param string $error The failure message. - * @return void - */ - private function throwMediaJobFailure(string $error): void - { - $this->mediaJob->setStatusFailed($error); - throw new \Exception($error); - } -} diff --git a/app/Jobs/SendEmailJob.php b/app/Jobs/SendEmailJob.php deleted file mode 100644 index 89d7d1f..0000000 --- a/app/Jobs/SendEmailJob.php +++ /dev/null @@ -1,57 +0,0 @@ -to = $to; - $this->mailable = $mailable; - } - - /** - * Execute the job. - * - * @return void - */ - public function handle(): void - { - Mail::to($this->to)->send($this->mailable); - } -} diff --git a/app/Mail/ChangeEmailVerify.php b/app/Mail/ChangeEmailVerify.php deleted file mode 100644 index dc7618f..0000000 --- a/app/Mail/ChangeEmailVerify.php +++ /dev/null @@ -1,79 +0,0 @@ -user = $user; - $this->code = $code; - $this->new_email = $new_email; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '👋🏻 Lets change your email!', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.change_email_verify', - text: 'emails.user.change_email_verify_plain', - ); - } -} diff --git a/app/Mail/ChangedEmail.php b/app/Mail/ChangedEmail.php deleted file mode 100644 index ded99d1..0000000 --- a/app/Mail/ChangedEmail.php +++ /dev/null @@ -1,79 +0,0 @@ -user = $user; - $this->old_email = $old_email; - $this->new_email = $new_email; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '👍 Your email has been changed!', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.changed_email', - text: 'emails.user.changed_email_plain', - ); - } -} diff --git a/app/Mail/ChangedPassword.php b/app/Mail/ChangedPassword.php deleted file mode 100644 index ecc62c2..0000000 --- a/app/Mail/ChangedPassword.php +++ /dev/null @@ -1,61 +0,0 @@ -user = $user; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '👍 Your password has been changed!', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.changed_password', - text: 'emails.user.changed_password_plain', - ); - } -} diff --git a/app/Mail/Contact.php b/app/Mail/Contact.php deleted file mode 100644 index db4924e..0000000 --- a/app/Mail/Contact.php +++ /dev/null @@ -1,78 +0,0 @@ -name = $name; - $this->email = $email; - $this->content = $content; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: config('contact.contact_subject'), - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.contact', - text: 'emails.user.contact_plain', - ); - } -} diff --git a/app/Mail/EmailVerify.php b/app/Mail/EmailVerify.php deleted file mode 100644 index 4f23fd4..0000000 --- a/app/Mail/EmailVerify.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->code = $code; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '👋🏻 Welcome to STEMMechanics!', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.email_verify', - text: 'emails.user.email_verify_plain', - ); - } -} diff --git a/app/Mail/ExceptionMail.php b/app/Mail/ExceptionMail.php deleted file mode 100644 index 1728ee2..0000000 --- a/app/Mail/ExceptionMail.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ - public function attachments(): array - { - return []; - } -} diff --git a/app/Mail/ForgotPassword.php b/app/Mail/ForgotPassword.php deleted file mode 100644 index f182c43..0000000 --- a/app/Mail/ForgotPassword.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->code = $code; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '🤦 Forgot your password?', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.forgot_password', - text: 'emails.user.forgot_password_plain', - ); - } -} diff --git a/app/Mail/SubscriptionConfirm.php b/app/Mail/SubscriptionConfirm.php deleted file mode 100644 index 3eca6dd..0000000 --- a/app/Mail/SubscriptionConfirm.php +++ /dev/null @@ -1,61 +0,0 @@ -email = $email; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: '🗞️ You\'re on the mailing list!', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.subscription_confirm', - text: 'emails.user.subscription_confirm_plain', - ); - } -} diff --git a/app/Mail/SubscriptionUnsubscribed.php b/app/Mail/SubscriptionUnsubscribed.php deleted file mode 100644 index 552c4a4..0000000 --- a/app/Mail/SubscriptionUnsubscribed.php +++ /dev/null @@ -1,61 +0,0 @@ -email = $email; - } - - /** - * Get the message envelope. - * - * @return Illuminate\Mail\Mailables\Envelope - */ - public function envelope(): Envelope - { - return new Envelope( - subject: 'You have been unsubscribed', - ); - } - - /** - * Get the message content definition. - * - * @return Illuminate\Mail\Mailables\Content - */ - public function content(): Content - { - return new Content( - view: 'emails.user.subscription_unsubscribed', - text: 'emails.user.subscription_unsubscribed_plain', - ); - } -} diff --git a/app/Models/AnalyticsItemRequest.php b/app/Models/AnalyticsItemRequest.php deleted file mode 100644 index a130017..0000000 --- a/app/Models/AnalyticsItemRequest.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ - protected $fillable = [ - 'type', - 'path' - ]; - - - /** - * Model Boot. - * - * @return void - */ - protected static function boot() - { - parent::boot(); - - static::creating(function (AnalyticsItemRequest $analytics) { - if (isset($analytics->session_id) !== true) { - $request = request(); - if ($request !== null) { - $session = AnalyticsSession::where('ip', $request->ip()) - ->where('useragent', $request->userAgent()) - ->where('ended_at', '>=', now()->subMinutes(30)) - ->first(); - if ($session === null) { - $session = AnalyticsSession::create([ - 'ip' => $request->ip(), - 'useragent' => $request->userAgent(), - 'ended_at' => now() - ]); - } else { - $session->update(['ended_at' => now()]); - } - - $analytics->session_id = $session->id; - } - }//end if - }); - } - - /** - * Return the Analytics Session model. - * - * @return BelongsTo - */ - public function session(): BelongsTo - { - return $this->belongsTo(AnalyticsSession::class, 'id', 'session_id'); - } -} diff --git a/app/Models/AnalyticsSession.php b/app/Models/AnalyticsSession.php deleted file mode 100644 index 3e7b653..0000000 --- a/app/Models/AnalyticsSession.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - protected $fillable = [ - 'ip', - 'useragent', - 'ended_at' - ]; - - /** - * Set the "useragent" attribute. - * - * @param mixed $value - * @return void - */ - public function setUseragentAttribute($value) - { - $this->attributes['useragent'] = $value !== null ? $value : ''; - } - - /** - * Returns the related requests for this session. - * - * @return Illuminate\Database\Eloquent\Relations\HasMany - */ - public function requests(): HasMany { - return $this->hasMany(AnalyticsItemRequest::class, 'session_id', 'id'); - } - -} diff --git a/app/Models/Article.php b/app/Models/Article.php deleted file mode 100644 index bf23035..0000000 --- a/app/Models/Article.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ - protected $fillable = [ - 'title', - 'slug', - 'publish_at', - 'content', - 'user_id', - 'hero' - ]; - - - /** - * Get the article user - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Models/Attachment.php b/app/Models/Attachment.php deleted file mode 100644 index 37848f8..0000000 --- a/app/Models/Attachment.php +++ /dev/null @@ -1,86 +0,0 @@ - - */ - protected $fillable = [ - 'media_id', - 'private', - ]; - - /** - * The default attributes. - * - * @var string[] - */ - protected $attributes = [ - 'private' => false, - ]; - - - /** - * Get the media for this attachment. - * - * @return BelongsTo - */ - public function media(): BelongsTo - { - return $this->belongsTo(Media::class); - } - - /** - * Get associated Media object. - * - * @return null|Media - */ - public function getMediaAttribute(): ?Media - { - $mediaId = '0'; - $media = null; - - if (Cache::has("attachment:{$this->id}:media") === true) { - $mediaId = Cache::get("attachment:{$this->id}:media"); - } else { - $media = $this->media()->first(); - if ($media === null) { - return null; - } - - $mediaId = $media->id; - Cache::put("attachment:{$this->id}:media", $mediaId, now()->addDays(28)); - } - - return Cache::remember("media:{$mediaId}", now()->addDays(28), function () use ($media) { - if ($media !== null) { - return $media; - } - - return $this->media()->first(); - }); - } - - /** - * Set the media for this item. - * - * @param Media $media The media model. - * @return void - */ - public function setMediaAttribute(Media $media): void - { - $this->media()->associate($media)->save(); - Cache::put("attachment:{$this->id}:media", $media->id, now()->addDays(28)); - } -} diff --git a/app/Models/Event.php b/app/Models/Event.php deleted file mode 100644 index 54c36e7..0000000 --- a/app/Models/Event.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ - protected $fillable = [ - 'title', - 'location', - 'location_url', - 'address', - 'start_at', - 'end_at', - 'publish_at', - 'status', - 'registration_type', - 'registration_data', - 'hero', - 'content', - 'price', - 'ages', - 'open_at', - ]; - - - /** - * Get all the associated users. - * - * @return BelongsToMany - */ - public function users(): BelongsToMany - { - return $this->belongsToMany(User::class, 'event_user', 'event_id', 'user_id'); - } -} diff --git a/app/Models/EventUsers.php b/app/Models/EventUsers.php deleted file mode 100644 index 5ba5daa..0000000 --- a/app/Models/EventUsers.php +++ /dev/null @@ -1,45 +0,0 @@ - - */ - protected $fillable = [ - 'event_id', - 'user_id', - ]; - - - /** - * Get the event for this attachment. - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function event(): BelongsTo - { - return $this->belongsTo(Event::class); - } - - /** - * Get the user for this attachment. - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Models/Gallery.php b/app/Models/Gallery.php deleted file mode 100644 index c453af8..0000000 --- a/app/Models/Gallery.php +++ /dev/null @@ -1,107 +0,0 @@ - - */ - protected $fillable = [ - 'media_id', - ]; - - - /** - * Boot the model. - * - * @return void - */ - protected static function boot(): void - { - parent::boot(); - - $clearCache = function ($gallery) { - Cache::forget("gallery:{$gallery->id}:media"); - }; - - static::saving($clearCache); - static::deleting($clearCache); - } - - /** - * Get gallery addendum model. - * - * @return Illuminate\Database\Eloquent\Relations\MorphTo Addenum model. - */ - public function addendum(): MorphTo - { - return $this->morphTo(); - } - - /** - * Get the media for this item. - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo The media model. - */ - public function media(): BelongsTo - { - return $this->belongsTo(Media::class); - } - - /** - * Get the media for this item. - * - * @return null|Media The media model. - */ - public function getMediaAttribute(): ?Media - { - $mediaId = '0'; - $media = null; - - if (Cache::has("gallery:{$this->id}:media") === true) { - $mediaId = Cache::get("gallery:{$this->id}:media"); - } else { - $media = $this->media()->first(); - if ($media === null) { - return null; - } - - $mediaId = $media->id; - Cache::put("gallery:{$this->id}:media", $mediaId, now()->addDays(28)); - } - - return Cache::remember("media:{$mediaId}", now()->addDays(28), function () use ($media) { - if ($media !== null) { - return $media; - } - - return $this->media()->first(); - }); - } - - /** - * Set the media for this item. - * - * @param Media $media The media model. - * @return void - */ - public function setMediaAttribute(Media $media): void - { - $this->media()->associate($media)->save(); - Cache::put("gallery:{$this->id}:media", $media->id, now()->addDays(28)); - } -} diff --git a/app/Models/Media.php b/app/Models/Media.php deleted file mode 100644 index 2bcb6e8..0000000 --- a/app/Models/Media.php +++ /dev/null @@ -1,1064 +0,0 @@ - - */ - protected $fillable = [ - 'title', - 'user_id', - 'mime_type', - 'security_type', - 'security_data', - 'storage', - 'description', - 'name', - 'size', - ]; - - /** - * The attributes that are appended. - * - * @var array - */ - protected $appends = [ - 'url', - ]; - - /** - * The default attributes. - * - * @var string[] - */ - protected $attributes = [ - 'storage' => 'cdn', - 'variants' => '[]', - 'description' => '', - 'dimensions' => '', - 'security_type' => '', - 'security_data' => '', - 'thumbnail' => '', - ]; - - /** - * The storage file list cache. - * - * @var array - */ - protected static $storageFileListCache = []; - - /** - * Object variant details. - * - * @var int[][][] - */ - protected static $objectVariants = [ - 'image' => [ - 'small' => ['width' => 300, 'height' => 225], - 'medium' => ['width' => 768, 'height' => 576], - 'large' => ['width' => 1024, 'height' => 768], - 'xlarge' => ['width' => 1536, 'height' => 1152], - 'xxlarge' => ['width' => 2048, 'height' => 1536], - 'scaled' => ['width' => 2560, 'height' => 1920] - ] - ]; - - /** - * Staging file path of asset for processing. - * - * @var string - */ - private $stagingFilePath = ""; - - - /** - * Model Boot - * - * @return void - */ - protected static function boot(): void - { - parent::boot(); - - $clearCache = function ($media) { - Cache::forget("media:{$media->id}"); - }; - - static::updating(function ($media) use ($clearCache) { - $clearCache($media); - }); - - static::deleting(function ($media) use ($clearCache) { - $clearCache($media); - $media->deleteFile(); - }); - } - - /** - * Get Object Variants. - * - * @param string $type The variant object to get. - * @return array The variant data. - */ - public static function getObjectVariants(string $type): array - { - if (isset(self::$objectVariants[$type]) === true) { - return self::$objectVariants[$type]; - } - - return []; - } - - /** - * Variants Get Mutator. - * - * @param mixed $value The value to mutate. - * @param boolean $raw Values are not run through urlencode. - * @return array|null The mutated value. - */ - public function getVariantsAttribute(mixed $value, bool $raw = false): array|null - { - if (is_string($value) === true) { - $decodedValue = json_decode($value, true); - - // Check if the decoded value is an array - if ($raw === false && is_array($decodedValue) === true) { - // Loop through the array and encode each value - foreach ($decodedValue as &$item) { - if (is_string($item) === true) { - $item = rawurlencode($item); - } - } - } - - return $decodedValue; - } - - return []; - } - - /** - * Variants Set Mutator. - * - * @param mixed $value The value to mutate. - * @return void - */ - public function setVariantsAttribute(mixed $value): void - { - if (is_array($value) !== true) { - $value = []; - } - - $this->attributes['variants'] = json_encode(($value ?? [])); - } - - /** - * Get previous variant. - * - * @param string $type The variant type. - * @param string $variant The initial variant. - * @return string The previous variant name (or ''). - */ - public function getPreviousVariant(string $type, string $variant): string - { - if (isset(self::$objectVariants[$type]) === false) { - return ''; - } - - $variants = self::$objectVariants[$type]; - $keys = array_keys($variants); - - $currentIndex = array_search($variant, $keys); - if ($currentIndex === false || $currentIndex === 0) { - return ''; - } - - return $keys[($currentIndex - 1)]; - } - - /** - * Get next variant. - * - * @param string $type The variant type. - * @param string $variant The initial variant. - * @return string The next variant name (or ''). - */ - public function getNextVariant(string $type, string $variant): string - { - if (isset(self::$objectVariants[$type]) === false) { - return ''; - } - - $variants = self::$objectVariants[$type]; - $keys = array_keys($variants); - - $currentIndex = array_search($variant, $keys); - if ($currentIndex === false || $currentIndex === (count($keys) - 1)) { - return ''; - } - - return $keys[($currentIndex + 1)]; - } - - /** - * Get variant URL. - * - * @param string $variant The variant to find. - * @param boolean $returnNearest Return the nearest variant if request is not found. - * @return string The URL. - */ - public function getVariantURL(string $variant, bool $returnNearest = true): string - { - $variants = $this->variants; - if (isset($variants[$variant]) === true) { - return self::getUrlPath(['name' => $variants[$variant]]); - } - - if ($returnNearest === true) { - $variantType = explode('/', $this->mime_type)[0]; - $previousVariant = $variant; - while (empty($previousVariant) === false) { - $previousVariant = $this->getPreviousVariant($variantType, $previousVariant); - if (empty($previousVariant) === false && isset($variants[$previousVariant]) === true) { - return self::getUrlPath(['name' => $variants[$previousVariant]]); - } - } - } - - return ''; - } - - /** - * Delete file and associated files with the modal. - * - * @return void - */ - public function deleteFile(): void - { - if ( - strlen($this->storage) > 0 && strlen($this->name) > 0 && - Storage::disk($this->storage)->exists($this->name) === true - ) { - Storage::disk($this->storage)->delete($this->name); - } - - $this->deleteThumbnail(); - $this->deleteVariants(); - $this->invalidateCFCache(); - } - - /** - * Invalidate Cloudflare Cache. - * - * @return void - */ - private function invalidateCFCache(): void - { - $zone_id = env("CLOUDFLARE_ZONE_ID"); - $api_key = env("CLOUDFLARE_API_KEY"); - if ($zone_id !== null && $api_key !== null && $this->url !== "") { - $urls = [$this->url]; - - foreach ($this->variants as $variant => $name) { - $urls[] = str_replace($this->name, $name, $this->url); - } - - $curl = curl_init(); - curl_setopt_array($curl, [ - CURLOPT_URL => "https://api.cloudflare.com/client/v4/zones/" . $zone_id . "/purge_cache", - CURLOPT_RETURNTRANSFER => true, - CURLOPT_CUSTOMREQUEST => "DELETE", - CURLOPT_POSTFIELDS => json_encode(["files" => $urls]), - CURLOPT_HTTPHEADER => [ - "Content-Type: application/json", - "Authorization: Bearer " . $api_key - ], - ]); - curl_exec($curl); - curl_close($curl); - }//end if - } - - /** - * Get URL path - * - * @param array $replacements Replace variables in URL. - * @return string - */ - public function getUrlPath(array $replacements = []): string - { - $url = config("filesystems.disks.$this->storage.url"); - - if (empty($replacements) !== true) { - foreach ($replacements as $key => $value) { - $placeholder = '{' . $key . '}'; - $url = str_replace($placeholder, $value, $url); - } - } - - // Remove any remaining {x} placeholders - $url = preg_replace('/\{[^}]+\}/', '', $url); - - return "$url"; - } - - /** - * Return the file URL - * - * @return string - */ - public function getUrlAttribute(): string - { - $url = self::getUrlPath([ - 'id' => rawurlencode($this->id), - 'name' => rawurlencode($this->name) - ]); - - return $url; - } - - /** - * Return the file owner - * - * @return BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } - - /** - * Transform the media through the Media Job Queue - * - * @param array $transform The transform data. - * @return MediaJob - */ - public function transform(array $transform): MediaJob - { - $mediaJob = new MediaJob([ - 'media_id' => $this->media, - 'user_id' => auth()->user()?->id, - 'data' => json_encode(['transform' => $transform]), - ]); - - try { - MediaWorkerJob::dispatch($mediaJob)->onQueue('media'); - return $mediaJob; - } catch (\Exception $e) { - $this->error('Failed to transform media'); - throw $e; - }//end try - - return null; - } - - /** - * Get the server maximum upload size - * - * @return integer - */ - public static function getMaxUploadSize(): int - { - $sizes = [ - ini_get('upload_max_filesize'), - ini_get('post_max_size'), - ini_get('memory_limit') - ]; - - foreach ($sizes as &$size) { - $size = trim($size); - $last = strtolower($size[(strlen($size) - 1)]); - switch ($last) { - case 'g': - $size = (intval($size) * 1024); - // Size is in MB - fallthrough - case 'm': - $size = (intval($size) * 1024); - // Size is in KB - fallthrough - case 'k': - $size = (intval($size) * 1024); - // Size is in B - fallthrough - } - } - - return min($sizes); - } - - /** - * Generate a file name that is available within storage. - * - * @param string $fileName The proposed file name. - * @return string|boolean The available file name or false if failed. - */ - public static function generateUniqueFileName(string $fileName) - { - $index = 1; - $maxTries = 100; - $extension = pathinfo($fileName, PATHINFO_EXTENSION); - $fileName = static::sanitizeFilename(pathinfo($fileName, PATHINFO_FILENAME)); - - if ( - static::fileNameHasSuffix($fileName) === true || - static::fileExistsInStorage("$fileName.$extension") === true //|| - // Media::where('name', "$fileName.$extension")->where('status', 'not like', 'failed%')->exists() === true - ) { - $fileName .= '-'; - for ($i = 1; $i < $maxTries; $i++) { - $fileNameIndex = $fileName . $index; - if ( - static::fileExistsInStorage("$fileNameIndex.$extension") !== true && - Media::where('name', "$fileNameIndex.$extension") - // ->where('status', 'not like', 'Failed%') - ->exists() !== true - ) { - return "$fileNameIndex.$extension"; - } - - ++$index; - } - - return false; - } - - return "$fileName.$extension"; - } - - /** - * Determines if the file name exists in any of the storage disks. - * - * @param string $fileName The file name to check. - * @param boolean $ignoreCache Ignore the file list cache. - * @return boolean If the file exists on any storage disks. - */ - public static function fileExistsInStorage(string $fileName, bool $ignoreCache = false): bool - { - $disks = array_keys(Config::get('filesystems.disks')); - - if ($ignoreCache === false) { - if (count(static::$storageFileListCache) === 0) { - $disks = array_keys(Config::get('filesystems.disks')); - - foreach ($disks as $disk) { - try { - static::$storageFileListCache[$disk] = Storage::disk($disk)->allFiles(); - } catch (\Exception $e) { - Log::error("Cannot get a file list for storage device '$disk'. Error: " . $e->getMessage()); - continue; - } - } - } - - foreach (static::$storageFileListCache as $disk => $files) { - if (in_array($fileName, $files) === true) { - return true; - } - } - } else { - $disks = array_keys(Config::get('filesystems.disks')); - - foreach ($disks as $disk) { - try { - if (Storage::disk($disk)->exists($fileName) === true) { - return true; - } - } catch (\Exception $e) { - Log::error($e->getMessage()); - throw new \Exception("Cannot verify if file '$fileName' already exists in storage device '$disk'"); - } - } - }//end if - - return false; - } - - /** - * Test if the file name contains a special suffix. - * - * @param string $fileName The file name to test. - * @return boolean If the file name contains the special suffix. - */ - public static function fileNameHasSuffix(string $fileName): bool - { - $suffix = '/(-\d+x\d+|-scaled|-thumb)$/i'; - $fileNameWithoutExtension = pathinfo($fileName, PATHINFO_FILENAME); - - return preg_match($suffix, $fileNameWithoutExtension) === 1; - } - - /** - * Sanitize fileName for upload - * - * @param string $fileName Filename to sanitize. - * @return string - */ - private static function sanitizeFilename(string $fileName): string - { - /* - # file system reserved https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words - [<>:"/\\\|?*]| - - # control characters http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx - [\x00-\x1F]| - - # non-printing characters DEL, NO-BREAK SPACE, SOFT HYPHEN - [\x7F\xA0\xAD]| - - # URI reserved https://www.rfc-editor.org/rfc/rfc3986#section-2.2 - [#\[\]@!$&\'()+,;=]| - - # URL unsafe characters https://www.ietf.org/rfc/rfc1738.txt - [{}^\~`] - */ - - $fileName = preg_replace( - '~ - [<>:"/\\\|?*]| - [\x00-\x1F]| - [\x7F\xA0\xAD]| - [#\[\]@!$&\'()+,;=]| - [{}^\~`] - ~x', - '-', - $fileName - ); - - $fileName = ltrim($fileName, '.-'); - - $fileName = preg_replace([ - // "file name.zip" becomes "file-name.zip" - '/ +/', - // "file___name.zip" becomes "file-name.zip" - '/_+/', - // "file---name.zip" becomes "file-name.zip" - '/-+/' - ], '-', $fileName); - $fileName = preg_replace([ - // "file--.--.-.--name.zip" becomes "file.name.zip" - '/-*\.-*/', - // "file...name..zip" becomes "file.name.zip" - '/\.{2,}/' - ], '.', $fileName); - // lowercase for windows/unix interoperability http://support.microsoft.com/kb/100625 - $fileName = mb_strtolower($fileName, mb_detect_encoding($fileName)); - // ".file-name.-" becomes "file-name" - $fileName = trim($fileName, '.-'); - - $ext = pathinfo($fileName, PATHINFO_EXTENSION); - $fileName = mb_strcut( - pathinfo($fileName, PATHINFO_FILENAME), - 0, - (255 - ($ext !== '' ? strlen($ext) + 1 : 0)), - mb_detect_encoding($fileName) - ) . ($ext !== '' ? '.' . $ext : ''); - return $fileName; - } - - /** - * Get the Staging File path. - * - * @param boolean $create Create staging file if doesn't exist. - * @return string - */ - public function getStagingFilePath(bool $create = true): string - { - if ($this->stagingFilePath === "" && $create === true) { - $this->createStagingFile(); - } - - return $this->stagingFilePath; - } - - /** - * Set the Staging File for processing. - * - * @param string $path The path if the new staging file. - * @param boolean $overwrite Overwrite existing file. - * @return void - */ - public function setStagingFile(string $path, bool $overwrite = false): void - { - if ($this->stagingFilePath !== "") { - if ($overwrite === true) { - unlink($this->stagingFilePath); - } else { - // ignore request - return; - } - } - - $this->stagingFilePath = $path; - } - - /** - * Download temporary copy of the storage file for staging. - * - * @return boolean If download was successful. - */ - public function createStagingFile(): bool - { - if ($this->stagingFilePath === "") { - $readStream = Storage::disk($this->storage)->readStream($this->name); - $filePath = generateTempFilePath(pathinfo($this->name, PATHINFO_EXTENSION)); - - $writeStream = fopen($filePath, 'w'); - while (feof($readStream) !== true) { - fwrite($writeStream, fread($readStream, 8192)); - } - fclose($readStream); - fclose($writeStream); - - $this->stagingFilePath = $filePath; - }//end if - - return $this->stagingFilePath !== ""; - } - - /** - * Save the Staging File to storage - * - * @param boolean $delete Delete the existing staging file. - * @param boolean $silent Update the status field with the progress. - * @return void - */ - public function saveStagingFile(bool $delete = true, bool $silent = false): void - { - if ($this->stagingFilePath !== '') { - if (strlen($this->storage) > 0 && strlen($this->name) > 0) { - if (Storage::disk($this->storage)->exists($this->name) === true) { - Storage::disk($this->storage)->delete($this->name); - } - - /** @var Illuminate\Filesystem\FilesystemAdapter */ - $fileSystem = Storage::disk($this->storage); - $fileSystem->putFileAs('/', $this->stagingFilePath, $this->name); - } - - $this->generateThumbnail(); - $this->generateVariants(); - - if ($delete === true) { - $this->deleteStagingFile(); - } - }//end if - } - - /** - * Clean up temporary file. - * - * @return void - */ - public function deleteStagingFile(): void - { - if ($this->stagingFilePath !== "") { - unlink($this->stagingFilePath); - $this->stagingFilePath = ""; - } - } - - /** - * Change staging file, removing the old file if present - * - * @param string $newFile The new staging file. - * @return void - */ - public function changeStagingFile(string $newFile): void - { - if ($this->stagingFilePath !== "") { - unlink($this->stagingFilePath); - } - - $this->stagingFilePath = $newFile; - } - - /** - * Is a staging file present - * - * @return boolean - */ - public function hasStagingFile(): bool - { - return $this->stagingFilePath !== ""; - } - - /** - * Generate a Thumbnail for this media. - * - * @return boolean If generation was successful. - */ - public function generateThumbnail(): bool - { - $thumbnailWidth = 200; - $thumbnailHeight = 200; - - // delete existing thumbnail - if (strlen($this->thumbnail) !== 0) { - $path = pathinfo($this->thumbnail, PATHINFO_BASENAME); - if (strlen($path) > 0 && Storage::disk($this->storage)->exists($path) === true) { - Storage::disk($this->storage)->delete($path); - } - } - - $filePath = $this->getStagingFilePath(); - - $fileExtension = File::extension($this->name); - $tempImagePath = tempnam(sys_get_temp_dir(), 'thumb'); - $newFilename = pathinfo($this->name, PATHINFO_FILENAME) . "-" . uniqid() . "-thumb.webp"; - $success = false; - - if ($this->security_type === '') { - if (strpos($this->mime_type, 'image/') === 0) { - $image = Image::make($filePath); - $image->orientate(); - $image->resize($thumbnailWidth, $thumbnailHeight, function ($constraint) { - $constraint->aspectRatio(); - }); - $image->fit($thumbnailWidth, $thumbnailHeight); - $image->encode('webp', 75)->save($tempImagePath); - $success = true; - } elseif ($this->mime_type === 'application/pdf' && extension_loaded('imagick') === true) { - $pdfPreview = new \Imagick(); - $pdfPreview->setResolution(300, 300); - $pdfPreview->readImage($filePath . '[0]'); - $pdfPreview->setImageFormat('webp'); - $pdfPreview->thumbnailImage($thumbnailWidth, $thumbnailHeight, true); - file_put_contents($tempImagePath, $pdfPreview); - - $success = true; - } elseif ($this->mime_type === 'text/plain') { - $image = Image::canvas($thumbnailWidth, $thumbnailHeight, '#FFFFFF'); - - // Read the first few lines of the text file - $numLines = 5; - $text = file_get_contents($filePath); - $lines = explode("\n", $text); - $previewText = implode("\n", array_slice($lines, 0, $numLines)); - - // Center the text on the image - $fontSize = 8; - $textColor = '#000000'; // Black text color - - // Calculate the position to start drawing the text - $x = 10; // Left padding - $y = 10; // Top padding - - // Draw the text on the canvas with text wrapping - $lines = explode("\n", wordwrap($previewText, 30, "\n", true)); - foreach ($lines as $line) { - $image->text($line, $x, $y, function ($font) use ($fontSize, $textColor) { - $font->file(1); - $font->size($fontSize); - $font->color($textColor); - }); - - // Move to the next line - $y += ($fontSize + 4); // Add some vertical spacing between lines (adjust as needed) - } - - $image->encode('webp', 75)->save($tempImagePath); - - $success = true; - } elseif (strpos($this->mime_type, 'video/') === 0) { - $tempImagePath .= '.webp'; - - try { - $ffmpeg = FFMpeg::create(); - $video = $ffmpeg->open($filePath); - $frame = $video->frame(TimeCode::fromSeconds(5)); - $frame->save($tempImagePath); - } catch (\Exception $e) { - Log::error($e); - } - - $success = true; - }//end if - }//end if - - if ($success === true && file_exists($tempImagePath) === true) { - /** @var Illuminate\Filesystem\FilesystemAdapter */ - $fileSystem = Storage::disk($this->storage); - $fileSystem->putFileAs('/', new SplFileInfo($tempImagePath), $newFilename); - unlink($tempImagePath); - - $this->thumbnail = $this->getUrlPath(['name' => $newFilename]); - } else { - $iconExtension = 'unknown'; - if ($fileExtension !== '') { - $iconPath = public_path('assets/fileicons/' . $fileExtension . '.webp'); - if (file_exists($iconPath) === true) { - $iconExtension = $fileExtension; - } - } - - $this->thumbnail = asset('/assets/fileicons/' . $iconExtension . '.webp'); - } - - return $success; - } - - /** - * Delete Media Thumbnail from storage. - * - * @return void - */ - public function deleteThumbnail(): void - { - if (strlen($this->thumbnail) > 0) { - $path = pathinfo($this->thumbnail, PATHINFO_BASENAME); - - if (strlen($path) > 0 && Storage::disk($this->storage)->exists($path) === true) { - Storage::disk($this->storage)->delete($path); - $this->thumbnail = ''; // Clear the thumbnail property - } - } - } - - /** - * Generate variants for this media. - * - * @return void - */ - public function generateVariants(): void - { - // delete existing variants - if (is_array($this->variants) === true) { - foreach ($this->variants as $variantName => $variantFile) { - if (Storage::disk($this->storage)->exists($variantFile) === true) { - Storage::disk($this->storage)->delete($variantFile); - } - } - } - $this->variants = []; - - if ($this->security_type === '') { - if (strpos($this->mime_type, 'image/') === 0) { - // Generate additional image sizes - $sizes = Media::getObjectVariants('image'); - - // download original from CDN if no local file - $filePath = $this->getStagingFilePath(); - - $originalImage = Image::make($filePath); - - $imageSize = $originalImage->getSize(); - $isPortrait = $imageSize->getHeight() > $imageSize->getWidth(); - - // Swap width and height values for portrait images - foreach ($sizes as $variantName => &$size) { - if ($isPortrait === true) { - $temp = $size['width']; - $size['width'] = $size['height']; - $size['height'] = $temp; - } - } - - $dimensions = [$originalImage->getWidth(), $originalImage->getHeight()]; - $this->dimensions = implode('x', $dimensions); - - foreach ($sizes as $variantName => $size) { - $postfix = "{$size['width']}x{$size['height']}"; - if ($variantName === 'scaled') { - $postfix = 'scaled'; - } - - $newFilename = pathinfo($this->name, PATHINFO_FILENAME) . "-" . uniqid() . "-$postfix.webp"; - - // Get the largest available variant - if ($dimensions[0] >= $size['width'] && $dimensions[1] >= $size['height']) { - // Store the variant in the variants array - $variants[$variantName] = $newFilename; - - // Resize the image to the variant size if its dimensions are greater than the - // specified size - $image = clone $originalImage; - - $imageSize = $image->getSize(); - if ($imageSize->getWidth() > $size['width'] || $imageSize->getHeight() > $size['height']) { - $image->resize($size['width'], $size['height'], function ($constraint) { - $constraint->aspectRatio(); - $constraint->upsize(); - }); - $image->resizeCanvas($size['width'], $size['height'], 'center', false, 'rgba(0,0,0,0)'); - } - - $image->orientate(); - - // Optimize and store image - $tempImagePath = tempnam(sys_get_temp_dir(), 'optimize'); - $image->encode('webp', 75)->save($tempImagePath); - /** @var Illuminate\Filesystem\FilesystemAdapter */ - $fileSystem = Storage::disk($this->storage); - $fileSystem->putFileAs('/', new SplFileInfo($tempImagePath), $newFilename); - unlink($tempImagePath); - }//end if - }//end foreach - - // Set missing variants to the largest available variant - foreach ($sizes as $variantName => $size) { - if (isset($variants[$variantName]) === false) { - $variants[$variantName] = $this->name; - } - } - - $this->variants = $variants; - }//end if - }//end if - } - - /** - * Delete the Media variants from storage. - * - * @return void - */ - public function deleteVariants(): void - { - if (strlen($this->name) > 0 && strlen($this->storage) > 0) { - foreach ($this->variants as $variantName => $fileName) { - Storage::disk($this->storage)->delete($fileName); - } - - $this->variants = []; - } - } - - /** - * Set Media status to OK - * - * @return void - */ - public function ok(): void - { - // $this->status = "OK"; - $this->save(); - } - - /** - * Set Media status to an error - * @param string $error The error to set. - * @return void - */ - public function error(string $error = ""): void - { - // $this->status = "Error" . ($error !== "" ? ": {$error}" : ""); - $this->save(); - } - - /** - * Set Media status - * @param string $status The status to set. - * @return void - */ - public function status(string $status = ""): void - { - // $this->status = "Info: " . $status; - $this->save(); - } - - /** - * Get the associated job models - * - * @return HasMany - */ - public function jobs(): HasMany - { - return $this->hasMany(MediaJob::class, 'media_id'); - } - - /** - * Get the recommended storage ID based on mime and security - * - * @param string $mime_type The file mime type. - * @param string $security_type The security requested. - * @return string - */ - public static function recommendedStorage(string $mime_type, string $security_type): string - { - if ($security_type === '') { - if (strpos($mime_type, 'image/') === 0) { - return('local'); - } else { - return('cdn'); - } - } - - return('private'); - } - - /** - * Verify the storage exists. May change the storage value. - * - * @param mixed $mime_type File mime type. - * @param mixed $security_type Requested security type. - * @param mixed $storage Reference to the requested storage type. - * @return integer Error code. - */ - public static function verifyStorage(mixed $mime_type, mixed $security_type, mixed &$storage): int - { - if ($storage === '') { - if ($security_type === '') { - if (strpos($mime_type, 'image/') === 0) { - $storage = 'local'; - } else { - $storage = 'cdn'; - } - } else { - $storage = 'private'; - } - } else { - $disks = config('filesystems.disks'); - if (array_key_exists($storage, $disks) === false) { - return Media::STORAGE_NOT_FOUND; - } - - if ($security_type !== '' && strcasecmp($storage, 'private') !== 0) { - return Media::STORAGE_INVALID_SECURITY; - } - } - - return Media::STORAGE_VALID; - } -} diff --git a/app/Models/MediaJob.php b/app/Models/MediaJob.php deleted file mode 100644 index 5ff16b0..0000000 --- a/app/Models/MediaJob.php +++ /dev/null @@ -1,239 +0,0 @@ - null, - 'media_id' => null, - 'status' => '', - 'status_text' => '', - 'progress' => 0, - 'progress_max' => 0, - 'data' => '', - ]; - - - /** - * Set MediaJob status to failed. - * - * @param string $statusText The failed reason. - * @return void - */ - public function setStatusFailed(string $statusText = ''): void - { - $this->setStatus('failed', $statusText, 0); - } - - /** - * Set MediaJob status to queued. - * - * @return void - */ - public function setStatusQueued(): void - { - $this->setStatus('queued', '', 0); - } - - /** - * Set MediaJob status to waiting. - * - * @return void - */ - public function setStatusWaiting(): void - { - $this->setStatus('waiting', '', 0); - } - - /** - * Set MediaJob status to processing. - * - * @param integer $progress The processing progress value. - * @param integer $progressMax The processing progress maximum value. - * @param string $statusText The processing status text. - * @return void - */ - public function setStatusProcessing(int $progress = 0, int $progressMax = 0, string $statusText = ''): void - { - if ($statusText === '') { - $statusText = $this->status_text; - } - - $this->setStatus('processing', $statusText, $progress, $progressMax); - } - - /** - * Set MediaJob status to complete. - * - * @return void - */ - public function setStatusComplete(): void - { - $this->setStatus('complete'); - } - - /** - * Set MediaJon status to invalid. - * - * @param string $text The status text. - * @return void - */ - public function setStatusInvalid(string $text = ''): void - { - $this->setStatus('invalid', $text); - } - - /** - * Set MediaJob status details. - * - * @param string $status The status string. - * @param string $text The status text. - * @param integer $progress The status progress value. - * @param integer $progress_max The status progress maximum value. - * @return void - */ - protected function setStatus(string $status, string $text = '', int $progress = 0, int $progress_max = 0): void - { - $this->status = $status; - $this->status_text = $text; - $this->progress = $progress; - $this->progress_max = $progress_max; - $this->save(); - } - - /** - * Process the MediaJob. - * - * @return void - */ - public function process(): void - { - $data = json_decode($this->data, true); - if ($data !== null) { - if (array_key_exists('chunks', $data) === true) { - if (array_key_exists('chunk_count', $data) === false) { - $this->setStatusInvalid('chunk_count is missing'); - return; - } - - if (array_key_exists('name', $data) === false) { - $this->setStatusInvalid('name is missing'); - return; - } - - $numChunks = count($data['chunks']); - $maxChunks = intval($data['chunk_count']); - if ($numChunks >= $maxChunks) { - // merge file and dispatch - $this->setStatusProcessing(0, $maxChunks, 'combining chunks'); - - $newFile = generateTempFilePath(pathinfo($data['name'], PATHINFO_EXTENSION)); - $failed = false; - - for ($index = 1; $index <= $maxChunks; $index++) { - if (array_key_exists($index, $data['chunks']) === false) { - $failed = `{$index} chunk is missing`; - } else { - $tempFileName = $data['chunks'][$index]; - - if ($failed === false) { - $chunkContents = file_get_contents($tempFileName); - if ($chunkContents === false) { - $failed = `{$index} chunk is empty`; - } else { - file_put_contents($newFile, $chunkContents, FILE_APPEND); - } - } - - unlink($tempFileName); - $this->setStatusProcessing($index, $maxChunks); - } - } - - unset($data['chunks']); - $this->data = json_encode($data); - - if ($failed !== false) { - $this->setStatusInvalid($failed); - } else { - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $mime = finfo_file($finfo, $newFile); - finfo_close($finfo); - - $data['file'] = $newFile; - $data['size'] = filesize($newFile); - $data['mime_type'] = $mime; - - if ( - array_key_exists('storage', $data) === true && - array_key_exists('security_type', $data) === true && - array_key_exists('mime_type', $data) === true && - $data['mime_type'] !== "" - ) { - $error = Media::verifyStorage($data['mime_type'], $data['security_type'], $data['storage']); - switch ($error) { - case Media::STORAGE_VALID: - break; - case Media::STORAGE_MIME_MISSING: - $this->setStatusInvalid('The file type cannot be determined.'); - return; - case Media::STORAGE_NOT_FOUND: - $this->setStatusInvalid('Storage was not found.'); - return; - case Media::STORAGE_INVALID_SECURITY: - $this->setStatusInvalid('Storage invalid for security value.'); - return; - default: - $this->setStatusInvalid('Storage verification error occurred.'); - return; - } - } - - $this->data = json_encode($data); - $this->setStatusQueued(); - MediaWorkerJob::dispatch($this)->onQueue('media'); - }//end if - }//end if - } else { - $this->setStatusQueued(); - MediaWorkerJob::dispatch($this)->onQueue('media'); - }//end if - }//end if - } - - /** - * Return the job owner - * - * @return BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } - - /** - * Return the media item - * - * @return BelongsTo - */ - public function media(): BelongsTo - { - return $this->belongsTo(Media::class); - } -} diff --git a/app/Models/Permission.php b/app/Models/Permission.php deleted file mode 100644 index 30321da..0000000 --- a/app/Models/Permission.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ - protected $fillable = [ - 'permission', - 'user', - ]; - - - /** - * Get the User associated with this model - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Models/Shortlink.php b/app/Models/Shortlink.php deleted file mode 100644 index e154129..0000000 --- a/app/Models/Shortlink.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ - protected $fillable = [ - 'code', - 'url', - ]; -} diff --git a/app/Models/Subscription.php b/app/Models/Subscription.php deleted file mode 100644 index 73d94a8..0000000 --- a/app/Models/Subscription.php +++ /dev/null @@ -1,22 +0,0 @@ - - */ - protected $fillable = [ - 'email', - ]; -} diff --git a/app/Models/User.php b/app/Models/User.php index ea17138..4d7f70f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,25 +3,14 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; - -use App\Traits\Uuids; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -use Illuminate\Support\Facades\Cache; use Laravel\Sanctum\HasApiTokens; -use OwenIt\Auditing\Contracts\Auditable; -class User extends Authenticatable implements Auditable +class User extends Authenticatable { - use HasApiTokens; - use HasFactory; - use Notifiable; - use Uuids; - use \OwenIt\Auditing\Auditable; + use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. @@ -29,12 +18,9 @@ class User extends Authenticatable implements Auditable * @var array */ protected $fillable = [ - 'first_name', - 'last_name', + 'name', 'email', - 'phone', 'password', - 'display_name', ]; /** @@ -45,7 +31,6 @@ class User extends Authenticatable implements Auditable protected $hidden = [ 'password', 'remember_token', - 'permissions' ]; /** @@ -55,192 +40,6 @@ class User extends Authenticatable implements Auditable */ protected $casts = [ 'email_verified_at' => 'datetime', + 'password' => 'hashed', ]; - - // protected $hidden = [ - // 'permissions' - // ]; - - /** - * The attributes to append. - * - * @var string[] - */ - protected $appends = [ - 'permissions' - ]; - - /** - * The default attributes. - * - * @var string[] - */ - protected $attributes = [ - 'phone' => '', - ]; - - - /** - * Boot the model. - * - * @return void - */ - protected static function boot(): void - { - parent::boot(); - - $clearCache = function ($user) { - Cache::forget( - "user:{$user->id}", - "user:{$user->id}:permissions" - ); - }; - - static::saving($clearCache); - static::deleting($clearCache); - } - - /** - * Get the list of permissions of the user - * - * @return Illuminate\Database\Eloquent\Relations\HasMany - */ - public function permissions(): HasMany - { - return $this->hasMany(Permission::class); - } - - /** - * Get the permission attribute - * - * @return array - */ - public function getPermissionsAttribute(): array - { - $cacheKey = "user:{$this->id}:permissions"; - return Cache::remember($cacheKey, now()->addDays(28), function () { - return $this->permissions()->pluck('permission')->toArray(); - }); - } - - /** - * Set the permission attribute - * - * @param array $newPermissions The new permissions to set to the user. - * @return void - */ - public function setPermissionsAttribute(array $newPermissions): void - { - $existingPermissions = $this->permissions->pluck('permission')->toArray(); - - $this->revokePermission(array_diff($this->permissions, $newPermissions)); - $this->givePermission(array_diff($newPermissions, $this->permissions)); - - $cacheKey = "user:{$this->id}:permissions"; - Cache::delete($cacheKey); - } - - /** - * Test if user has permission - * - * @param string $permission Permission to test. - * @return boolean - */ - public function hasPermission(string $permission): bool - { - return in_array($permission, $this->permissions); - } - - /** - * Give permissions to the user - * - * @param string|array $permissions The permission(s) to give. - * @return Illuminate\Database\Eloquent\Collection - */ - public function givePermission($permissions): Collection - { - if (is_array($permissions) === false) { - $permissions = [$permissions]; - } - - $newPermissions = array_map(function ($permission) { - return ['permission' => $permission]; - }, array_diff($permissions, $this->permissions)); - - $cacheKey = "user:{$this->id}:permissions"; - Cache::forget($cacheKey); - - return $this->permissions()->createMany($newPermissions); - } - - - /** - * Revoke permissions from the user - * - * @param string|array $permissions The permission(s) to revoke. - * @return integer - */ - public function revokePermission($permissions): int - { - if (is_array($permissions) === false) { - $permissions = [$permissions]; - } - - $cacheKey = "user:{$this->id}:permissions"; - Cache::forget($cacheKey); - - return $this->permissions() - ->whereIn('permission', $permissions) - ->delete(); - } - - /** - * Get the list of files of the user - * - * @return HasMany - */ - public function media(): HasMany - { - return $this->hasMany(Media::class); - } - - /** - * Get the list of files of the user - * - * @return HasMany - */ - public function articles(): HasMany - { - return $this->hasMany(Article::class); - } - - /** - * Get associated user codes - * - * @return HasMany - */ - public function codes(): HasMany - { - return $this->hasMany(UserCode::class); - } - - /** - * Get the list of logins of the user - * - * @return HasMany - */ - public function logins(): HasMany - { - return $this->hasMany(UserLogins::class); - } - - /** - * Get the events associated with the user. - * - * @return BelongsToMany - */ - public function events(): BelongsToMany - { - return $this->belongsToMany(Event::class, 'event_user', 'user_id', 'event_id'); - } } diff --git a/app/Models/UserCode.php b/app/Models/UserCode.php deleted file mode 100644 index b5a48ba..0000000 --- a/app/Models/UserCode.php +++ /dev/null @@ -1,83 +0,0 @@ - - */ - protected $fillable = [ - 'action', - 'user_id', - 'data', - ]; - - - /** - * Boot function from Laravel. - * - * @return void - */ - protected static function boot(): void - { - parent::boot(); - static::creating(function ($model) { - UserCode::clearExpired(); - - if (empty($model->{'code'}) === true) { - while (true) { - $code = random_int(100000, 999999); - if (UserCode::where('code', $code)->count() === 0) { - $model->{'code'} = $code; - break; - } - } - } - }); - } - - /** - * Generate new code - * - * @return void - */ - public function regenerate(): void - { - while (true) { - $code = random_int(100000, 999999); - if (UserCode::where('code', $code)->count() === 0) { - $this->code = $code; - break; - } - } - } - - /** - * Clear expired user codes - * - * @return void - */ - public static function clearExpired(): void - { - UserCode::where('updated_at', '<=', now()->subDays(5))->delete(); - } - - /** - * Get associated user - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Models/UserLogins.php b/app/Models/UserLogins.php deleted file mode 100644 index 10efe16..0000000 --- a/app/Models/UserLogins.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ - protected $fillable = [ - 'user_id', - 'token', - 'login', - 'logout', - 'ip_address', - 'user_agent', - ]; - - - /** - * Get the file user - * - * @return Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user(): BelongsTo - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 30a0c2d..452e6b6 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,16 +2,12 @@ namespace App\Providers; -use Illuminate\Http\Request; use Illuminate\Support\ServiceProvider; -use Illuminate\Support\Facades\Storage; class AppServiceProvider extends ServiceProvider { /** * Register any application services. - * - * @return void */ public function register(): void { @@ -20,34 +16,9 @@ class AppServiceProvider extends ServiceProvider /** * Bootstrap any application services. - * - * @return void */ public function boot(): void { - Request::macro('rename', function ($param, $newParam = null) { - if (is_array($param) === false) { - if ($newParam === null) { - return; - } - - $param = [$param => $newParam]; - } - - $paramArray = $this->all(); - foreach ($param as $oldParam => $newParam) { - if (isset($paramArray[$oldParam]) === true) { - $paramArray[$newParam] = $paramArray[$oldParam]; - unset($paramArray[$oldParam]); - } - } - - $this->replace($paramArray); - }); - - Storage::macro('public', function ($diskName) { - $public = config("filesystems.disks.{$diskName}.public", false); - return $public; - }); + // } } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 1f84312..54756cd 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -13,14 +13,11 @@ class AuthServiceProvider extends ServiceProvider * @var array */ protected $policies = [ - // 'App\Models\Model' => 'App\Policies\ModelPolicy', + // ]; - /** * Register any authentication / authorization services. - * - * @return void */ public function boot(): void { diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php index 229284c..2be04f5 100644 --- a/app/Providers/BroadcastServiceProvider.php +++ b/app/Providers/BroadcastServiceProvider.php @@ -9,8 +9,6 @@ class BroadcastServiceProvider extends ServiceProvider { /** * Bootstrap any application services. - * - * @return void */ public function boot(): void { diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 95217e4..2d65aac 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -5,10 +5,7 @@ namespace App\Providers; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; -use Illuminate\Queue\Events\JobProcessed; -use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\Log; class EventServiceProvider extends ServiceProvider { @@ -23,11 +20,8 @@ class EventServiceProvider extends ServiceProvider ], ]; - /** * Register any events for your application. - * - * @return void */ public function boot(): void { @@ -36,8 +30,6 @@ class EventServiceProvider extends ServiceProvider /** * Determine if events and listeners should be automatically discovered. - * - * @return boolean */ public function shouldDiscoverEvents(): bool { diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 7113be9..1cf5f15 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -7,12 +7,11 @@ use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvi use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Support\Facades\Route; -use Illuminate\Support\Str; class RouteServiceProvider extends ServiceProvider { /** - * The path to the "home" route for your application. + * The path to your application's "home" route. * * Typically, users are redirected here after authentication. * @@ -20,38 +19,14 @@ class RouteServiceProvider extends ServiceProvider */ public const HOME = '/home'; - /** * Define your route model bindings, pattern filters, and other route configuration. - * - * @return void */ public function boot(): void { - // RateLimiter::for('api', function (Request $request) { - // return Limit::perMinute(60)->by($request->user()?->id !== null ?: $request->ip()); - // }); - - $rateLimitEnabled = true; - /** @var \App\Models\User */ - $user = auth()->user(); - - if (app()->environment('testing') === true) { - $rateLimitEnabled = false; - } elseif ($user !== null && $user->hasPermission('admin/ratelimit') === true) { - // Admin users with the "admin/ratelimit" permission are not rate limited - $rateLimitEnabled = false; - } - - if ($rateLimitEnabled === true) { - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(800)->by(isset($request->user()->id) === true ?: $request->ip()); - }); - } else { - RateLimiter::for('api', function () { - return Limit::none(); - }); - } + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); $this->routes(function () { Route::middleware('api') @@ -61,30 +36,5 @@ class RouteServiceProvider extends ServiceProvider Route::middleware('web') ->group(base_path('routes/web.php')); }); - - Route::macro('apiAddendumResource', function ($addendum, $uri, $controller) { - $singularUri = Str::singular($uri); - $signularAddendum = Str::singular((strtolower($addendum))); - $pluralAddendum = Str::plural($signularAddendum); - - Route::get("{$uri}/{{$singularUri}}/{$pluralAddendum}", [$controller, "{$signularAddendum}Index"]) - ->name("{$singularUri}.{$signularAddendum}.index"); - - Route::post("{$uri}/{{$singularUri}}/{$pluralAddendum}", [$controller, "{$signularAddendum}Store"]) - ->name("{$singularUri}.{$signularAddendum}.store"); - - Route::match( - ['put', 'patch'], - "{$uri}/{{$singularUri}}/{$pluralAddendum}", - [$controller, "{$signularAddendum}Update"] - ) - ->name("{$singularUri}.{$signularAddendum}.update"); - - Route::delete( - "{$uri}/{{$singularUri}}/{$pluralAddendum}/{medium}", - [$controller,"{$signularAddendum}Delete"] - ) - ->name("{$singularUri}.{$signularAddendum}.destroy"); - }); } } diff --git a/app/Rules/Recaptcha.php b/app/Rules/Recaptcha.php deleted file mode 100644 index eb0f865..0000000 --- a/app/Rules/Recaptcha.php +++ /dev/null @@ -1,52 +0,0 @@ -post($endpoint['url'], [ - 'secret' => $endpoint['secret_key'], - 'response' => $value, - ])->json(); - - if ($response['success'] === true && $response['score'] > 0.5) { - return true; - } - - return false; - } - - /** - * Get the validation error message. - * - * @return string - */ - public function message(): string - { - return 'Captcha failed. Refresh the page and try again'; - } -} diff --git a/app/Rules/UniqueFileName.php b/app/Rules/UniqueFileName.php deleted file mode 100644 index 54f2f65..0000000 --- a/app/Rules/UniqueFileName.php +++ /dev/null @@ -1,41 +0,0 @@ -table = $table; - $this->column = $column; - } - - /** - * Set the ID of the record to be ignored. - * - * @param mixed $id The ID to ignore. - * @return App\Rules\Uniqueish - */ - public function ignore(mixed $id): static - { - $this->ignoreId = $id; - return $this; - } - - /** - * Determine if the validation rule passes. - * - * @param mixed $attribute Not used. - * @param mixed $value The value to compare. - * @return boolean - */ - public function passes(mixed $attribute, mixed $value): bool - { - $columnName = ($this->column ?? $attribute); - $similarValue = preg_replace('/[^A-Za-z]/', '', strtolower($value)); - - try { - $query = DB::table($this->table) - ->where($columnName, 'like', '%' . $similarValue . '%'); - - if ($this->ignoreId !== null) { - $query->where('id', '<>', $this->ignoreId); - } - - $query->whereRaw('LOWER(REGEXP_REPLACE(' . $columnName . ', \'[^A-Za-z0-9]\', \'\')) = ?', [$similarValue]); - $result = $query->first(); - } catch (\Illuminate\Database\QueryException $e) { - // Fall back to performing the regex replace in PHP - // $results = $query->get(); - $query = DB::table($this->table); - $results = $query->get(); - - foreach ($results as $result) { - $resultValue = preg_replace('/[^A-Za-z0-9]/', '', strtolower($result->{$columnName})); - if ($resultValue === $similarValue && $result->id !== $this->ignoreId) { - return false; // Value already exists in the table - } - } - return true; // Value does not exist in the table - }//end try - - return $result === null; - } - - /** - * Get the validation error message. - * - * @return string - */ - public function message(): string - { - return 'The :attribute is similar to one that already exists. Please choose another.'; - } -} diff --git a/app/Traits/HasAttachments.php b/app/Traits/HasAttachments.php deleted file mode 100644 index 040aa0b..0000000 --- a/app/Traits/HasAttachments.php +++ /dev/null @@ -1,98 +0,0 @@ -deleteAttachments(); - }); - } - - /** - * Get the attachments associated to this item. - * - * @return Collection - */ - public function getAttachments(): Collection - { - return Cache::remember($this->attachmentsCacheKey(), now()->addDays(28), function () { - return $this->attachments()->get(); - }); - } - - /** - * Add multiple attachments items to the model. - * - * @param array|string $ids The media ids to add. - * @param string $delimiter The split delimiter if $ids is a string. - * @param boolean $allowDuplicates Whether to allow duplicate media IDs or not. - * @return void - */ - public function addAttachments(array|string $ids, string $delimiter = ',', bool $allowDuplicates = false): void - { - if (is_array($ids) === false) { - $ids = explode($delimiter, $ids); - } - - $ids = array_map('trim', $ids); - $existingIds = $this->getAttachments()->pluck('media_id')->toArray(); - - $attachmentItems = []; - foreach ($ids as $id) { - if ($allowDuplicates === false && in_array($id, $existingIds) === true) { - continue; - } - - if (Media::where('id', $id)->exists() === true) { - $attachmentItems[] = ['media_id' => $id]; - } - } - - Cache::forget($this->attachmentsCacheKey()); - $this->attachments()->createMany($attachmentItems); - } - - /** - * Delete associated attachments. - * - * @return void - */ - public function deleteAttachments(): void - { - Cache::forget($this->attachmentsCacheKey()); - $this->morphMany(\App\Models\Attachment::class, 'addendum')->delete(); - } - - /** - * Get the article's attachments. - * - * @return Illuminate\Database\Eloquent\Relations\MorphMany The attachments items - */ - public function attachments(): MorphMany - { - return $this->morphMany(\App\Models\Attachment::class, 'addendum'); - } - - /** - * Return the attachment cache key. - * - * @return string - */ - private function attachmentsCacheKey(): string - { - return "attachments:{$this->getTable()}:{$this->id}"; - } -} diff --git a/app/Traits/HasGallery.php b/app/Traits/HasGallery.php deleted file mode 100644 index f2697b9..0000000 --- a/app/Traits/HasGallery.php +++ /dev/null @@ -1,88 +0,0 @@ -gallery()->delete(); - }); - } - - /** - * Add multiple gallery items to the model. - * - * @param array|string $ids The media ids to add. - * @param string $delimiter The split delimiter if $ids is a string. - * @param boolean $allowDuplicates Whether to allow duplicate media IDs or not. - * @return void - */ - public function galleryAddMany(array|string $ids, string $delimiter = ',', bool $allowDuplicates = false): void - { - if (is_array($ids) === false) { - $ids = explode($delimiter, $ids); - } - - $ids = array_map('trim', $ids); - $existingIds = $this->gallery()->pluck('media_id')->toArray(); - - $galleryItems = []; - foreach ($ids as $id) { - if ($allowDuplicates === false && in_array($id, $existingIds) === true) { - continue; - } - - $media = Media::find($id); - if ($media !== null) { - $galleryItems[] = ['media_id' => $id]; - } - } - - Cache::forget($this->galleryCacheKey()); - $this->gallery()->createMany($galleryItems); - } - - /** - * Get the article's gallery. - * - * @return Illuminate\Database\Eloquent\Relations\MorphMany The gallery items - */ - public function gallery(): MorphMany - { - return $this->morphMany(\App\Models\Gallery::class, 'addendum'); - } - - /** - * Get the article's gallery collection. - * - * @return Illuminate\Database\Eloquent\Collection The gallery collection - */ - public function getGallery(): Collection - { - return Cache::remember($this->galleryCacheKey(), now()->addDays(28), function () { - return $this->gallery()->get(); - }); - } - - /** - * Return the attachment cache key. - * - * @return string - */ - private function galleryCacheKey(): string - { - return "gallery:{$this->getTable()}:{$this->id}"; - } -} diff --git a/app/Traits/Uuids.php b/app/Traits/Uuids.php deleted file mode 100644 index a5053ee..0000000 --- a/app/Traits/Uuids.php +++ /dev/null @@ -1,42 +0,0 @@ -{$model->getKeyName()}) === true) { - $model->{$model->getKeyName()} = Str::uuid()->toString(); - } - }); - } - - /** - * Get the value indicating whether the IDs are incrementing. - * - * @return boolean - */ - public function getIncrementing(): bool - { - return false; - } - - /** - * Get the auto-incrementing key type. - * - * @return string - */ - public function getKeyType(): string - { - return 'string'; - } -} diff --git a/composer.json b/composer.json index d5fb7ba..8a3d72d 100644 --- a/composer.json +++ b/composer.json @@ -1,56 +1,35 @@ { "name": "laravel/laravel", "type": "project", - "description": "The Laravel Framework.", - "keywords": [ - "framework", - "laravel" - ], + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], "license": "MIT", "require": { "php": "^8.1", - "doctrine/dbal": "^3.5", "guzzlehttp/guzzle": "^7.2", - "intervention/image": "^2.7", - "laravel/framework": "^10.12", - "laravel/sanctum": "^3.2", - "laravel/tinker": "^2.8", - "league/flysystem-aws-s3-v3": "^3.12", - "owen-it/laravel-auditing": "^13.1", - "php-ffmpeg/php-ffmpeg": "^1.1", - "square/square": "32.0.0.20231018", - "sunspikes/clamav-validator": "*", - "thiagoalessio/tesseract_ocr": "^2.12", - "vlucas/phpdotenv": "^5.5" + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.3", + "laravel/tinker": "^2.8" }, "require-dev": { - "barryvdh/laravel-ide-helper": "^2.13", "fakerphp/faker": "^1.9.1", - "itsgoingd/clockwork": "^5.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.1", - "phpunit/phpunit": "^10.1.3", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", "spatie/laravel-ignition": "^2.0" }, "autoload": { - "files": [ - "app/Helpers/Array.php", - "app/Helpers/Temp.php", - "app/Helpers/TypeValue.php" - ], "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/", - "Faker\\Provider\\": "faker/provider/" + "Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { - "Tests\\": "tests/", - "Faker\\Provider\\": "faker/provider/" + "Tests\\": "tests/" } }, "scripts": { @@ -78,7 +57,8 @@ "preferred-install": "dist", "sort-packages": true, "allow-plugins": { - "pestphp/pest-plugin": true + "pestphp/pest-plugin": true, + "php-http/discovery": true } }, "minimum-stability": "stable", diff --git a/composer.lock b/composer.lock index 6215538..21290d9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,372 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bc423f0daa8803140c88ff8b5bf51259", + "content-hash": "9c491b8531eec05ba41a11d9276a5749", "packages": [ - { - "name": "apimatic/core", - "version": "0.3.2", - "source": { - "type": "git", - "url": "https://github.com/apimatic/core-lib-php.git", - "reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/32238fb83ce9a3ebef38c726b497c0f218d6e6c9", - "reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9", - "shasum": "" - }, - "require": { - "apimatic/core-interfaces": "~0.1.0", - "apimatic/jsonmapper": "^3.1.1", - "ext-curl": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "php": "^7.2 || ^8.0", - "php-jsonpointer/php-jsonpointer": "^3.0.2" - }, - "require-dev": { - "phan/phan": "5.4.2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Core\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Core logic and the utilities for the Apimatic's PHP SDK", - "homepage": "https://github.com/apimatic/core-lib-php", - "keywords": [ - "apimatic", - "core", - "corelib", - "php" - ], - "support": { - "issues": "https://github.com/apimatic/core-lib-php/issues", - "source": "https://github.com/apimatic/core-lib-php/tree/0.3.2" - }, - "time": "2023-07-11T09:30:32+00:00" - }, - { - "name": "apimatic/core-interfaces", - "version": "0.1.2", - "source": { - "type": "git", - "url": "https://github.com/apimatic/core-interfaces-php.git", - "reference": "183214195a79784c382a446795c46ca8c1f43cc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/apimatic/core-interfaces-php/zipball/183214195a79784c382a446795c46ca8c1f43cc1", - "reference": "183214195a79784c382a446795c46ca8c1f43cc1", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "CoreInterfaces\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Definition of the behavior of apimatic/core, apimatic/unirest-php and Apimatic's PHP SDK", - "homepage": "https://github.com/apimatic/core-interfaces-php", - "keywords": [ - "apimatic", - "core", - "corelib", - "interface", - "php", - "unirest" - ], - "support": { - "issues": "https://github.com/apimatic/core-interfaces-php/issues", - "source": "https://github.com/apimatic/core-interfaces-php/tree/0.1.2" - }, - "time": "2023-04-04T06:40:52+00:00" - }, - { - "name": "apimatic/jsonmapper", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/apimatic/jsonmapper.git", - "reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/6673a946c21f2ceeec0cb60d17541c11a22bc79d", - "reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "squizlabs/php_codesniffer": "^3.0.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "apimatic\\jsonmapper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "christian.weiske@netresearch.de", - "homepage": "http://www.netresearch.de/", - "role": "Developer" - }, - { - "name": "Mehdi Jaffery", - "email": "mehdi.jaffery@apimatic.io", - "homepage": "http://apimatic.io/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "mehdi.jaffery@apimatic.io", - "issues": "https://github.com/apimatic/jsonmapper/issues", - "source": "https://github.com/apimatic/jsonmapper/tree/3.1.2" - }, - "time": "2023-06-08T04:27:10+00:00" - }, - { - "name": "apimatic/unirest-php", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/apimatic/unirest-php.git", - "reference": "e16754010c16be5473289470f129d87a0f41b55e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/apimatic/unirest-php/zipball/e16754010c16be5473289470f129d87a0f41b55e", - "reference": "e16754010c16be5473289470f129d87a0f41b55e", - "shasum": "" - }, - "require": { - "apimatic/core-interfaces": "^0.1.0", - "ext-curl": "*", - "ext-json": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "phan/phan": "5.4.2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Unirest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mashape", - "email": "opensource@mashape.com", - "homepage": "https://www.mashape.com", - "role": "Developer" - }, - { - "name": "APIMATIC", - "email": "opensource@apimatic.io", - "homepage": "https://www.apimatic.io", - "role": "Developer" - } - ], - "description": "Unirest PHP", - "homepage": "https://github.com/apimatic/unirest-php", - "keywords": [ - "client", - "curl", - "http", - "https", - "rest" - ], - "support": { - "email": "opensource@apimatic.io", - "issues": "https://github.com/apimatic/unirest-php/issues", - "source": "https://github.com/apimatic/unirest-php/tree/4.0.5" - }, - "time": "2023-04-25T14:19:45+00:00" - }, - { - "name": "aws/aws-crt-php", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/2f1dc7b7eda080498be96a4a6d683a41583030e9", - "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "AWS SDK Common Runtime Team", - "email": "aws-sdk-common-runtime@amazon.com" - } - ], - "description": "AWS Common Runtime for PHP", - "homepage": "https://github.com/awslabs/aws-crt-php", - "keywords": [ - "amazon", - "aws", - "crt", - "sdk" - ], - "support": { - "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.2" - }, - "time": "2023-07-20T16:49:55+00:00" - }, - { - "name": "aws/aws-sdk-php", - "version": "3.283.8", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "0f73ec85852312a6e971cfe2eebfd7c8091cca34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0f73ec85852312a6e971cfe2eebfd7c8091cca34", - "reference": "0f73ec85852312a6e971cfe2eebfd7c8091cca34", - "shasum": "" - }, - "require": { - "aws/aws-crt-php": "^1.0.4", - "ext-json": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "andrewsville/php-token-reflection": "^1.4", - "aws/aws-php-sns-message-validator": "~1.0", - "behat/behat": "~3.0", - "composer/composer": "^1.10.22", - "dms/phpunit-arraysubset-asserts": "^0.4.0", - "doctrine/cache": "~1.4", - "ext-dom": "*", - "ext-openssl": "*", - "ext-pcntl": "*", - "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", - "doctrine/cache": "To use the DoctrineCacheAdapter", - "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "ext-sockets": "To use client-side monitoring" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Aws\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", - "homepage": "http://aws.amazon.com/sdkforphp", - "keywords": [ - "amazon", - "aws", - "cloud", - "dynamodb", - "ec2", - "glacier", - "s3", - "sdk" - ], - "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", - "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.283.8" - }, - "time": "2023-10-19T19:26:52+00:00" - }, { "name": "brick/math", "version": "0.11.0", @@ -425,75 +61,6 @@ ], "time": "2023-01-15T23:15:59+00:00" }, - { - "name": "clue/socket-raw", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/clue/socket-raw.git", - "reference": "91e9f619f6769f931454a9882c21ffd7623d06cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/socket-raw/zipball/91e9f619f6769f931454a9882c21ffd7623d06cb", - "reference": "91e9f619f6769f931454a9882c21ffd7623d06cb", - "shasum": "" - }, - "require": { - "ext-sockets": "*", - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "Socket\\Raw\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "Simple and lightweight OOP wrapper for PHP's low-level sockets extension (ext-sockets).", - "homepage": "https://github.com/clue/socket-raw", - "keywords": [ - "Socket", - "client", - "datagram", - "dgram", - "icmp", - "ipv6", - "server", - "stream", - "tcp", - "udg", - "udp", - "unix" - ], - "support": { - "issues": "https://github.com/clue/socket-raw/issues", - "source": "https://github.com/clue/socket-raw/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-04-14T14:58:06+00:00" - }, { "name": "dflydev/dot-access-data", "version": "v3.0.2", @@ -569,350 +136,6 @@ }, "time": "2022-10-27T11:44:00+00:00" }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "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 Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "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%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, - { - "name": "doctrine/dbal", - "version": "3.7.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.35", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "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" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.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%2Fdbal", - "type": "tidelift" - } - ], - "time": "2023-10-06T05:06:20+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" - }, - "time": "2023-09-27T20:04:15+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "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" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.0" - }, - "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%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2022-10-12T20:59:15+00:00" - }, { "name": "doctrine/inflector", "version": "2.0.8", @@ -1209,53 +432,6 @@ ], "time": "2023-10-06T06:47:41+00:00" }, - { - "name": "evenement/evenement", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^9 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Evenement\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/v3.0.2" - }, - "time": "2023-08-08T05:53:35+00:00" - }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -1329,24 +505,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -1375,7 +551,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -1387,7 +563,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1794,102 +970,18 @@ ], "time": "2023-08-27T10:19:19+00:00" }, - { - "name": "intervention/image", - "version": "2.7.2", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "04be355f8d6734c826045d02a1079ad658322dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", - "reference": "04be355f8d6734c826045d02a1079ad658322dad", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1 || ^2.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" - }, - "funding": [ - { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", - "type": "github" - } - ], - "time": "2022-05-21T17:30:32+00:00" - }, { "name": "laravel/framework", - "version": "v10.30.1", + "version": "v10.31.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "7a2da50258c4d0f693b738d3f3c69b2693aea6c1" + "reference": "507ce9b28bce4b5e4140c28943092ca38e9a52e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/7a2da50258c4d0f693b738d3f3c69b2693aea6c1", - "reference": "7a2da50258c4d0f693b738d3f3c69b2693aea6c1", + "url": "https://api.github.com/repos/laravel/framework/zipball/507ce9b28bce4b5e4140c28943092ca38e9a52e4", + "reference": "507ce9b28bce4b5e4140c28943092ca38e9a52e4", "shasum": "" }, "require": { @@ -2078,7 +1170,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-11-01T13:52:17+00:00" + "time": "2023-11-07T13:48:30+00:00" }, { "name": "laravel/prompts", @@ -2139,16 +1231,16 @@ }, { "name": "laravel/sanctum", - "version": "v3.3.1", + "version": "v3.3.2", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "338f633e6487e76b255470d3373fbc29228aa971" + "reference": "e1a272893bec13cf135627f7e156030b3afe1e60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971", - "reference": "338f633e6487e76b255470d3373fbc29228aa971", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/e1a272893bec13cf135627f7e156030b3afe1e60", + "reference": "e1a272893bec13cf135627f7e156030b3afe1e60", "shasum": "" }, "require": { @@ -2201,7 +1293,7 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-09-07T15:46:33+00:00" + "time": "2023-11-03T13:42:14+00:00" }, { "name": "laravel/serializable-closure", @@ -2522,16 +1614,16 @@ }, { "name": "league/flysystem", - "version": "3.18.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "015633a05aee22490495159237a5944091d8281e" + "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/015633a05aee22490495159237a5944091d8281e", - "reference": "015633a05aee22490495159237a5944091d8281e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b2aa10f2326e0351399b8ce68e287d8e9209a83", + "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83", "shasum": "" }, "require": { @@ -2596,7 +1688,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.18.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.19.0" }, "funding": [ { @@ -2608,86 +1700,20 @@ "type": "github" } ], - "time": "2023-10-20T17:59:40+00:00" - }, - { - "name": "league/flysystem-aws-s3-v3", - "version": "3.16.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", - "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", - "shasum": "" - }, - "require": { - "aws/aws-sdk-php": "^3.220.0", - "league/flysystem": "^3.10.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\AwsS3V3\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "AWS S3 filesystem adapter for Flysystem.", - "keywords": [ - "Flysystem", - "aws", - "file", - "files", - "filesystem", - "s3", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.16.0" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "time": "2023-08-30T10:14:57+00:00" + "time": "2023-11-07T09:04:28+00:00" }, { "name": "league/flysystem-local", - "version": "3.18.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e7381ef7643f658b87efb7dbe98fe538fb1bbf32" + "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e7381ef7643f658b87efb7dbe98fe538fb1bbf32", - "reference": "e7381ef7643f658b87efb7dbe98fe538fb1bbf32", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/8d868217f9eeb4e9a7320db5ccad825e9a7a4076", + "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076", "shasum": "" }, "require": { @@ -2722,7 +1748,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.18.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.19.0" }, "funding": [ { @@ -2734,7 +1760,7 @@ "type": "github" } ], - "time": "2023-10-19T20:07:13+00:00" + "time": "2023-11-06T20:35:28+00:00" }, { "name": "league/mime-type-detection", @@ -2893,72 +1919,6 @@ ], "time": "2023-10-27T15:32:31+00:00" }, - { - "name": "mtdowling/jmespath.php", - "version": "2.7.0", - "source": { - "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-mbstring": "^1.17" - }, - "require-dev": { - "composer/xdebug-handler": "^3.0.3", - "phpunit/phpunit": "^8.5.33" - }, - "bin": [ - "bin/jp.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "files": [ - "src/JmesPath.php" - ], - "psr-4": { - "JmesPath\\": "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" - } - ], - "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": [ - "json", - "jsonpath" - ], - "support": { - "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" - }, - "time": "2023-08-25T10:54:48+00:00" - }, { "name": "nesbot/carbon", "version": "2.71.0", @@ -3355,251 +2315,18 @@ ], "time": "2023-02-08T01:06:31+00:00" }, - { - "name": "owen-it/laravel-auditing", - "version": "v13.5.1", - "source": { - "type": "git", - "url": "https://github.com/owen-it/laravel-auditing.git", - "reference": "8b9c5bd7d6e79ed63376a86b1861ab1606215801" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/8b9c5bd7d6e79ed63376a86b1861ab1606215801", - "reference": "8b9c5bd7d6e79ed63376a86b1861ab1606215801", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^7.0|^8.0|^9.0|^10.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0", - "illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "laravel/legacy-factories": "*", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.0" - }, - "suggest": { - "irazasyed/larasupport": "Needed to publish the package configuration in Lumen" - }, - "type": "package", - "extra": { - "branch-alias": { - "dev-master": "v13-dev" - }, - "laravel": { - "providers": [ - "OwenIt\\Auditing\\AuditingServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "OwenIt\\Auditing\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antério Vieira", - "email": "anteriovieira@gmail.com" - }, - { - "name": "Raphael França", - "email": "raphaelfrancabsb@gmail.com" - }, - { - "name": "Morten D. Hansen", - "email": "morten@visia.dk" - } - ], - "description": "Audit changes of your Eloquent models in Laravel/Lumen", - "homepage": "http://laravel-auditing.com", - "keywords": [ - "Accountability", - "Audit", - "auditing", - "changes", - "eloquent", - "history", - "laravel", - "log", - "logging", - "lumen", - "observer", - "record", - "revision", - "tracking" - ], - "support": { - "issues": "https://github.com/owen-it/laravel-auditing/issues", - "source": "https://github.com/owen-it/laravel-auditing" - }, - "time": "2023-06-19T14:51:52+00:00" - }, - { - "name": "php-ffmpeg/php-ffmpeg", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git", - "reference": "eace6f174ff6d206ba648483ebe59760f7f6a0e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/eace6f174ff6d206ba648483ebe59760f7f6a0e1", - "reference": "eace6f174ff6d206ba648483ebe59760f7f6a0e1", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0", - "php": "^8.0 || ^8.1 || ^8.2", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "spatie/temporary-directory": "^2.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/process": "^5.4 || ^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.5", - "phpunit/phpunit": "^9.5.10" - }, - "suggest": { - "php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg" - }, - "type": "library", - "autoload": { - "psr-4": { - "FFMpeg\\": "src/FFMpeg", - "Alchemy\\BinaryDriver\\": "src/Alchemy/BinaryDriver" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Romain Neutron", - "email": "imprec@gmail.com", - "homepage": "http://www.lickmychip.com/" - }, - { - "name": "Phraseanet Team", - "email": "info@alchemy.fr", - "homepage": "http://www.phraseanet.com/" - }, - { - "name": "Patrik Karisch", - "email": "patrik@karisch.guru", - "homepage": "http://www.karisch.guru" - }, - { - "name": "Romain Biard", - "email": "romain.biard@gmail.com", - "homepage": "https://www.strime.io/" - }, - { - "name": "Jens Hausdorf", - "email": "hello@jens-hausdorf.de", - "homepage": "https://jens-hausdorf.de" - }, - { - "name": "Pascal Baljet", - "email": "pascal@protone.media", - "homepage": "https://protone.media" - } - ], - "description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg", - "keywords": [ - "audio", - "audio processing", - "avconv", - "avprobe", - "ffmpeg", - "ffprobe", - "video", - "video processing" - ], - "support": { - "issues": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/issues", - "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.1.0" - }, - "time": "2022-12-09T13:57:05+00:00" - }, - { - "name": "php-jsonpointer/php-jsonpointer", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/raphaelstolt/php-jsonpointer.git", - "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/raphaelstolt/php-jsonpointer/zipball/4428f86c6f23846e9faa5a420c4ef14e485b3afb", - "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb", - "shasum": "" - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^1.11", - "phpunit/phpunit": "4.6.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Rs\\Json": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Raphael Stolt", - "email": "raphael.stolt@gmail.com", - "homepage": "http://raphaelstolt.blogspot.com/" - } - ], - "description": "Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)", - "homepage": "https://github.com/raphaelstolt/php-jsonpointer", - "keywords": [ - "json", - "json pointer", - "json traversal" - ], - "support": { - "issues": "https://github.com/raphaelstolt/php-jsonpointer/issues", - "source": "https://github.com/raphaelstolt/php-jsonpointer/tree/master" - }, - "time": "2016-08-29T08:51:01+00:00" - }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -3607,7 +2334,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -3649,7 +2376,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -3661,56 +2388,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+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" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "psr/clock", @@ -4339,16 +3017,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -4415,7 +3093,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4427,373 +3105,20 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" - }, - { - "name": "spatie/temporary-directory", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/temporary-directory.git", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\TemporaryDirectory\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Vanderbist", - "email": "alex@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Easily create, use and destroy temporary directories", - "homepage": "https://github.com/spatie/temporary-directory", - "keywords": [ - "php", - "spatie", - "temporary-directory" - ], - "support": { - "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-09-25T07:13:36+00:00" - }, - { - "name": "square/square", - "version": "32.0.0.20231018", - "source": { - "type": "git", - "url": "https://github.com/square/square-php-sdk.git", - "reference": "773b5b360766fe9f280c5ef8de83a6a97f7a0555" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/square/square-php-sdk/zipball/773b5b360766fe9f280c5ef8de83a6a97f7a0555", - "reference": "773b5b360766fe9f280c5ef8de83a6a97f7a0555", - "shasum": "" - }, - "require": { - "apimatic/core": "~0.3.0", - "apimatic/core-interfaces": "~0.1.0", - "apimatic/unirest-php": "^4.0.0", - "ext-json": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "phan/phan": "5.4.2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Square\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Square Developer Platform", - "email": "developers@squareup.com", - "homepage": "https://squareup.com/developers" - } - ], - "description": "Use Square APIs to manage and run business including payment, customer, product, inventory, and employee management.", - "homepage": "https://squareup.com/developers", - "keywords": [ - "api", - "sdk", - "square" - ], - "support": { - "issues": "https://github.com/square/square-php-sdk/issues", - "source": "https://github.com/square/square-php-sdk/tree/32.0.0.20231018" - }, - "time": "2023-10-17T19:11:35+00:00" - }, - { - "name": "sunspikes/clamav-validator", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/sunspikes/clamav-validator.git", - "reference": "0db18646b73afbd5094876f48a49e28a9a1426ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sunspikes/clamav-validator/zipball/0db18646b73afbd5094876f48a49e28a9a1426ed", - "reference": "0db18646b73afbd5094876f48a49e28a9a1426ed", - "shasum": "" - }, - "require": { - "ext-sockets": "*", - "illuminate/support": "~5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0", - "illuminate/validation": "~5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0", - "php": "^7.3|^8.0", - "xenolope/quahog": "^3.0" - }, - "require-dev": { - "mockery/mockery": "^1.5.0", - "phpunit/phpunit": "^9.5.10", - "roave/security-advisories": "dev-master", - "scrutinizer/ocular": "dev-master" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Sunspikes\\ClamavValidator\\ClamavValidatorServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Sunspikes\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Krishnaprasad MG", - "email": "sunspikes@gmail.com" - } - ], - "description": "Custom Laravel 5 anti-virus validator for file uploads.", - "homepage": "https://github.com/sunspikes/clamav-validator", - "keywords": [ - "clamav", - "laravel", - "validator", - "virus" - ], - "support": { - "issues": "https://github.com/sunspikes/clamav-validator/issues", - "source": "https://github.com/sunspikes/clamav-validator/tree/v2.7.0" - }, - "time": "2023-03-09T09:54:24+00:00" - }, - { - "name": "symfony/cache", - "version": "v6.3.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/6c1a3ea078c4d88ee892530945df63a87981b2da", - "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/cache": "^2.0|^3.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.2.10" - }, - "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" - }, - "provide": { - "psr/cache-implementation": "2.0|3.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0", - "symfony/cache-implementation": "1.1|2.0|3.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1|^2.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "classmap": [ - "Traits/ValueWrapper.php" - ], - "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 extended PSR-6, PSR-16 (and tags) implementations", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.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": "2023-09-26T15:48:55+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/cache": "^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "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 caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.3.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": "2023-05-23T14:45:45+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "symfony/console", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92", + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92", "shasum": "" }, "require": { @@ -4854,7 +3179,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/console/tree/v6.3.8" }, "funding": [ { @@ -4870,7 +3195,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2023-10-31T08:09:35+00:00" }, { "name": "symfony/css-selector", @@ -5300,16 +3625,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.7", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e" + "reference": "ce332676de1912c4389222987193c3ef38033df6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/59d1837d5d992d16c2628cd0d6b76acf8d69b33e", - "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce332676de1912c4389222987193c3ef38033df6", + "reference": "ce332676de1912c4389222987193c3ef38033df6", "shasum": "" }, "require": { @@ -5357,7 +3682,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.8" }, "funding": [ { @@ -5373,20 +3698,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:55:27+00:00" + "time": "2023-11-07T10:17:15+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.7", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6d4098095f93279d9536a0e9124439560cc764d0" + "reference": "929202375ccf44a309c34aeca8305408442ebcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6d4098095f93279d9536a0e9124439560cc764d0", - "reference": "6d4098095f93279d9536a0e9124439560cc764d0", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/929202375ccf44a309c34aeca8305408442ebcc1", + "reference": "929202375ccf44a309c34aeca8305408442ebcc1", "shasum": "" }, "require": { @@ -5470,7 +3795,7 @@ "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.3.7" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.8" }, "funding": [ { @@ -5486,7 +3811,7 @@ "type": "tidelift" } ], - "time": "2023-10-29T14:31:45+00:00" + "time": "2023-11-10T13:47:32+00:00" }, { "name": "symfony/mailer", @@ -6618,16 +4943,16 @@ }, { "name": "symfony/string", - "version": "v6.3.5", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + "reference": "13880a87790c76ef994c91e87efb96134522577a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a", + "reference": "13880a87790c76ef994c91e87efb96134522577a", "shasum": "" }, "require": { @@ -6684,7 +5009,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.5" + "source": "https://github.com/symfony/string/tree/v6.3.8" }, "funding": [ { @@ -6700,7 +5025,7 @@ "type": "tidelift" } ], - "time": "2023-09-18T10:38:32+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { "name": "symfony/translation", @@ -6877,16 +5202,16 @@ }, { "name": "symfony/uid", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/symfony/uid/zipball/819fa5ac210fb7ddda4752b91a82f50be7493dd9", + "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9", "shasum": "" }, "require": { @@ -6931,7 +5256,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "source": "https://github.com/symfony/uid/tree/v6.3.8" }, "funding": [ { @@ -6947,20 +5272,20 @@ "type": "tidelift" } ], - "time": "2023-04-08T07:25:02+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.6", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", "shasum": "" }, "require": { @@ -7015,7 +5340,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" }, "funding": [ { @@ -7031,130 +5356,7 @@ "type": "tidelift" } ], - "time": "2023-10-12T18:45:56+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v6.3.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "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": "Allows exporting any serializable PHP data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "lazy-loading", - "proxy", - "serialize" - ], - "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" - }, - "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": "2023-08-16T18:14:47+00:00" - }, - { - "name": "thiagoalessio/tesseract_ocr", - "version": "2.13.0", - "source": { - "type": "git", - "url": "https://github.com/thiagoalessio/tesseract-ocr-for-php.git", - "reference": "232a8cb9d571992f9bd1e263f2f6909cf6c173a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thiagoalessio/tesseract-ocr-for-php/zipball/232a8cb9d571992f9bd1e263f2f6909cf6c173a1", - "reference": "232a8cb9d571992f9bd1e263f2f6909cf6c173a1", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/php-code-coverage": "^2.2.4 || ^9.0.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "thiagoalessio\\TesseractOCR\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "thiagoalessio", - "email": "thiagoalessio@me.com" - } - ], - "description": "A wrapper to work with Tesseract OCR inside PHP.", - "keywords": [ - "OCR", - "Tesseract", - "text recognition" - ], - "support": { - "irc": "irc://irc.freenode.net/tesseract-ocr-for-php", - "issues": "https://github.com/thiagoalessio/tesseract-ocr-for-php/issues", - "source": "https://github.com/thiagoalessio/tesseract-ocr-for-php" - }, - "time": "2023-10-05T21:14:48+00:00" + "time": "2023-11-08T10:42:36+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -7211,31 +5413,31 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "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" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -7247,7 +5449,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -7279,7 +5481,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -7291,7 +5493,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -7424,344 +5626,9 @@ "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "xenolope/quahog", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/jonjomckay/quahog.git", - "reference": "b3823659050cc54a160e8739d077c96d8830a2fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jonjomckay/quahog/zipball/b3823659050cc54a160e8739d077c96d8830a2fa", - "reference": "b3823659050cc54a160e8739d077c96d8830a2fa", - "shasum": "" - }, - "require": { - "clue/socket-raw": "^1.3", - "php": ">=7.3" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^9.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Xenolope\\Quahog\\": "src/Quahog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jonjo McKay", - "email": "jonjo@jonjomckay.com" - } - ], - "description": "A PHP client library for ClamAV clamd daemon", - "support": { - "issues": "https://github.com/jonjomckay/quahog/issues", - "source": "https://github.com/jonjomckay/quahog/tree/v3.0.0" - }, - "time": "2020-11-25T12:06:14+00:00" } ], "packages-dev": [ - { - "name": "barryvdh/laravel-ide-helper", - "version": "v2.13.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/81d5b223ff067a1f38e14c100997e153b837fe4a", - "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a", - "shasum": "" - }, - "require": { - "barryvdh/reflection-docblock": "^2.0.6", - "composer/class-map-generator": "^1.0", - "doctrine/dbal": "^2.6 || ^3", - "ext-json": "*", - "illuminate/console": "^8 || ^9 || ^10", - "illuminate/filesystem": "^8 || ^9 || ^10", - "illuminate/support": "^8 || ^9 || ^10", - "nikic/php-parser": "^4.7", - "php": "^7.3 || ^8.0", - "phpdocumentor/type-resolver": "^1.1.0" - }, - "require-dev": { - "ext-pdo_sqlite": "*", - "friendsofphp/php-cs-fixer": "^2", - "illuminate/config": "^8 || ^9 || ^10", - "illuminate/view": "^8 || ^9 || ^10", - "mockery/mockery": "^1.4", - "orchestra/testbench": "^6 || ^7 || ^8", - "phpunit/phpunit": "^8.5 || ^9", - "spatie/phpunit-snapshot-assertions": "^3 || ^4", - "vimeo/psalm": "^3.12" - }, - "suggest": { - "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.12-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\LaravelIdeHelper\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", - "keywords": [ - "autocomplete", - "codeintel", - "helper", - "ide", - "laravel", - "netbeans", - "phpdoc", - "phpstorm", - "sublime" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.13.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2023-02-04T13:56:40+00:00" - }, - { - "name": "barryvdh/reflection-docblock", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", - "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.14|^9" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Barryvdh": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" - }, - "time": "2023-06-14T05:06:27+00:00" - }, - { - "name": "composer/class-map-generator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/class-map-generator.git", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", - "shasum": "" - }, - "require": { - "composer/pcre": "^2.1 || ^3.1", - "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" - }, - "require-dev": { - "phpstan/phpstan": "^1.6", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/filesystem": "^5.4 || ^6", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\ClassMapGenerator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Utilities to scan PHP code and generate class maps.", - "keywords": [ - "classmap" - ], - "support": { - "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.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": "2023-06-30T13:58:57+00:00" - }, - { - "name": "composer/pcre", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "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.1.1" - }, - "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": "2023-10-11T07:11:09+00:00" - }, { "name": "fakerphp/faker", "version": "v1.23.0", @@ -7832,16 +5699,16 @@ }, { "name": "filp/whoops", - "version": "2.15.3", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -7891,7 +5758,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -7899,7 +5766,7 @@ "type": "github" } ], - "time": "2023-07-13T12:00:00+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7952,86 +5819,18 @@ }, "time": "2020-07-09T08:09:16+00:00" }, - { - "name": "itsgoingd/clockwork", - "version": "v5.1.12", - "source": { - "type": "git", - "url": "https://github.com/itsgoingd/clockwork.git", - "reference": "c9dbdbb1f0efd19bb80f1080ef63f1b9b1bc3b1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/c9dbdbb1f0efd19bb80f1080ef63f1b9b1bc3b1b", - "reference": "c9dbdbb1f0efd19bb80f1080ef63f1b9b1bc3b1b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=5.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Clockwork\\Support\\Laravel\\ClockworkServiceProvider" - ], - "aliases": { - "Clockwork": "Clockwork\\Support\\Laravel\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Clockwork\\": "Clockwork/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "itsgoingd", - "email": "itsgoingd@luzer.sk", - "homepage": "https://twitter.com/itsgoingd" - } - ], - "description": "php dev tools in your browser", - "homepage": "https://underground.works/clockwork", - "keywords": [ - "Devtools", - "debugging", - "laravel", - "logging", - "lumen", - "profiling", - "slim" - ], - "support": { - "issues": "https://github.com/itsgoingd/clockwork/issues", - "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.12" - }, - "funding": [ - { - "url": "https://github.com/itsgoingd", - "type": "github" - } - ], - "time": "2022-12-13T00:04:12+00:00" - }, { "name": "laravel/pint", - "version": "v1.13.5", + "version": "v1.13.6", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "df105cf8ce7a8f0b8a9425ff45cd281a5448e423" + "reference": "3e3d2ab01c7d8b484c18e6100ecf53639c744fa7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/df105cf8ce7a8f0b8a9425ff45cd281a5448e423", - "reference": "df105cf8ce7a8f0b8a9425ff45cd281a5448e423", + "url": "https://api.github.com/repos/laravel/pint/zipball/3e3d2ab01c7d8b484c18e6100ecf53639c744fa7", + "reference": "3e3d2ab01c7d8b484c18e6100ecf53639c744fa7", "shasum": "" }, "require": { @@ -8042,13 +5841,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.34.1", - "illuminate/view": "^10.26.2", - "laravel-zero/framework": "^10.1.2", + "friendsofphp/php-cs-fixer": "^3.38.0", + "illuminate/view": "^10.30.1", + "laravel-zero/framework": "^10.3.0", "mockery/mockery": "^1.6.6", "nunomaduro/larastan": "^2.6.4", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.20.0" + "pestphp/pest": "^2.24.2" }, "bin": [ "builds/pint" @@ -8084,7 +5883,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-10-26T09:26:10+00:00" + "time": "2023-11-07T17:59:57+00:00" }, { "name": "laravel/sail", @@ -8502,164 +6301,6 @@ }, "time": "2022-02-21T01:04:05+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/type-resolver", - "version": "1.7.3", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "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.7.3" - }, - "time": "2023-08-12T11:01:26+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.24.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" - }, - "time": "2023-09-26T12:28:12+00:00" - }, { "name": "phpunit/php-code-coverage", "version": "10.1.7", @@ -10306,16 +7947,16 @@ }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", "shasum": "" }, "require": { @@ -10358,7 +7999,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v6.3.8" }, "funding": [ { @@ -10374,7 +8015,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { "name": "theseer/tokenizer", @@ -10436,5 +8077,5 @@ "php": "^8.1" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index ddfaa03..9207160 100644 --- a/config/app.php +++ b/config/app.php @@ -1,7 +1,7 @@ env('APP_TIMEZONE', 'UTC'), + 'timezone' => 'UTC', /* |-------------------------------------------------------------------------- @@ -141,7 +141,7 @@ return [ 'maintenance' => [ 'driver' => 'file', - // 'store' => 'redis', + // 'store' => 'redis', ], /* @@ -159,8 +159,6 @@ return [ /* * Package Service Providers... */ - Intervention\Image\ImageServiceProvider::class, - OwenIt\Auditing\AuditingServiceProvider::class, /* * Application Service Providers... @@ -184,7 +182,7 @@ return [ */ 'aliases' => Facade::defaultAliases()->merge([ - 'ImageIntervention' => Intervention\Image\Facades\Image::class, + // 'Example' => App\Facades\Example::class, ])->toArray(), ]; diff --git a/config/audit.php b/config/audit.php deleted file mode 100644 index 116a6bb..0000000 --- a/config/audit.php +++ /dev/null @@ -1,169 +0,0 @@ - env('AUDITING_ENABLED', true), - - /* - |-------------------------------------------------------------------------- - | Audit Implementation - |-------------------------------------------------------------------------- - | - | Define which Audit model implementation should be used. - | - */ - - 'implementation' => OwenIt\Auditing\Models\Audit::class, - - /* - |-------------------------------------------------------------------------- - | User Morph prefix & Guards - |-------------------------------------------------------------------------- - | - | Define the morph prefix and authentication guards for the User resolver. - | - */ - - 'user' => [ - 'morph_prefix' => 'user', - 'guards' => [ - 'web', - 'api' - ], - 'resolver' => OwenIt\Auditing\Resolvers\UserResolver::class - ], - - /* - |-------------------------------------------------------------------------- - | Audit Resolvers - |-------------------------------------------------------------------------- - | - | Define the User, IP Address, User Agent and URL resolver implementations. - | - */ - 'resolvers' => [ - 'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class, - 'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class, - 'url' => OwenIt\Auditing\Resolvers\UrlResolver::class, - ], - - /* - |-------------------------------------------------------------------------- - | Audit Events - |-------------------------------------------------------------------------- - | - | The Eloquent events that trigger an Audit. - | - */ - - 'events' => [ - 'created', - 'updated', - 'deleted', - 'restored' - ], - - /* - |-------------------------------------------------------------------------- - | Strict Mode - |-------------------------------------------------------------------------- - | - | Enable the strict mode when auditing? - | - */ - - 'strict' => false, - - /* - |-------------------------------------------------------------------------- - | Global exclude - |-------------------------------------------------------------------------- - | - | Have something you always want to exclude by default? - add it here. - | Note that this is overwritten (not merged) with local exclude - | - */ - - 'exclude' => [], - - /* - |-------------------------------------------------------------------------- - | Empty Values - |-------------------------------------------------------------------------- - | - | Should Audit records be stored when the recorded old_values & new_values - | are both empty? - | - | Some events may be empty on purpose. Use allowed_empty_values to exclude - | those from the empty values check. For example when auditing - | model retrieved events which will never have new and old values. - | - | - */ - - 'empty_values' => true, - 'allowed_empty_values' => [ - 'retrieved' - ], - - /* - |-------------------------------------------------------------------------- - | Audit Timestamps - |-------------------------------------------------------------------------- - | - | Should the created_at, updated_at and deleted_at timestamps be audited? - | - */ - - 'timestamps' => false, - - /* - |-------------------------------------------------------------------------- - | Audit Threshold - |-------------------------------------------------------------------------- - | - | Specify a threshold for the amount of Audit records a model can have. - | Zero means no limit. - | - */ - - 'threshold' => 0, - - /* - |-------------------------------------------------------------------------- - | Audit Driver - |-------------------------------------------------------------------------- - | - | The default audit driver used to keep track of changes. - | - */ - - 'driver' => 'database', - - /* - |-------------------------------------------------------------------------- - | Audit Driver Configurations - |-------------------------------------------------------------------------- - | - | Available audit drivers and respective configurations. - | - */ - - 'drivers' => [ - 'database' => [ - 'table' => 'audits', - 'connection' => null, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Audit Console - |-------------------------------------------------------------------------- - | - | Whether console events should be audited (eg. php artisan db:seed). - | - */ - - 'console' => false, -]; diff --git a/config/broadcasting.php b/config/broadcasting.php index bc46200..2410485 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -36,7 +36,8 @@ return [ 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ - 'host' => env('PUSHER_HOST') === null ?: 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com', + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), 'encrypted' => true, diff --git a/config/cache.php b/config/cache.php index daf5e68..d4171e2 100644 --- a/config/cache.php +++ b/config/cache.php @@ -52,6 +52,7 @@ return [ 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), ], 'memcached' => [ @@ -105,6 +106,6 @@ return [ | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache_'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), ]; diff --git a/config/clamav.php b/config/clamav.php deleted file mode 100644 index c58c198..0000000 --- a/config/clamav.php +++ /dev/null @@ -1,69 +0,0 @@ - env('CLAMAV_PREFERRED_SOCKET', 'unix_socket'), - - /* - |-------------------------------------------------------------------------- - | Unix Socket - |-------------------------------------------------------------------------- - | This option defines the location to the unix socket-file. For example - | /var/run/clamav/clamd.ctl - */ - 'unix_socket' => env('CLAMAV_UNIX_SOCKET', '/var/run/clamav/clamd.ctl'), - - /* - |-------------------------------------------------------------------------- - | TCP Socket - |-------------------------------------------------------------------------- - | This option defines the TCP socket to the ClamAV instance. - */ - 'tcp_socket' => env('CLAMAV_TCP_SOCKET', 'tcp://127.0.0.1:3310'), - - /* - |-------------------------------------------------------------------------- - | Socket connect timeout - |-------------------------------------------------------------------------- - | This option defines the maximum time to wait in seconds for socket connection attempts before failure or timeout, - | default null = no limit. - */ - 'socket_connect_timeout' => env('CLAMAV_SOCKET_CONNECT_TIMEOUT', null), - - /* - |-------------------------------------------------------------------------- - | Socket read timeout - |-------------------------------------------------------------------------- - | This option defines the maximum time to wait in seconds for a read. - */ - 'socket_read_timeout' => env('CLAMAV_SOCKET_READ_TIMEOUT', 30), - - /* - |-------------------------------------------------------------------------- - | Throw exceptions instead of returning failures when scan fails. - |-------------------------------------------------------------------------- - | This makes it easier for a developer to find the source of a clamav - | failure, but an end user may only see a 500 error for the user - | if exceptions are not displayed. - */ - 'client_exceptions' => env('CLAMAV_CLIENT_EXCEPTIONS', false), - - /* - |-------------------------------------------------------------------------- - | Skip validation - |-------------------------------------------------------------------------- - | This skips the virus validation for current environment. - | - | Please note when true it won't connect to ClamAV and will skip the virus validation. - */ - 'skip_validation' => env('CLAMAV_SKIP_VALIDATION', false), -]; diff --git a/config/clockwork.php b/config/clockwork.php deleted file mode 100644 index 38f6107..0000000 --- a/config/clockwork.php +++ /dev/null @@ -1,416 +0,0 @@ - env('CLOCKWORK_ENABLE', null), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Features - |------------------------------------------------------------------------------------------------------------------ - | - | You can enable or disable various Clockwork features here. Some features have additional settings (eg. slow query - | threshold for database queries). - | - */ - - 'features' => [ - - // Cache usage stats and cache queries including results - 'cache' => [ - 'enabled' => env('CLOCKWORK_CACHE_ENABLED', true), - - // Collect cache queries - 'collect_queries' => env('CLOCKWORK_CACHE_QUERIES', true), - - // Collect values from cache queries (high performance impact with a very high number of queries) - 'collect_values' => env('CLOCKWORK_CACHE_COLLECT_VALUES', false) - ], - - // Database usage stats and queries - 'database' => [ - 'enabled' => env('CLOCKWORK_DATABASE_ENABLED', true), - - // Collect database queries (high performance impact with a very high number of queries) - 'collect_queries' => env('CLOCKWORK_DATABASE_COLLECT_QUERIES', true), - - // Collect details of models updates (high performance impact with a lot of model updates) - 'collect_models_actions' => env('CLOCKWORK_DATABASE_COLLECT_MODELS_ACTIONS', true), - - // Collect details of retrieved models (very high performance impact with a lot of models retrieved) - 'collect_models_retrieved' => env('CLOCKWORK_DATABASE_COLLECT_MODELS_RETRIEVED', false), - - // Query execution time threshold in milliseconds after which the query will be marked as slow - 'slow_threshold' => env('CLOCKWORK_DATABASE_SLOW_THRESHOLD'), - - // Collect only slow database queries - 'slow_only' => env('CLOCKWORK_DATABASE_SLOW_ONLY', false), - - // Detect and report duplicate queries - 'detect_duplicate_queries' => env('CLOCKWORK_DATABASE_DETECT_DUPLICATE_QUERIES', false) - ], - - // Dispatched events - 'events' => [ - 'enabled' => env('CLOCKWORK_EVENTS_ENABLED', true), - - // Ignored events (framework events are ignored by default) - 'ignored_events' => [ - // App\Events\UserRegistered::class, - // 'user.registered' - ], - ], - - // Laravel log (you can still log directly to Clockwork with laravel log disabled) - 'log' => [ - 'enabled' => env('CLOCKWORK_LOG_ENABLED', true) - ], - - // Sent notifications - 'notifications' => [ - 'enabled' => env('CLOCKWORK_NOTIFICATIONS_ENABLED', true), - ], - - // Performance metrics - 'performance' => [ - // Allow collecting of client metrics. Requires separate clockwork-browser npm package. - 'client_metrics' => env('CLOCKWORK_PERFORMANCE_CLIENT_METRICS', true) - ], - - // Dispatched queue jobs - 'queue' => [ - 'enabled' => env('CLOCKWORK_QUEUE_ENABLED', true) - ], - - // Redis commands - 'redis' => [ - 'enabled' => env('CLOCKWORK_REDIS_ENABLED', true) - ], - - // Routes list - 'routes' => [ - 'enabled' => env('CLOCKWORK_ROUTES_ENABLED', false), - - // Collect only routes from particular namespaces (only application routes by default) - 'only_namespaces' => [ 'App' ] - ], - - // Rendered views - 'views' => [ - 'enabled' => env('CLOCKWORK_VIEWS_ENABLED', true), - - // Collect views including view data (high performance impact with a high number of views) - 'collect_data' => env('CLOCKWORK_VIEWS_COLLECT_DATA', false), - - // Use Twig profiler instead of Laravel events for apps using laravel-twigbridge (more precise, but does - // not support collecting view data) - 'use_twig_profiler' => env('CLOCKWORK_VIEWS_USE_TWIG_PROFILER', false) - ] - - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Enable web UI - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork comes with a web UI accessible via http://your.app/clockwork. Here you can enable or disable this - | feature. You can also set a custom path for the web UI. - | - */ - - 'web' => env('CLOCKWORK_WEB', true), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Enable toolbar - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can show a toolbar with basic metrics on all responses. Here you can enable or disable this feature. - | Requires a separate clockwork-browser npm library. - | For installation instructions see https://underground.works/clockwork/#docs-viewing-data - | - */ - - 'toolbar' => env('CLOCKWORK_TOOLBAR', true), - - /* - |------------------------------------------------------------------------------------------------------------------ - | HTTP requests collection - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork collects data about HTTP requests to your app. Here you can choose which requests should be collected. - | - */ - - 'requests' => [ - // With on-demand mode enabled, Clockwork will only profile requests when the browser extension is open or you - // manually pass a "clockwork-profile" cookie or get/post data key. - // Optionally you can specify a "secret" that has to be passed as the value to enable profiling. - 'on_demand' => env('CLOCKWORK_REQUESTS_ON_DEMAND', false), - - // Collect only errors (requests with HTTP 4xx and 5xx responses) - 'errors_only' => env('CLOCKWORK_REQUESTS_ERRORS_ONLY', false), - - // Response time threshold in milliseconds after which the request will be marked as slow - 'slow_threshold' => env('CLOCKWORK_REQUESTS_SLOW_THRESHOLD'), - - // Collect only slow requests - 'slow_only' => env('CLOCKWORK_REQUESTS_SLOW_ONLY', false), - - // Sample the collected requests (e.g. set to 100 to collect only 1 in 100 requests) - 'sample' => env('CLOCKWORK_REQUESTS_SAMPLE', false), - - // List of URIs that should not be collected - 'except' => [ - '/horizon/.*', // Laravel Horizon requests - '/telescope/.*', // Laravel Telescope requests - '/_debugbar/.*', // Laravel DebugBar requests - ], - - // List of URIs that should be collected, any other URI will not be collected if not empty - 'only' => [ - // '/api/.*' - ], - - // Don't collect OPTIONS requests, mostly used in the CSRF pre-flight requests and are rarely of interest - 'except_preflight' => env('CLOCKWORK_REQUESTS_EXCEPT_PREFLIGHT', true) - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Artisan commands collection - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can collect data about executed artisan commands. Here you can enable and configure which commands - | should be collected. - | - */ - - 'artisan' => [ - // Enable or disable collection of executed Artisan commands - 'collect' => env('CLOCKWORK_ARTISAN_COLLECT', false), - - // List of commands that should not be collected (built-in commands are not collected by default) - 'except' => [ - // 'inspire' - ], - - // List of commands that should be collected, any other command will not be collected if not empty - 'only' => [ - // 'inspire' - ], - - // Enable or disable collection of command output - 'collect_output' => env('CLOCKWORK_ARTISAN_COLLECT_OUTPUT', false), - - // Enable or disable collection of built-in Laravel commands - 'except_laravel_commands' => env('CLOCKWORK_ARTISAN_EXCEPT_LARAVEL_COMMANDS', true) - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Queue jobs collection - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can collect data about executed queue jobs. Here you can enable and configure which queue jobs should - | be collected. - | - */ - - 'queue' => [ - // Enable or disable collection of executed queue jobs - 'collect' => env('CLOCKWORK_QUEUE_COLLECT', false), - - // List of queue jobs that should not be collected - 'except' => [ - // App\Jobs\ExpensiveJob::class - ], - - // List of queue jobs that should be collected, any other queue job will not be collected if not empty - 'only' => [ - // App\Jobs\BuggyJob::class - ] - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Tests collection - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can collect data about executed tests. Here you can enable and configure which tests should be - | collected. - | - */ - - 'tests' => [ - // Enable or disable collection of ran tests - 'collect' => env('CLOCKWORK_TESTS_COLLECT', false), - - // List of tests that should not be collected - 'except' => [ - // Tests\Unit\ExampleTest::class - ] - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Enable data collection when Clockwork is disabled - |------------------------------------------------------------------------------------------------------------------ - | - | You can enable this setting to collect data even when Clockwork is disabled, e.g. for future analysis. - | - */ - - 'collect_data_always' => env('CLOCKWORK_COLLECT_DATA_ALWAYS', false), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Metadata storage - |------------------------------------------------------------------------------------------------------------------ - | - | Configure how is the metadata collected by Clockwork stored. Two options are available: - | - files - A simple fast storage implementation storing data in one-per-request files. - | - sql - Stores requests in a sql database. Supports MySQL, PostgreSQL and SQLite. Requires PDO. - | - */ - - 'storage' => env('CLOCKWORK_STORAGE', 'files'), - - // Path where the Clockwork metadata is stored - 'storage_files_path' => env('CLOCKWORK_STORAGE_FILES_PATH', storage_path('clockwork')), - - // Compress the metadata files using gzip, trading a little bit of performance for lower disk usage - 'storage_files_compress' => env('CLOCKWORK_STORAGE_FILES_COMPRESS', false), - - // SQL database to use, can be a name of database configured in database.php or a path to a SQLite file - 'storage_sql_database' => env('CLOCKWORK_STORAGE_SQL_DATABASE', storage_path('clockwork.sqlite')), - - // SQL table name to use, the table is automatically created and updated when needed - 'storage_sql_table' => env('CLOCKWORK_STORAGE_SQL_TABLE', 'clockwork'), - - // Maximum lifetime of collected metadata in minutes, older requests will automatically be deleted, false to disable - 'storage_expiration' => env('CLOCKWORK_STORAGE_EXPIRATION', (60 * 24 * 7)), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Authentication - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can be configured to require authentication before allowing access to the collected data. This might be - | useful when the application is publicly accessible. Setting to true will enable a simple authentication with a - | pre-configured password. You can also pass a class name of a custom implementation. - | - */ - - 'authentication' => env('CLOCKWORK_AUTHENTICATION', false), - - // Password for the simple authentication - 'authentication_password' => env('CLOCKWORK_AUTHENTICATION_PASSWORD', 'VerySecretPassword'), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Stack traces collection - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork can collect stack traces for log messages and certain data like database queries. Here you can set - | whether to collect stack traces, limit the number of collected frames and set further configuration. Collecting - | long stack traces considerably increases metadata size. - | - */ - - 'stack_traces' => [ - // Enable or disable collecting of stack traces - 'enabled' => env('CLOCKWORK_STACK_TRACES_ENABLED', true), - - // Limit the number of frames to be collected - 'limit' => env('CLOCKWORK_STACK_TRACES_LIMIT', 10), - - // List of vendor names to skip when determining caller, common vendors are automatically added - 'skip_vendors' => [ - // 'phpunit' - ], - - // List of namespaces to skip when determining caller - 'skip_namespaces' => [ - // 'Laravel' - ], - - // List of class names to skip when determining caller - 'skip_classes' => [ - // App\CustomLog::class - ] - - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Serialization - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork serializes the collected data to json for storage and transfer. Here you can configure certain aspects - | of serialization. Serialization has a large effect on the cpu time and memory usage. - | - */ - - // Maximum depth of serialized multi-level arrays and objects - 'serialization_depth' => env('CLOCKWORK_SERIALIZATION_DEPTH', 10), - - // A list of classes that will never be serialized (e.g. a common service container class) - 'serialization_blackbox' => [ - \Illuminate\Container\Container::class, - \Illuminate\Foundation\Application::class, - \Laravel\Lumen\Application::class - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Register helpers - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork comes with a "clock" global helper function. You can use this helper to quickly log something and to - | access the Clockwork instance. - | - */ - - 'register_helpers' => env('CLOCKWORK_REGISTER_HELPERS', true), - - /* - |------------------------------------------------------------------------------------------------------------------ - | Send headers for AJAX request - |------------------------------------------------------------------------------------------------------------------ - | - | When trying to collect data, the AJAX method can sometimes fail if it is missing required headers. For example, an - | API might require a version number using Accept headers to route the HTTP request to the correct codebase. - | - */ - - 'headers' => [ - // 'Accept' => 'application/vnd.com.whatever.v1+json', - ], - - /* - |------------------------------------------------------------------------------------------------------------------ - | Server timing - |------------------------------------------------------------------------------------------------------------------ - | - | Clockwork supports the W3C Server Timing specification, which allows for collecting a simple performance metrics - | in a cross-browser way. E.g. in Chrome, your app, database and timeline event timings will be shown in the Dev - | Tools network tab. This setting specifies the max number of timeline events that will be sent. Setting to false - | will disable the feature. - | - */ - - 'server_timing' => env('CLOCKWORK_SERVER_TIMING', 10) - -]; diff --git a/config/contact.php b/config/contact.php deleted file mode 100644 index 2fac29b..0000000 --- a/config/contact.php +++ /dev/null @@ -1,6 +0,0 @@ - env('CONTACT_ADDRESS'), - 'contact_subject' => env('CONTACT_SUBJECT'), -]; diff --git a/config/database.php b/config/database.php index 690645a..137ad18 100644 --- a/config/database.php +++ b/config/database.php @@ -58,7 +58,7 @@ return [ 'prefix_indexes' => true, 'strict' => true, 'engine' => null, - 'options' => extension_loaded('pdo_mysql') === true ? array_filter([ + 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], @@ -125,7 +125,7 @@ return [ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), ], 'default' => [ diff --git a/config/filesystems.php b/config/filesystems.php index c3b8430..e9d9dbd 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -32,43 +32,30 @@ return [ 'local' => [ 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL') . "/storage/{name}", - 'public' => true, - 'throw' => false, - ], - - 'cdn' => [ - 'driver' => 's3', - 'key' => env('AWS_PUBLIC_ACCESS_KEY_ID'), - 'secret' => env('AWS_PUBLIC_SECRET_ACCESS_KEY'), - 'region' => env('AWS_PUBLIC_DEFAULT_REGION'), - 'bucket' => env('AWS_PUBLIC_BUCKET'), - 'url' => env('AWS_PUBLIC_URL') . '/{name}', - 'endpoint' => env('AWS_PUBLIC_ENDPOINT'), - 'use_path_style_endpoint' => env('AWS_PUBLIC_USE_PATH_STYLE_ENDPOINT', false), - 'throw' => false, - 'public' => true, - 'options' => [ - 'ACL' => '', - ] - ], - - 'private' => [ - 'driver' => 'local', - 'root' => storage_path('app/private'), - 'url' => env('APP_URL_API') . '/media/{id}/download', - 'visibility' => 'private', + 'root' => storage_path('app'), 'throw' => false, ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL') . '/storage/{name}', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + ], /* diff --git a/config/hashing.php b/config/hashing.php index bcd3be4..0e8a0bb 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -29,7 +29,8 @@ return [ */ 'bcrypt' => [ - 'rounds' => env('BCRYPT_ROUNDS', 10), + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => true, ], /* @@ -47,6 +48,7 @@ return [ 'memory' => 65536, 'threads' => 1, 'time' => 4, + 'verify' => true, ], ]; diff --git a/config/image.php b/config/image.php deleted file mode 100644 index 2b1d2c3..0000000 --- a/config/image.php +++ /dev/null @@ -1,20 +0,0 @@ - 'gd' - -]; diff --git a/config/logging.php b/config/logging.php index d000835..c44d276 100644 --- a/config/logging.php +++ b/config/logging.php @@ -89,7 +89,7 @@ return [ 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), - 'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], 'processors' => [PsrLogMessageProcessor::class], ], diff --git a/config/mail.php b/config/mail.php index 566f0c1..d7416b1 100644 --- a/config/mail.php +++ b/config/mail.php @@ -36,6 +36,7 @@ return [ 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', + 'url' => env('MAIL_URL'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), @@ -58,6 +59,7 @@ return [ 'postmark' => [ 'transport' => 'postmark', + // 'message_stream_id' => null, // 'client' => [ // 'timeout' => 5, // ], @@ -84,10 +86,6 @@ return [ 'log', ], ], - - 'office365mail' => [ - 'transport' => 'office365mail', - ], ], /* diff --git a/config/purify.php b/config/purify.php deleted file mode 100644 index 7bafb3b..0000000 --- a/config/purify.php +++ /dev/null @@ -1,87 +0,0 @@ - 'default', - - /* - |-------------------------------------------------------------------------- - | Config sets - |-------------------------------------------------------------------------- - | - | Here you may configure various sets of configuration for differentiated use of HTMLPurifier. - | A specific set of configuration can be applied by calling the "config($name)" method on - | a Purify instance. Feel free to add/remove/customize these attributes as you wish. - | - | Documentation: http://htmlpurifier.org/live/configdoc/plain.html - | - | Core.Encoding The encoding to convert input to. - | HTML.Doctype Doctype to use during filtering. - | HTML.Allowed The allowed HTML Elements with their allowed attributes. - | HTML.ForbiddenElements The forbidden HTML elements. Elements that are listed in this - | string will be removed, however their content will remain. - | CSS.AllowedProperties The Allowed CSS properties. - | AutoFormat.AutoParagraph Newlines are converted in to paragraphs whenever possible. - | AutoFormat.RemoveEmpty Remove empty elements that contribute no semantic information to the document. - | - */ - - 'configs' => [ - // @codingStandardsIgnoreStart - 'default' => [ - 'Core.Encoding' => 'utf-8', - 'HTML.Doctype' => 'HTML 4.01 Transitional', - 'HTML.Allowed' => 'h1,h2,h3,h4,h5,h6,b,strong,i,em,s,del,a[href|title],ul,ol,li,p[style],br,span,img[width|height|alt|src]', - 'HTML.ForbiddenElements' => '', - 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align', - 'AutoFormat.AutoParagraph' => false, - 'AutoFormat.RemoveEmpty' => false, - ], - // @codingStandardsIgnoreEnd - - ], - - /* - |-------------------------------------------------------------------------- - | HTMLPurifier definitions - |-------------------------------------------------------------------------- - | - | Here you may specify a class that augments the HTML definitions used by - | HTMLPurifier. Additional HTML5 definitions are provided out of the box. - | When specifying a custom class, make sure it implements the interface: - | - | \Stevebauman\Purify\Definitions\Definition - | - | Note that these definitions are applied to every Purifier instance. - | - | Documentation: http://htmlpurifier.org/docs/enduser-customize.html - | - */ - - 'definitions' => Html5Definition::class, - - /* - |-------------------------------------------------------------------------- - | Serializer location - |-------------------------------------------------------------------------- - | - | The location where HTMLPurifier can store its temporary serializer files. - | The filepath should be accessible and writable by the web server. - | A good place for this is in the framework's own storage path. - | - */ - - 'serializer' => storage_path('app/purify'), - -]; diff --git a/config/queue.php b/config/queue.php index 25ea5a8..01c6b05 100644 --- a/config/queue.php +++ b/config/queue.php @@ -73,6 +73,22 @@ return [ ], + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + /* |-------------------------------------------------------------------------- | Failed Queue Jobs diff --git a/config/sanctum.php b/config/sanctum.php index b75adb2..35d75b3 100644 --- a/config/sanctum.php +++ b/config/sanctum.php @@ -41,12 +41,27 @@ return [ |-------------------------------------------------------------------------- | | This value controls the number of minutes until an issued token will be - | considered expired. If this value is null, personal access tokens do - | not expire. This won't tweak the lifetime of first-party sessions. + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. | */ - 'expiration' => 40320, // 28 days + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), /* |-------------------------------------------------------------------------- @@ -60,8 +75,9 @@ return [ */ 'middleware' => [ - 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, ], ]; diff --git a/config/services.php b/config/services.php index 509e737..0ace530 100644 --- a/config/services.php +++ b/config/services.php @@ -30,4 +30,5 @@ return [ 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), ], + ]; diff --git a/config/session.php b/config/session.php index 1b99f22..8fed97c 100644 --- a/config/session.php +++ b/config/session.php @@ -128,7 +128,7 @@ return [ 'cookie' => env( 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ), /* diff --git a/database/factories/ArticleFactory.php b/database/factories/ArticleFactory.php deleted file mode 100644 index 3fc95a9..0000000 --- a/database/factories/ArticleFactory.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ArticleFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - $publishDate = Carbon::parse($this->faker->dateTimeBetween('-1 month', '+1 month')); - - return [ - 'title' => $this->faker->sentence(), - 'slug' => $this->faker->slug(), - 'publish_at' => $publishDate, - 'content' => $this->faker->paragraphs(3, true), - 'user_id' => $this->faker->uuid(), - 'hero' => $this->faker->uuid(), - ]; - } -} diff --git a/database/factories/EventFactory.php b/database/factories/EventFactory.php deleted file mode 100644 index 285ca45..0000000 --- a/database/factories/EventFactory.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -class EventFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - $startDate = Carbon::parse($this->faker->dateTimeBetween('now', '+1 year')); - $endDate = Carbon::parse($this->faker->dateTimeBetween($startDate, '+1 year')); - $publishDate = Carbon::parse($this->faker->dateTimeBetween('-1 month', '+1 month')); - - return [ - 'title' => $this->faker->sentence(), - 'location' => $this->faker->randomElement(['online', 'physical']), - 'address' => $this->faker->address(), - 'start_at' => $startDate, - 'end_at' => $endDate, - 'publish_at' => $publishDate, - 'status' => $this->faker->randomElement(['draft', 'soon', 'open', 'closed', 'cancelled']), - 'registration_type' => $this->faker->randomElement(['none', 'email', 'link', 'message']), - 'registration_data' => $this->faker->sentence(), - 'hero' => $this->faker->uuid(), - 'content' => $this->faker->paragraphs(3, true), - 'price' => $this->faker->numberBetween(0, 150), - 'ages' => $this->faker->regexify('\d+(\+|\-\d+)?'), - ]; - } -} diff --git a/database/factories/MediaFactory.php b/database/factories/MediaFactory.php deleted file mode 100644 index e896c4a..0000000 --- a/database/factories/MediaFactory.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ -class MediaFactory extends Factory -{ - /** - * Define the model's default state. - * - * @return array - */ - public function definition(): array - { - return [ - 'title' => $this->faker->sentence(), - 'name' => storage_path('app/public/') . $this->faker->slug() . '.' . $this->faker->fileExtension(), - 'mime_type' => $this->faker->mimeType(), - 'user_id' => $this->faker->uuid(), - 'size' => $this->faker->numberBetween(1000, 1000000), - ]; - } -} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index c874bda..cde014a 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; /** @@ -10,6 +11,8 @@ use Illuminate\Support\Str; */ class UserFactory extends Factory { + protected static ?string $password; + /** * Define the model's default state. * @@ -17,23 +20,12 @@ class UserFactory extends Factory */ public function definition(): array { - $faker = \Faker\Factory::create(); - $faker->addProvider(new \Faker\Provider\CustomInternetProvider($faker)); - - $first_name = $faker->firstName(); - $last_name = $faker->lastName(); - - $display_name = $first_name . ' ' . $last_name; - return [ - 'first_name' => $first_name, - 'last_name' => $last_name, - 'email' => $faker->safeEmail(), + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), - 'phone' => $faker->phoneNumber(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'password' => static::$password ??= Hash::make('password'), 'remember_token' => Str::random(10), - 'display_name' => $display_name, ]; } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 53656a4..444fafb 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -12,15 +12,11 @@ return new class extends Migration public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('username')->unique(); - $table->string('password')->nullable(); - $table->boolean('enabled')->default(true); - $table->string('first_name'); - $table->string('last_name'); - $table->string('email'); + $table->id(); + $table->string('name'); + $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); - $table->string('phone')->nullable(); + $table->string('password'); $table->rememberToken(); $table->timestamps(); }); diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 4f42fe6..0000000 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,28 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('password_resets'); - } -}; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php index 29db28a..e828ad8 100644 --- a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('personal_access_tokens', function (Blueprint $table) { $table->id(); - $table->uuidMorphs('tokenable'); + $table->morphs('tokenable'); $table->string('name'); $table->string('token', 64)->unique(); $table->text('abilities')->nullable(); diff --git a/database/migrations/2022_12_28_113117_create_posts_table.php b/database/migrations/2022_12_28_113117_create_posts_table.php deleted file mode 100644 index 8c3a230..0000000 --- a/database/migrations/2022_12_28_113117_create_posts_table.php +++ /dev/null @@ -1,33 +0,0 @@ -uuid('id')->primary(); - $table->string('slug', 255)->unique(); - $table->string('title', 255); - $table->timestamp('publish_at')->nullable()->useCurrent(); - $table->uuid('user_id'); - $table->uuid('hero'); - $table->text('content'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('posts'); - } -}; diff --git a/database/migrations/2022_12_30_105153_create_media_table.php b/database/migrations/2022_12_30_105153_create_media_table.php deleted file mode 100644 index 7f9209c..0000000 --- a/database/migrations/2022_12_30_105153_create_media_table.php +++ /dev/null @@ -1,33 +0,0 @@ -uuid('id')->primary(); - $table->uuid('user_id'); - $table->string('title'); - $table->string('name'); - $table->string('mime'); - $table->string('permission')->nullable(); - $table->bigInteger('size'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('media'); - } -}; diff --git a/database/migrations/2022_12_30_110049_create_permissions_table.php b/database/migrations/2022_12_30_110049_create_permissions_table.php deleted file mode 100644 index 5977404..0000000 --- a/database/migrations/2022_12_30_110049_create_permissions_table.php +++ /dev/null @@ -1,31 +0,0 @@ -uuid('id')->primary(); - $table->string('permission'); - $table->uuid('user_id'); - $table->timestamps(); - - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('permissions'); - } -}; diff --git a/database/migrations/2023_01_01_103251_create_events_table.php b/database/migrations/2023_01_01_103251_create_events_table.php deleted file mode 100644 index 211be9c..0000000 --- a/database/migrations/2023_01_01_103251_create_events_table.php +++ /dev/null @@ -1,38 +0,0 @@ -uuid('id')->primary(); - $table->string('title'); - $table->string('location'); - $table->string('address')->nullable(); - $table->timestamp('start_at')->useCurrent(); - $table->timestamp('end_at')->useCurrent(); - $table->timestamp('publish_at')->useCurrent()->nullable(); - $table->string('status')->default('draft'); - $table->string('registration_type'); - $table->string('registration_data')->nullable(); - $table->uuid('hero'); - $table->text('content')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('events'); - } -}; diff --git a/database/migrations/2023_01_021_050482_create_subscriptions_table.php b/database/migrations/2023_01_021_050482_create_subscriptions_table.php deleted file mode 100644 index 635ff85..0000000 --- a/database/migrations/2023_01_021_050482_create_subscriptions_table.php +++ /dev/null @@ -1,29 +0,0 @@ -uuid('id')->primary(); - $table->string('email'); - $table->timestamp('confirmed_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('subscriptions'); - } -}; diff --git a/database/migrations/2023_01_05_043106_create_jobs_table.php b/database/migrations/2023_01_05_043106_create_jobs_table.php deleted file mode 100644 index 6098d9b..0000000 --- a/database/migrations/2023_01_05_043106_create_jobs_table.php +++ /dev/null @@ -1,32 +0,0 @@ -bigIncrements('id'); - $table->string('queue')->index(); - $table->longText('payload'); - $table->unsignedTinyInteger('attempts'); - $table->unsignedInteger('reserved_at')->nullable(); - $table->unsignedInteger('available_at'); - $table->unsignedInteger('created_at'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('jobs'); - } -}; diff --git a/database/migrations/2023_01_05_112154_create_user_codes_table.php b/database/migrations/2023_01_05_112154_create_user_codes_table.php deleted file mode 100644 index dfae89e..0000000 --- a/database/migrations/2023_01_05_112154_create_user_codes_table.php +++ /dev/null @@ -1,33 +0,0 @@ -id(); - $table->char('code', 6)->unique(); - $table->string('action'); - $table->string('data')->nullable(); - $table->uuid('user_id'); - $table->timestamps(); - - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('user_codes'); - } -}; diff --git a/database/migrations/2023_01_08_045958_create_audits_table.php b/database/migrations/2023_01_08_045958_create_audits_table.php deleted file mode 100644 index 42669aa..0000000 --- a/database/migrations/2023_01_08_045958_create_audits_table.php +++ /dev/null @@ -1,43 +0,0 @@ -create('audits', function (Blueprint $table) { - - $morphPrefix = Config::get('audit.user.morph_prefix', 'user'); - - $table->bigIncrements('id'); - $table->string($morphPrefix . '_type')->nullable(); - $table->uuid($morphPrefix . '_id')->nullable(); - $table->string('event'); - $table->uuidMorphs('auditable'); - $table->text('old_values')->nullable(); - $table->text('new_values')->nullable(); - $table->text('url')->nullable(); - $table->ipAddress('ip_address')->nullable(); - $table->string('user_agent', 1023)->nullable(); - $table->string('tags')->nullable(); - $table->timestamps(); - - $table->index([$morphPrefix . '_id', $morphPrefix . '_type']); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::connection(config('audit.drivers.database.connection', config('database.default')))->drop('audits'); - } -}; diff --git a/database/migrations/2023_01_08_050847_create_user_logins_table.php b/database/migrations/2023_01_08_050847_create_user_logins_table.php deleted file mode 100644 index 3752181..0000000 --- a/database/migrations/2023_01_08_050847_create_user_logins_table.php +++ /dev/null @@ -1,35 +0,0 @@ -uuid('id')->primary(); - $table->uuid('user_id'); - $table->string('token'); - $table->timestamp('login')->nullable(); - $table->timestamp('logout')->nullable(); - $table->ipAddress('ip_address')->nullable(); - $table->string('user_agent', 1023)->nullable(); - $table->timestamps(); - - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('user_logins'); - } -}; diff --git a/database/migrations/2023_01_24_080416_create_analytics_table.php b/database/migrations/2023_01_24_080416_create_analytics_table.php deleted file mode 100644 index 3c5bb9a..0000000 --- a/database/migrations/2023_01_24_080416_create_analytics_table.php +++ /dev/null @@ -1,31 +0,0 @@ -id(); - $table->string('type'); - $table->string('attribute'); - $table->text('useragent'); - $table->string('ip'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('analytics'); - } -}; diff --git a/database/migrations/2023_02_24_023054_create_attachments_table.php b/database/migrations/2023_02_24_023054_create_attachments_table.php deleted file mode 100644 index 54b8441..0000000 --- a/database/migrations/2023_02_24_023054_create_attachments_table.php +++ /dev/null @@ -1,31 +0,0 @@ -id(); - $table->uuid('media_id'); - $table->uuidMorphs('attachable'); - $table->timestamps(); - - $table->foreign('media_id')->references('id')->on('media')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('attachments'); - } -}; diff --git a/database/migrations/2023_02_28_090609_add_price_to_events_table.php b/database/migrations/2023_02_28_090609_add_price_to_events_table.php deleted file mode 100644 index 5fdc902..0000000 --- a/database/migrations/2023_02_28_090609_add_price_to_events_table.php +++ /dev/null @@ -1,28 +0,0 @@ -string('price')->default(""); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('events', function (Blueprint $table) { - $table->dropColumn('price'); - }); - } -}; diff --git a/database/migrations/2023_03_01_075334_add_ages_to_events_table.php b/database/migrations/2023_03_01_075334_add_ages_to_events_table.php deleted file mode 100644 index 22f0ceb..0000000 --- a/database/migrations/2023_03_01_075334_add_ages_to_events_table.php +++ /dev/null @@ -1,28 +0,0 @@ -string('ages')->default(""); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('events', function (Blueprint $table) { - $table->dropColumn('ages'); - }); - } -}; diff --git a/database/migrations/2023_04_05_222458_update_media_table.php b/database/migrations/2023_04_05_222458_update_media_table.php deleted file mode 100644 index 9a7ee94..0000000 --- a/database/migrations/2023_04_05_222458_update_media_table.php +++ /dev/null @@ -1,55 +0,0 @@ -whereNull('mime')->update(['mime' => '']); - DB::table('media')->whereNull('permission')->update(['permission' => '']); - - Schema::table('media', function (Blueprint $table) { - $table->string('storage')->default("cdn"); - $table->string('description')->default(""); - $table->string('status')->default(""); - $table->string('dimensions')->default(""); - $table->text('variants'); - - $table->bigInteger('size')->default(0)->change(); - $table->string('permission')->default("")->nullable(false)->change(); - - $table->string('mime')->default("")->nullable(false)->change(); - }); - - Schema::table('media', function(Blueprint $table) { - $table->renameColumn('mime', 'mime_type'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('media', function (Blueprint $table) { - $table->bigInteger('size')->change(); - $table->string('mime_type')->nullable(true)->change(); - $table->string('permission')->nullable(true)->change(); - - $table->renameColumn('mime_type', 'mime'); - - $table->dropColumn('status'); - $table->dropColumn('dimensions'); - $table->dropColumn('variants'); - $table->dropColumn('description'); - $table->dropColumn('storage'); - }); - } -}; diff --git a/database/migrations/2023_04_18_111723_update_no_nullable_phone_on_users_table.php b/database/migrations/2023_04_18_111723_update_no_nullable_phone_on_users_table.php deleted file mode 100644 index 67d11ce..0000000 --- a/database/migrations/2023_04_18_111723_update_no_nullable_phone_on_users_table.php +++ /dev/null @@ -1,31 +0,0 @@ -whereNull('phone')->update(['phone' => '']); - - Schema::table('users', function (Blueprint $table) { - $table->string('phone')->default("")->nullable(false)->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->string('phone')->nullable(true)->change(); - }); - } -}; diff --git a/database/migrations/2023_04_18_113354_add_display_name_to_users_table.php b/database/migrations/2023_04_18_113354_add_display_name_to_users_table.php deleted file mode 100644 index da2d613..0000000 --- a/database/migrations/2023_04_18_113354_add_display_name_to_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -string('display_name')->default(""); - }); - - // Update existing rows with display_name - DB::table('users')->select('id', 'username')->orderBy('id')->chunk(100, function ($users) { - foreach ($users as $user) { - DB::table('users')->where('id', $user->id)->update(['display_name' => $user->username]); - } - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('display_name'); - }); - } -}; diff --git a/database/migrations/2023_04_19_122711_drop_subscriptions_table.php b/database/migrations/2023_04_19_122711_drop_subscriptions_table.php deleted file mode 100644 index 0ca3633..0000000 --- a/database/migrations/2023_04_19_122711_drop_subscriptions_table.php +++ /dev/null @@ -1,29 +0,0 @@ -uuid('id')->primary(); - $table->string('email'); - $table->timestamp('confirmed_at')->nullable(); - $table->timestamps(); - }); - } -}; diff --git a/database/migrations/2023_04_25_235615_update_posts_table.php b/database/migrations/2023_04_25_235615_update_posts_table.php deleted file mode 100644 index aac9dd7..0000000 --- a/database/migrations/2023_04_25_235615_update_posts_table.php +++ /dev/null @@ -1,31 +0,0 @@ -select('id', 'permission')->where('permission', 'admin/posts')->update(['permission' => 'admin/articles']); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::rename('articles', 'posts'); - - // Update permissions to use posts instead of articles - DB::table('permissions')->select('id', 'permission')->where('permission', 'admin/articles')->update(['permission' => 'admin/posts']); - } -}; diff --git a/database/migrations/2023_05_01_045630_update_analytics_table.php b/database/migrations/2023_05_01_045630_update_analytics_table.php deleted file mode 100644 index 502672f..0000000 --- a/database/migrations/2023_05_01_045630_update_analytics_table.php +++ /dev/null @@ -1,72 +0,0 @@ -bigInteger('session')->nullable(false); - $table->string('attribute')->default('')->change(); - }); - - DB::table('analytics') - ->where('type', 'pageview') - ->update(['type' => 'apirequest']); - - // Set first session - $session = 0; - - do { - $rows = DB::table('analytics') - ->whereNull('session') - ->orWhere('session', 0) - ->orderBy('created_at', 'asc') - ->limit(1) - ->get(); - - if($rows->isEmpty()) { - break; - } - - $sessionRow = $rows->first(); - DB::table('analytics')->where('id', $sessionRow->id)->update(['session' => ++$session]); - $lastSessionUpdate = $sessionRow->created_at; - - do { - $sameSessionRows = DB::table('analytics') - ->whereNull('session') - ->orWhere('session', 0) - ->where('useragent', $sessionRow->useragent) - ->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('30 minutes', strtotime($lastSessionUpdate)))) - ->orderBy('created_at', 'desc') - ->get(); - - if($sameSessionRows->isEmpty()) { - break; - } - - $ids = $sameSessionRows->pluck('id')->toArray(); - DB::table('analytics')->whereIn('id', $ids)->update(['session' => $session]); - $lastSessionUpdate = $sameSessionRows->first()->created_at; - } while(true); - } while(true); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('analytics', function (Blueprint $table) { - $table->dropColumn('session'); - }); - } -}; diff --git a/database/migrations/2023_05_04_071954_remove_username_from_users_table.php b/database/migrations/2023_05_04_071954_remove_username_from_users_table.php deleted file mode 100644 index aa0df58..0000000 --- a/database/migrations/2023_05_04_071954_remove_username_from_users_table.php +++ /dev/null @@ -1,31 +0,0 @@ -dropColumn('username'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->string('username')->unique(); - }); - - DB::table('users')->update(['username' => DB::raw('display_name')]); - } -}; diff --git a/database/migrations/2023_05_06_080418_create_shortlinks_table.php b/database/migrations/2023_05_06_080418_create_shortlinks_table.php deleted file mode 100644 index 7c6f3fd..0000000 --- a/database/migrations/2023_05_06_080418_create_shortlinks_table.php +++ /dev/null @@ -1,29 +0,0 @@ -id(); - $table->string('code', 4)->unique(); - $table->string('url'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('shortlinks'); - } -}; diff --git a/database/migrations/2023_05_06_082705_add_counter_to_shortlinks_table.php b/database/migrations/2023_05_06_082705_add_counter_to_shortlinks_table.php deleted file mode 100644 index 3c73bb5..0000000 --- a/database/migrations/2023_05_06_082705_add_counter_to_shortlinks_table.php +++ /dev/null @@ -1,28 +0,0 @@ -bigInteger('used')->default(0); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('shortlinks', function (Blueprint $table) { - $table->dropColumn('used'); - }); - } -}; diff --git a/database/migrations/2023_05_08_021929_update_users_table.php b/database/migrations/2023_05_08_021929_update_users_table.php deleted file mode 100644 index 497de63..0000000 --- a/database/migrations/2023_05_08_021929_update_users_table.php +++ /dev/null @@ -1,30 +0,0 @@ -string('first_name')->default('')->change(); - $table->string('last_name')->default('')->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('users', function (Blueprint $table) { - $table->string('first_name')->nullable(false)->change(); - $table->string('last_name')->nullable(false)->change(); - }); - } -}; diff --git a/database/migrations/2023_05_09_003156_add_location_url_to_events.php b/database/migrations/2023_05_09_003156_add_location_url_to_events.php deleted file mode 100644 index e33f9e8..0000000 --- a/database/migrations/2023_05_09_003156_add_location_url_to_events.php +++ /dev/null @@ -1,28 +0,0 @@ -string('location_url')->default(''); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('events', function (Blueprint $table) { - $table->dropColumn('location_url'); - }); - } -}; diff --git a/database/migrations/2023_05_11_032859_add_private_to_attachments_table.php b/database/migrations/2023_05_11_032859_add_private_to_attachments_table.php deleted file mode 100644 index 2efac94..0000000 --- a/database/migrations/2023_05_11_032859_add_private_to_attachments_table.php +++ /dev/null @@ -1,28 +0,0 @@ -boolean('private')->default(false); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('attachments', function (Blueprint $table) { - $table->dropColumn('private'); - }); - } -}; diff --git a/database/migrations/2023_05_11_033621_create_event_users_table.php b/database/migrations/2023_05_11_033621_create_event_users_table.php deleted file mode 100644 index ab3cdbd..0000000 --- a/database/migrations/2023_05_11_033621_create_event_users_table.php +++ /dev/null @@ -1,32 +0,0 @@ -id(); - $table->uuid('event_id'); - $table->uuid('user_id'); - $table->timestamps(); - - $table->foreign('event_id')->references('id')->on('events')->onDelete('cascade'); - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('event_users'); - } -}; diff --git a/database/migrations/2023_05_24_000000_rename_password_resets_table.php b/database/migrations/2023_05_24_000000_rename_password_resets_table.php deleted file mode 100644 index f0ad375..0000000 --- a/database/migrations/2023_05_24_000000_rename_password_resets_table.php +++ /dev/null @@ -1,24 +0,0 @@ -id(); - $table->text('useragent'); - $table->string('ip'); - $table->timestamps(); - $table->timestamp('ended_at')->nullable(); - }); - - Schema::create('analytics_requests', function (Blueprint $table) { - $table->id(); - $table->bigInteger('session_id')->unsigned(); - $table->string('type'); - $table->string('path'); - $table->timestamps(); - - $table->foreign('session_id')->references('id')->on('analytics_sessions')->onDelete('cascade'); - }); - - // Migrate old analytics table - $analytics = DB::table('analytics') - ->select( - 'session', - DB::raw('MAX(useragent) as useragent'), - DB::raw('MAX(ip) as ip'), - DB::raw('MIN(created_at) as created_at'), - DB::raw('MIN(updated_at) as updated_at')) - ->groupBy('session') - ->get(); - foreach ($analytics as $sessionItem) { - $ip = $sessionItem->ip; - $useragent = $sessionItem->useragent; - $session_id = $sessionItem->session; - $created_at = $sessionItem->created_at; - $updated_at = $sessionItem->updated_at; - - // Create a new row in analytics_sessions - $new_session_id = DB::table('analytics_sessions')->insertGetId([ - 'id' => $session_id, - 'useragent' => $useragent, - 'ip' => $ip, - 'created_at' => $created_at, - 'updated_at' => $updated_at - ]); - - $requests = DB::table('analytics')->where('session', $session_id)->select('type', 'attribute', 'created_at', 'updated_at')->get(); - $ended_at = $sessionItem->created_at; - - foreach($requests as $requestItem) { - if($ended_at < $requestItem->created_at) { - $ended_at = $requestItem->created_at; - } - - DB::table('analytics_requests')->insert([ - 'session_id' => $new_session_id, - 'type' => $requestItem->type, - 'path' => $requestItem->attribute, - 'created_at' => $requestItem->created_at, - 'updated_at' => $requestItem->updated_at, - ]); - } - - DB::table('analytics_sessions')->where('id', $new_session_id)->update(['ended_at' => $ended_at]); - } - - Schema::dropIfExists('analytics'); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::create('analytics', function (Blueprint $table) { - $table->id(); - $table->bigInteger('session')->nullable(false); - $table->string('type'); - $table->string('attribute')->default(''); - $table->text('useragent'); - $table->string('ip'); - $table->timestamps(); - }); - - $sessions = DB::table('analytics_sessions')->get(); - foreach ($sessions as $session) { - $requests = DB::table('analytics_requests')->where('session_id', $session->id)->get(); - foreach($requests as $request) { - DB::table('analytics')->insert([ - 'session' => $session->id, - 'type' => $request->type, - 'attribute' => $request->path, - 'ip' => $session->ip, - 'useragent' => $session->useragent, - 'created_at' => $request->created_at, - 'updated_at' => $request->updated_at, - ]); - } - } - - Schema::dropIfExists('analytics_requests'); - Schema::dropIfExists('analytics_sessions'); - } -}; diff --git a/database/migrations/2023_06_22_233236_add_open_at_to_events.php b/database/migrations/2023_06_22_233236_add_open_at_to_events.php deleted file mode 100644 index 9089877..0000000 --- a/database/migrations/2023_06_22_233236_add_open_at_to_events.php +++ /dev/null @@ -1,28 +0,0 @@ -timestamp('open_at')->useCurrent(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('events', function (Blueprint $table) { - $table->dropColumn('open_at'); - }); - } -}; diff --git a/database/migrations/2023_07_16_095623_create_galleries_table.php b/database/migrations/2023_07_16_095623_create_galleries_table.php deleted file mode 100644 index c503ac3..0000000 --- a/database/migrations/2023_07_16_095623_create_galleries_table.php +++ /dev/null @@ -1,32 +0,0 @@ -uuid('id')->primary(); - $table->uuid('media_id'); - $table->uuidMorphs('addendum'); - $table->timestamps(); - - $table->foreign('media_id')->references('id')->on('media')->onDelete('cascade'); - - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('galleries'); - } -}; diff --git a/database/migrations/2023_07_19_041445_update_attachments_table.php b/database/migrations/2023_07_19_041445_update_attachments_table.php deleted file mode 100644 index bc7d022..0000000 --- a/database/migrations/2023_07_19_041445_update_attachments_table.php +++ /dev/null @@ -1,36 +0,0 @@ -renameColumn('attachable_type', 'addendum_type'); - }); - - Schema::table('attachments', function (Blueprint $table) { - $table->renameColumn('attachable_id', 'addendum_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('attachments', function (Blueprint $table) { - $table->renameColumn('addendum_type', 'attachable_type'); - }); - - Schema::table('attachments', function (Blueprint $table) { - $table->renameColumn('addendum_id', 'attachable_id'); - }); - } -}; diff --git a/database/migrations/2023_07_24_022737_update_useragent_nullable_in_analytics_analytics_sessions_table.php b/database/migrations/2023_07_24_022737_update_useragent_nullable_in_analytics_analytics_sessions_table.php deleted file mode 100644 index 537b4b7..0000000 --- a/database/migrations/2023_07_24_022737_update_useragent_nullable_in_analytics_analytics_sessions_table.php +++ /dev/null @@ -1,28 +0,0 @@ -text('useragent')->nullable()->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('analytics_sessions', function (Blueprint $table) { - $table->text('useragent')->change(); - }); - } -}; diff --git a/database/migrations/2023_07_26_235416_add_thumbnail_to_media_table.php b/database/migrations/2023_07_26_235416_add_thumbnail_to_media_table.php deleted file mode 100644 index 5550159..0000000 --- a/database/migrations/2023_07_26_235416_add_thumbnail_to_media_table.php +++ /dev/null @@ -1,28 +0,0 @@ -string('thumbnail')->default(''); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('media', function (Blueprint $table) { - $table->dropColumn('thumbnail'); - }); - } -}; diff --git a/database/migrations/2023_08_29_211400_create_media_jobs_table.php b/database/migrations/2023_08_29_211400_create_media_jobs_table.php deleted file mode 100644 index e51e30d..0000000 --- a/database/migrations/2023_08_29_211400_create_media_jobs_table.php +++ /dev/null @@ -1,36 +0,0 @@ -uuid('id')->primary(); - $table->timestamps(); - $table->uuid('user_id')->nullable(); - $table->uuid('media_id')->nullable(); // Add a foreign key for the media model - $table->string('status'); - $table->string('status_text'); - $table->text('data'); - $table->integer('progress')->default(0); // Add a column for job progress - - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); - $table->foreign('media_id')->references('id')->on('media')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('media_jobs'); - } -}; diff --git a/database/migrations/2023_08_31_224314_remove_status_and_update_media_table.php b/database/migrations/2023_08_31_224314_remove_status_and_update_media_table.php deleted file mode 100644 index 04efdc4..0000000 --- a/database/migrations/2023_08_31_224314_remove_status_and_update_media_table.php +++ /dev/null @@ -1,37 +0,0 @@ -where('status', '<>', 'OK')->delete(); - - // Remove the 'status' column from the 'media' table - Schema::table('media', function (Blueprint $table) { - $table->dropColumn('status'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // Add the 'status' column back with a default value of an empty string - Schema::table('media', function (Blueprint $table) { - $table->string('status')->default(''); - }); - - // Update the 'status' column of all rows to 'OK' - DB::table('media')->update(['status' => 'OK']); - } -}; diff --git a/database/migrations/2023_09_01_025739_update_analytics_requests_table.php b/database/migrations/2023_09_01_025739_update_analytics_requests_table.php deleted file mode 100644 index 8dede6f..0000000 --- a/database/migrations/2023_09_01_025739_update_analytics_requests_table.php +++ /dev/null @@ -1,28 +0,0 @@ -text('path')->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('analytics_requests', function (Blueprint $table) { - $table->string('path')->change(); - }); - } -}; diff --git a/database/migrations/2023_09_01_025916_update_location_url_events_table.php b/database/migrations/2023_09_01_025916_update_location_url_events_table.php deleted file mode 100644 index ba13695..0000000 --- a/database/migrations/2023_09_01_025916_update_location_url_events_table.php +++ /dev/null @@ -1,30 +0,0 @@ -text('location_url')->change(); - }); - - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('events', function (Blueprint $table) { - $table->string('location_url')->change(); - }); - - } -}; diff --git a/database/migrations/2023_09_10_085850_add_progress_max_to_media_jobs_table.php b/database/migrations/2023_09_10_085850_add_progress_max_to_media_jobs_table.php deleted file mode 100644 index 74aec2b..0000000 --- a/database/migrations/2023_09_10_085850_add_progress_max_to_media_jobs_table.php +++ /dev/null @@ -1,28 +0,0 @@ -integer('progress_max')->default(0); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('media_jobs', function (Blueprint $table) { - $table->dropColumn('progress_max'); - }); - } -}; diff --git a/database/migrations/2023_09_25_053320_rename_permission_column_in_media_table.php b/database/migrations/2023_09_25_053320_rename_permission_column_in_media_table.php deleted file mode 100644 index c864ff1..0000000 --- a/database/migrations/2023_09_25_053320_rename_permission_column_in_media_table.php +++ /dev/null @@ -1,44 +0,0 @@ -renameColumn('permission', 'security_data'); - }); - - Schema::table('media', function (Blueprint $table) { - $table->string('security_type')->default(""); - }); - - DB::table('media') - ->where('security_data', '!=', '') - ->update(['security_type' => 'permission']); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - DB::table('media') - ->where('security_type', '!=', 'permission') - ->update(['security_data' => '']); - - Schema::table('media', function (Blueprint $table) { - $table->renameColumn('security_data', 'permission'); - }); - - Schema::table('media', function (Blueprint $table) { - $table->dropColumn('security_type'); - }); - } -}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d3eee24..a9f4519 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,10 +3,7 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; - -use Carbon\Carbon; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\Hash; class DatabaseSeeder extends Seeder { @@ -15,16 +12,11 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - \App\Models\User::factory(40)->create(); + // \App\Models\User::factory(10)->create(); - \App\Models\User::factory()->create([ - 'display_name' => 'James Collins', - 'first_name' => 'James', - 'last_name' => 'Collins', - 'email' => 'james@stemmechanics.com.au', - 'email_verified_at' => Carbon::now(), - 'phone' => '0400 130 190', - 'password' => Hash::make('password@12') - ]); + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); } } diff --git a/faker/provider/CustomInternetProvider.php b/faker/provider/CustomInternetProvider.php deleted file mode 100644 index 2594fc2..0000000 --- a/faker/provider/CustomInternetProvider.php +++ /dev/null @@ -1,16 +0,0 @@ -userName(); - while (strlen($username) < $minLength) { - $username .= $this->randomNumber(); - } - return $username; - } -} diff --git a/import-meta.ts b/import-meta.ts deleted file mode 100644 index e7708dd..0000000 --- a/import-meta.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface ImportMetaExtras extends ImportMeta { - env: { - APP_URL: string; - [key: string]: string; - }; -} diff --git a/package-lock.json b/package-lock.json index 989d08b..b44c2fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,335 +4,25 @@ "requires": true, "packages": { "": { - "dependencies": { - "@tiptap/extension-highlight": "^2.1.8", - "@tiptap/extension-image": "^2.0.3", - "@tiptap/extension-link": "^2.0.3", - "@tiptap/extension-subscript": "^2.0.3", - "@tiptap/extension-superscript": "^2.1.8", - "@tiptap/extension-text-align": "^2.0.3", - "@tiptap/extension-underline": "^2.0.3", - "@tiptap/pm": "^2.0.3", - "@tiptap/starter-kit": "^2.1.8", - "@tiptap/vue-3": "^2.0.3", - "@vitejs/plugin-vue": "^4.4.0", - "dompurify": "^3.0.4", - "dotenv": "^16.0.3", - "pinia": "^2.0.28", - "pinia-plugin-persistedstate": "^3.2.0", - "sass": "^1.69.5", - "vue": "^3.3.7", - "vue-router": "^4.2.2" - }, "devDependencies": { - "@ls-lint/ls-lint": "^2.2.2", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "eslint": "^8.52.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jsdoc": "^46.6.0", - "eslint-plugin-vue": "^9.18.1", - "knip": "^2.38.6", + "autoprefixer": "^10.4.16", + "axios": "^1.1.2", "laravel-vite-plugin": "^0.8.0", - "lodash": "^4.17.19", - "postcss": "^8.4.27", - "prettier": "3.0.3", - "rollup-plugin-analyzer": "^4.0.0", - "ts-node": "^10.9.1", - "typescript": "^5.0.4", - "unocss": "^0.57.1", - "vite": "^4.4.7", - "vite-plugin-compression2": "^0.11.0", - "vitest": "^0.34.3" + "postcss": "^8.4.31", + "tailwindcss": "^3.3.5", + "vite": "^4.0.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", - "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", - "dev": true, - "dependencies": { - "execa": "^5.1.1", - "find-up": "^5.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.6.tgz", - "integrity": "sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/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==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ericcornelissen/bash-parser": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@ericcornelissen/bash-parser/-/bash-parser-0.5.2.tgz", - "integrity": "sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==", - "dev": true, - "dependencies": { - "array-last": "^1.1.1", - "babylon": "^6.9.1", - "compose-function": "^3.0.3", - "deep-freeze": "0.0.1", - "filter-iterator": "0.0.1", - "filter-obj": "^1.1.0", - "has-own-property": "^0.1.0", - "identity-function": "^1.0.0", - "is-iterable": "^1.1.0", - "iterable-lookahead": "^1.0.0", - "lodash.curry": "^4.1.1", - "magic-string": "^0.16.0", - "map-obj": "^2.0.0", - "object-pairs": "^0.1.0", - "object-values": "^1.0.0", - "reverse-arguments": "^1.0.0", - "shell-quote-word": "^1.0.1", - "to-pascal-case": "^1.0.0", - "unescape-js": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", - "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", - "dev": true, - "dependencies": { - "comment-parser": "1.4.0", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" - }, - "engines": { - "node": ">=16" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@esbuild/android-arm": { @@ -342,6 +32,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -357,6 +48,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -372,6 +64,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -387,6 +80,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -402,6 +96,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -417,6 +112,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -432,6 +128,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -447,6 +144,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -462,6 +160,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -477,6 +176,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -492,6 +192,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -507,6 +208,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -522,6 +224,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -537,6 +240,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -552,6 +256,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -567,6 +272,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -582,6 +288,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -597,6 +304,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -612,6 +320,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -627,6 +336,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -642,6 +352,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -657,6 +368,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -665,171 +377,6 @@ "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "dev": true - }, - "node_modules/@iconify/utils": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.11.tgz", - "integrity": "sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==", - "dev": true, - "dependencies": { - "@antfu/install-pkg": "^0.1.1", - "@antfu/utils": "^0.7.5", - "@iconify/types": "^2.0.0", - "debug": "^4.3.4", - "kolorist": "^1.8.0", - "local-pkg": "^0.4.3" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -865,35 +412,17 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@ls-lint/ls-lint": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@ls-lint/ls-lint/-/ls-lint-2.2.2.tgz", - "integrity": "sha512-gdolCgwveSHZczfKtoVFkf+NZJjd7KRQs9QnLVEiMFEJLK4H7nBrZuC/ASl/AYMZvFmtCocRt3d5E0UF/34vCQ==", - "cpu": [ - "x64", - "arm64", - "s390x" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "bin": { - "ls-lint": "bin/cli.js" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -931,1832 +460,17 @@ "node": ">= 8" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", - "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", - "dev": true, - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pnpm/constants": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-7.1.1.tgz", - "integrity": "sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==", - "dev": true, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/core-loggers": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@pnpm/core-loggers/-/core-loggers-9.0.4.tgz", - "integrity": "sha512-P5IiCwLbYy/vlCDTxEMReB67NVs1Y4ip6iIEM3Y1fbxm0JbPMWTUMKGf2fy7eqGDF3/Vuxk5H7o/A4II6SWzMA==", - "dev": true, - "dependencies": { - "@pnpm/types": "9.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - }, - "peerDependencies": { - "@pnpm/logger": "^5.0.0" - } - }, - "node_modules/@pnpm/error": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/error/-/error-5.0.2.tgz", - "integrity": "sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==", - "dev": true, - "dependencies": { - "@pnpm/constants": "7.1.1" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/fetching-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/fetching-types/-/fetching-types-5.0.0.tgz", - "integrity": "sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q==", - "dev": true, - "dependencies": { - "@zkochan/retry": "^0.2.0", - "node-fetch": "3.0.0-beta.9" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/graceful-fs": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@pnpm/graceful-fs/-/graceful-fs-3.2.0.tgz", - "integrity": "sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/logger": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/logger/-/logger-5.0.0.tgz", - "integrity": "sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==", - "dev": true, - "dependencies": { - "bole": "^5.0.0", - "ndjson": "^2.0.0" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@pnpm/npm-package-arg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/npm-package-arg/-/npm-package-arg-1.0.0.tgz", - "integrity": "sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": ">=14.6" - } - }, - "node_modules/@pnpm/npm-resolver": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/npm-resolver/-/npm-resolver-17.0.0.tgz", - "integrity": "sha512-XCeFga+Am3rsTO+8IIuIPb6VsZ+iCiv5QJW61YDl4XuiqoyCFzNyGgGfv05n45lIfK0Gg1jA2ewlo0LpGelCUw==", - "dev": true, - "dependencies": { - "@pnpm/core-loggers": "9.0.4", - "@pnpm/error": "5.0.2", - "@pnpm/fetching-types": "5.0.0", - "@pnpm/graceful-fs": "3.2.0", - "@pnpm/resolve-workspace-range": "5.0.1", - "@pnpm/resolver-base": "11.0.0", - "@pnpm/types": "9.4.0", - "@zkochan/retry": "^0.2.0", - "encode-registry": "^3.0.1", - "load-json-file": "^6.2.0", - "lru-cache": "^10.0.1", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "p-memoize": "4.0.1", - "parse-npm-tarball-url": "^3.0.0", - "path-temp": "^2.1.0", - "ramda": "npm:@pnpm/ramda@0.28.1", - "rename-overwrite": "^4.0.3", - "semver": "^7.5.4", - "ssri": "10.0.5", - "version-selector-type": "^3.0.0" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - }, - "peerDependencies": { - "@pnpm/logger": "^5.0.0" - } - }, - "node_modules/@pnpm/npm-resolver/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@pnpm/resolve-workspace-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/resolve-workspace-range/-/resolve-workspace-range-5.0.1.tgz", - "integrity": "sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg==", - "dev": true, - "dependencies": { - "semver": "^7.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/resolver-base": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/resolver-base/-/resolver-base-11.0.0.tgz", - "integrity": "sha512-oxfjO8Ie6aBQPXSqOWGJP9s0xj9Z4cbRI7fK63WKhjwmNH4CTrSfikRL2o4FoXo2APAbJEUp2lCxx+86dq2tUg==", - "dev": true, - "dependencies": { - "@pnpm/types": "9.4.0" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/types": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-9.4.0.tgz", - "integrity": "sha512-IRDuIuNobLRQe0UyY2gbrrTzYS46tTNvOEfL6fOf0Qa8NyxUzeXz946v7fQuQE3LSBf8ENBC5SXhRmDl+mBEqA==", - "dev": true, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/workspace.pkgs-graph": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@pnpm/workspace.pkgs-graph/-/workspace.pkgs-graph-2.0.10.tgz", - "integrity": "sha512-iGZZ23li6Ya68kHx3oaWPCN4JMzJ0njmmmWDRxUcHkc+nxtxTwpEM/FRl7yG1nBo39YwX2XTtou22h2nKipHnw==", - "dev": true, - "dependencies": { - "@pnpm/npm-package-arg": "^1.0.0", - "@pnpm/npm-resolver": "17.0.0", - "@pnpm/resolve-workspace-range": "5.0.1", - "ramda": "npm:@pnpm/ramda@0.28.1" - }, - "engines": { - "node": ">=16.14" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==" - }, - "node_modules/@remirror/core-helpers": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@remirror/core-helpers/-/core-helpers-3.0.0.tgz", - "integrity": "sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==", - "dependencies": { - "@remirror/core-constants": "^2.0.2", - "@remirror/types": "^1.0.1", - "@types/object.omit": "^3.0.0", - "@types/object.pick": "^1.3.2", - "@types/throttle-debounce": "^2.1.0", - "case-anything": "^2.1.13", - "dash-get": "^1.0.2", - "deepmerge": "^4.3.1", - "fast-deep-equal": "^3.1.3", - "make-error": "^1.3.6", - "object.omit": "^3.0.0", - "object.pick": "^1.3.0", - "throttle-debounce": "^3.0.1" - } - }, - "node_modules/@remirror/types": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@remirror/types/-/types-1.0.1.tgz", - "integrity": "sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==", - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@remirror/types/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", - "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@snyk/github-codeowners": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@snyk/github-codeowners/-/github-codeowners-1.1.0.tgz", - "integrity": "sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==", - "dev": true, - "dependencies": { - "commander": "^4.1.1", - "ignore": "^5.1.8", - "p-map": "^4.0.0" - }, - "bin": { - "github-codeowners": "dist/cli.js" - }, - "engines": { - "node": ">=8.10" - } - }, - "node_modules/@tiptap/core": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.1.12.tgz", - "integrity": "sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz", - "integrity": "sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bold": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz", - "integrity": "sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.12.tgz", - "integrity": "sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw==", - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz", - "integrity": "sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.1.12.tgz", - "integrity": "sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.1.12.tgz", - "integrity": "sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-document": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.1.12.tgz", - "integrity": "sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz", - "integrity": "sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-floating-menu": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.12.tgz", - "integrity": "sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A==", - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz", - "integrity": "sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.1.12.tgz", - "integrity": "sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-heading": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz", - "integrity": "sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-highlight": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.1.12.tgz", - "integrity": "sha512-buen31cYPyiiHA2i0o2i/UcjRTg/42mNDCizGr1OJwvv3AELG3qOFc4Y58WJWIvWNv+1Dr4ZxHA3GNVn0ANWyg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-history": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.1.12.tgz", - "integrity": "sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.12.tgz", - "integrity": "sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-image": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.1.12.tgz", - "integrity": "sha512-VCgOTeNLuoR89WoCESLverpdZpPamOd7IprQbDIeG14sUySt7RHNgf2AEfyTYJEHij12rduvAwFzerPldVAIJg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-italic": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz", - "integrity": "sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-link": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.1.12.tgz", - "integrity": "sha512-Sti5hhlkCqi5vzdQjU/gbmr8kb578p+u0J4kWS+SSz3BknNThEm/7Id67qdjBTOQbwuN07lHjDaabJL0hSkzGQ==", - "dependencies": { - "linkifyjs": "^4.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz", - "integrity": "sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz", - "integrity": "sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz", - "integrity": "sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-strike": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz", - "integrity": "sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-subscript": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.1.12.tgz", - "integrity": "sha512-tb1jysEvf4SIiXwEOgDTXiyrG39RVNHvn/zsGMg5wy5t9qUp9m1k7kKYTH084ktuKDAPQonCcpn3hwc+ngTFzg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-superscript": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.1.12.tgz", - "integrity": "sha512-ek6L+DNsrjiJieArlgTvQt1VfJ56d8V19WAPW/ciRhq88YRlTEY9nSO3QuUCSUO1nGmE5OWQpgrsiW/XZbONVw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-text": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.1.12.tgz", - "integrity": "sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-text-align": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.1.12.tgz", - "integrity": "sha512-siMlwrkgVrAxxgmZn8GOc75J7UZi2CVrP9vDHkUPPyKm/fjssYekXwGCEk4Vswii1BbOh2gt+MDsRkeYRGyDlQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-underline": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.1.12.tgz", - "integrity": "sha512-NwwdhFT8gDD0VUNLQx85yFBhP9a8qg8GPuxlGzAP/lPTV8Ubh3vSeQ5N9k2ZF/vHlEvnugzeVCbmYn7wf8vn1g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/pm": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.1.12.tgz", - "integrity": "sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ==", - "dependencies": { - "prosemirror-changeset": "^2.2.0", - "prosemirror-collab": "^1.3.0", - "prosemirror-commands": "^1.3.1", - "prosemirror-dropcursor": "^1.5.0", - "prosemirror-gapcursor": "^1.3.1", - "prosemirror-history": "^1.3.0", - "prosemirror-inputrules": "^1.2.0", - "prosemirror-keymap": "^1.2.0", - "prosemirror-markdown": "^1.10.1", - "prosemirror-menu": "^1.2.1", - "prosemirror-model": "^1.18.1", - "prosemirror-schema-basic": "^1.2.0", - "prosemirror-schema-list": "^1.2.2", - "prosemirror-state": "^1.4.1", - "prosemirror-tables": "^1.3.0", - "prosemirror-trailing-node": "^2.0.2", - "prosemirror-transform": "^1.7.0", - "prosemirror-view": "^1.28.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/starter-kit": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.1.12.tgz", - "integrity": "sha512-+RoP1rWV7rSCit2+3wl2bjvSRiePRJE/7YNKbvH8Faz/+AMO23AFegHoUFynR7U0ouGgYDljGkkj35e0asbSDA==", - "dependencies": { - "@tiptap/core": "^2.1.12", - "@tiptap/extension-blockquote": "^2.1.12", - "@tiptap/extension-bold": "^2.1.12", - "@tiptap/extension-bullet-list": "^2.1.12", - "@tiptap/extension-code": "^2.1.12", - "@tiptap/extension-code-block": "^2.1.12", - "@tiptap/extension-document": "^2.1.12", - "@tiptap/extension-dropcursor": "^2.1.12", - "@tiptap/extension-gapcursor": "^2.1.12", - "@tiptap/extension-hard-break": "^2.1.12", - "@tiptap/extension-heading": "^2.1.12", - "@tiptap/extension-history": "^2.1.12", - "@tiptap/extension-horizontal-rule": "^2.1.12", - "@tiptap/extension-italic": "^2.1.12", - "@tiptap/extension-list-item": "^2.1.12", - "@tiptap/extension-ordered-list": "^2.1.12", - "@tiptap/extension-paragraph": "^2.1.12", - "@tiptap/extension-strike": "^2.1.12", - "@tiptap/extension-text": "^2.1.12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/vue-3": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.1.12.tgz", - "integrity": "sha512-yAcfmWw/9jtIUbhb0uGQVI9NoPYgHRasX2sAGWnm9Al+0aJktgmQ3mLCifXfXfjyEbeMF0p2L6Ul8tO7eho7aQ==", - "dependencies": { - "@tiptap/extension-bubble-menu": "^2.1.12", - "@tiptap/extension-floating-menu": "^2.1.12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0", - "vue": "^3.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "node_modules/@types/chai": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", - "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", - "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", - "devOptional": true, - "dependencies": { - "undici-types": "~5.25.1" - } - }, - "node_modules/@types/object.omit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.2.tgz", - "integrity": "sha512-BxWU36cMP+FKD3OLFluQaj2cBev2sx2LJaHELuphHwnleq+xnEhTmuYYYx4pOT/1U/ZoR6B+RdvxWh2FD6lGGA==" - }, - "node_modules/@types/object.pick": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.3.tgz", - "integrity": "sha512-qZqHmdGEALeSATMB1djT1S5szv6Wtpb7DKpHrt2XG4iyKlV7C2Xk8GmDXr1KXakOqUfX6ohw7ceruYt4NVmB1Q==" - }, - "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, - "node_modules/@types/throttle-debounce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz", - "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz", - "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/type-utils": "6.9.1", - "@typescript-eslint/utils": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz", - "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz", - "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz", - "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/utils": "6.9.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz", - "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz", - "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz", - "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz", - "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@unocss/astro": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.57.1.tgz", - "integrity": "sha512-KNaqN/SGM/uz1QitajIkzNEw0jy9Zx9Wp8fl4GhfGYEMAN2+M4cuvBZRmlb6cLctSXmSAJQDG91ivbD1JijGnw==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/reset": "0.57.1", - "@unocss/vite": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/@unocss/cli": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.57.1.tgz", - "integrity": "sha512-wKuOaygrPNzDm5L7+2SfHsIi3knJrAQ8nH6OasVqB+bGDz6ybDlULV7wvUco6Os72ydh7YbWC2/WpqFii8U/3w==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@rollup/pluginutils": "^5.0.5", - "@unocss/config": "0.57.1", - "@unocss/core": "0.57.1", - "@unocss/preset-uno": "0.57.1", - "cac": "^6.7.14", - "chokidar": "^3.5.3", - "colorette": "^2.0.20", - "consola": "^3.2.3", - "fast-glob": "^3.3.1", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "perfect-debounce": "^1.0.0" - }, - "bin": { - "unocss": "bin/unocss.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/cli/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@unocss/config": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.57.1.tgz", - "integrity": "sha512-mbuVO0mH1PX7rEkViMNWb3jG1ji7TUydo2DdnMHhJE+dOrGtnQzhzXGlAd4qqel1fnt/VWuOyZKwJA3QO6VCtg==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "unconfig": "^0.3.11" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/core": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.57.1.tgz", - "integrity": "sha512-cqQW/4gCuk+bFMPg9lBanuRNQ9Lx1l4PpMN/6uKxI5WROpq7ce/Xb4uGvAxKLh3ITtFSpXs2cLfsy7QD6cVD/Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/extractor-arbitrary-variants": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.57.1.tgz", - "integrity": "sha512-9s+azHhBnwjxm46TsD1RY0krDAwOR8tcw58Vtl3emd6C0VQsAOdoprt7UHE7GEXMvDVq7nMf8lAT0BM0LteW3w==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/inspector": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.57.1.tgz", - "integrity": "sha512-qV7ta7iHGX2EpZJ4IWY/05kgyhKFeWlvVJbrOnGsaH8gVt33T/43YAhB/8K5GIXBXIwkhwk13iB13nlg2gSheg==", - "dev": true, - "dependencies": { - "@unocss/rule-utils": "0.57.1", - "gzip-size": "^6.0.0", - "sirv": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/postcss": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.57.1.tgz", - "integrity": "sha512-DexrV+v/qkVh6t660rXigNr2Y6lON8jxD1z2KVk2bjHKhFflF6q6seps6d/MquyLJI1mXF2uANTeFAeL2q6evw==", - "dev": true, - "dependencies": { - "@unocss/config": "0.57.1", - "@unocss/core": "0.57.1", - "@unocss/rule-utils": "0.57.1", - "css-tree": "^2.3.1", - "fast-glob": "^3.3.1", - "magic-string": "^0.30.5", - "postcss": "^8.4.31" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/@unocss/postcss/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@unocss/preset-attributify": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.57.1.tgz", - "integrity": "sha512-pvGQHaqBlB0jQysWhNbcKLOGrkj8b53k0sAa9LYxQjD1fa8t/dwbuMpZv4twX+gysF0vBhxRoWBPLH1/S6zRZg==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-icons": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.57.1.tgz", - "integrity": "sha512-ve4jC6yREfS0mv97DCld9xLjMuiSCcsQPKucdtpUfCjLMqtGd1ZGGdFv02Q+92NkW7HDfgj+izEw1SKh9695Ow==", - "dev": true, - "dependencies": { - "@iconify/utils": "^2.1.11", - "@unocss/core": "0.57.1", - "ofetch": "^1.3.3" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-mini": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.57.1.tgz", - "integrity": "sha512-v9ZsIUGDfZNXbIrOc7zrBp+RFbFFGSQN/vKIf761js4fJ31j6lan4pPQPGcY17xHConkI1HJT/+yb/UVJaAcHw==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/extractor-arbitrary-variants": "0.57.1", - "@unocss/rule-utils": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-tagify": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.57.1.tgz", - "integrity": "sha512-GV8knxnsOVH/XiG2KB+mVZeEJqr0PZvvkSTPftGPbjttoKVZ+28Y5q9/qezH7p4W6RYVAAK+3qHHy5wWZosiMw==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-typography": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.57.1.tgz", - "integrity": "sha512-C4cqCiGW0OSoSXsVQKgfLulYxY5C8M40f+a8VtBlAaEaN6eSlEt+catXb0chF9T2mvz/b87b0PahPvPwJdDf1Q==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/preset-mini": "0.57.1" - } - }, - "node_modules/@unocss/preset-uno": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.57.1.tgz", - "integrity": "sha512-0+DKZiowYjYzq2swJzQA2dhqDvLJdm0Y437ITzc2GzZMKGUUuNi+w2v3/SzwkpkRd9zTB9/YaOIJVfdrx6ZOXQ==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/preset-mini": "0.57.1", - "@unocss/preset-wind": "0.57.1", - "@unocss/rule-utils": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-web-fonts": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.57.1.tgz", - "integrity": "sha512-9DCIMlBRaGrljLmeciH4WqP+uRx2z2nLxvrvEmGbpJJpMn2H4higR5Zu5tDyKYGr9QBl9vXdWgib+43OSswkqA==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "ofetch": "^1.3.3" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/preset-wind": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.57.1.tgz", - "integrity": "sha512-5UairNahUXNDe9AggPtTCodyPjl6NgPCsiEB22LVgN20UjBXjaqzN5wUe1OgtpLoAUaSk0KI7eLWhnWbTbST3A==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/preset-mini": "0.57.1", - "@unocss/rule-utils": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/reset": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.57.1.tgz", - "integrity": "sha512-f/ofoudjFN/HMtv1XV5phP58pOmNruBhr0GbVdBNylyieMQkFHowA7iSemChnC/fTbCcY6oSOAcFl4n9AefjdA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/rule-utils": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.57.1.tgz", - "integrity": "sha512-Hdicz7YORZx7SHICldzOGjPNeJwk/Xhy3cycqiPbg6nB6d639bpgZn5BsbDzHCPKpguwDomUqTZS6+C3s7tUVg==", - "dev": true, - "dependencies": { - "@unocss/core": "^0.57.1", - "magic-string": "^0.30.5" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/rule-utils/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@unocss/scope": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.57.1.tgz", - "integrity": "sha512-ZAzg6lLGwKNQGCvJXEie3TvGztkAyajEFqygu0mjtHb+CmDql4iAjoygs+3dnRI5hSDwfMYFrJ2azX26+2CsoA==", - "dev": true - }, - "node_modules/@unocss/transformer-attributify-jsx": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.57.1.tgz", - "integrity": "sha512-ohgSEwm2j98ltPWl1zRPvZhRjQPpd7qZtgoROTQh6n2W7wEO1SlnYjgBBz+pGuo2dkfBN5NjuZJ93AEjS10Ysw==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-attributify-jsx-babel": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.57.1.tgz", - "integrity": "sha512-EOCPB8OGmhroAuFU0i0W5p6GmJpx6mAkP4KmsqVLd4QMgw+8aXkG7SKyLnxQZnekM0/dSo0TcpVGeGrZaUNgvQ==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-compile-class": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.57.1.tgz", - "integrity": "sha512-z0WZN6hbgpyBm2xqIrojqEjpQMhiyzHRbaBjWzI/6ieHWoFo5ajIwnReaFUEfJRNruLTd7/9hFDZdRXRPhttFw==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/transformer-directives": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.57.1.tgz", - "integrity": "sha512-rIk3XEU2NywEJUOkngBSmJfvS3IVgxkkqgMvuIqz8ZDbwWhepuMxsiI0QR3ypkipGr/eKK5DJ7eK0OVlo6FPFA==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1", - "@unocss/rule-utils": "0.57.1", - "css-tree": "^2.3.1" - } - }, - "node_modules/@unocss/transformer-variant-group": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.57.1.tgz", - "integrity": "sha512-qwydzn2Lqz/8zW6UUXdORaUl8humsG8ll74LN/z8cjEsqtXZkVdkV0l6Brpp9Xp/XPbKwO+II+KH3/1LGwXSzQ==", - "dev": true, - "dependencies": { - "@unocss/core": "0.57.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@unocss/vite": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.57.1.tgz", - "integrity": "sha512-kEBDvGgQNkX2n87S6Ao5seyFb1kuWZ5p96dGOS7VFpD7HvR5xholkJXaVhUK9/exCldjLExbo5UtVlbxFLUFYg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@rollup/pluginutils": "^5.0.5", - "@unocss/config": "0.57.1", - "@unocss/core": "0.57.1", - "@unocss/inspector": "0.57.1", - "@unocss/scope": "0.57.1", - "@unocss/transformer-directives": "0.57.1", - "chokidar": "^3.5.3", - "fast-glob": "^3.3.1", - "magic-string": "^0.30.5" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0" - } - }, - "node_modules/@unocss/vite/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz", - "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==", - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vitest/expect": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", - "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", - "dev": true, - "dependencies": { - "@vitest/spy": "0.34.6", - "@vitest/utils": "0.34.6", - "chai": "^4.3.10" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", - "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", - "dev": true, - "dependencies": { - "@vitest/utils": "0.34.6", - "p-limit": "^4.0.0", - "pathe": "^1.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/snapshot": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", - "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", - "dev": true, - "dependencies": { - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "pretty-format": "^29.5.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vitest/spy": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", - "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", - "dev": true, - "dependencies": { - "tinyspy": "^2.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", - "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", - "dev": true, - "dependencies": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", - "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", - "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", - "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", - "dependencies": { - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", - "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", - "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-ssr": "3.3.7", - "@vue/reactivity-transform": "3.3.7", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", - "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", - "dependencies": { - "@vue/compiler-dom": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" - }, - "node_modules/@vue/reactivity": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", - "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", - "dependencies": { - "@vue/shared": "3.3.7" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", - "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", - "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" - } - }, - "node_modules/@vue/reactivity-transform/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", - "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", - "dependencies": { - "@vue/reactivity": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", - "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", - "dependencies": { - "@vue/runtime-core": "3.3.7", - "@vue/shared": "3.3.7", - "csstype": "^3.1.2" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", - "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", - "dependencies": { - "@vue/compiler-ssr": "3.3.7", - "@vue/shared": "3.3.7" - }, - "peerDependencies": { - "vue": "3.3.7" - } - }, - "node_modules/@vue/shared": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", - "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" - }, - "node_modules/@zkochan/retry": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@zkochan/retry/-/retry-0.2.0.tgz", - "integrity": "sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@zkochan/rimraf": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@zkochan/rimraf/-/rimraf-2.1.3.tgz", - "integrity": "sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.10" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "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/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2765,69 +479,64 @@ "node": ">= 8" } }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "engines": { - "node": ">=14" - } - }, "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "is-number": "^4.0.0" + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "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==", + "node_modules/axios": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { @@ -2840,26 +549,11 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/bole": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/bole/-/bole-5.0.9.tgz", - "integrity": "sha512-35GeBG6T7GW9VmLDF2IoKAtFCqMjmmq1uICbsICI0pID7ZAyUKlf7dg1wpXmn9GcMKHtg0S19CPMU5yfY3tv+g==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.7", - "individual": "^3.0.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2874,6 +568,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2881,106 +576,72 @@ "node": ">=8" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/case-anything": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.13.tgz", - "integrity": "sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==", - "engines": { - "node": ">=12.13" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=4" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 6" } }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001561", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", + "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -3007,6 +668,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3014,49 +676,18 @@ "node": ">= 6" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "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==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8" } }, - "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==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -3066,86 +697,12 @@ "node": ">= 6" } }, - "node_modules/comment-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", - "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==", - "dev": true, - "dependencies": { - "arity-n": "^1.0.4" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/consola": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", - "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", - "dev": true, - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" - }, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -3158,223 +715,38 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/dash-get": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dash-get/-/dash-get-1.0.2.tgz", - "integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==" - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=0.4.0" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "dev": true }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "optional": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "node_modules/electron-to-chromium": { + "version": "1.4.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.582.tgz", + "integrity": "sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA==", "dev": true }, - "node_modules/destr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", - "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", - "dev": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dompurify": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" - }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/easy-table": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", - "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "optionalDependencies": { - "wcwidth": "^1.0.1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/encode-registry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/encode-registry/-/encode-registry-3.0.1.tgz", - "integrity": "sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==", - "dev": true, - "dependencies": { - "mem": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -3407,258 +779,19 @@ "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", - "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", - "dev": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.40.1", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.0", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.18.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz", - "integrity": "sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "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.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3683,24 +816,6 @@ "node": ">= 6" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -3710,36 +825,11 @@ "reusify": "^1.0.4" } }, - "node_modules/fetch-blob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", - "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==", - "dev": true, - "engines": { - "node": "^10.17.0 || >=12.3.0" - }, - "peerDependenciesMeta": { - "domexception": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "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==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3747,85 +837,51 @@ "node": ">=8" } }, - "node_modules/filter-iterator": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/filter-iterator/-/filter-iterator-0.0.1.tgz", - "integrity": "sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==", - "dev": true - }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=0.10.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10" + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fs.realpath": { @@ -3838,6 +894,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -3847,44 +904,30 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3902,200 +945,18 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.4" } }, - "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-own-property": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-own-property/-/has-own-property-0.1.0.tgz", - "integrity": "sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==", - "dev": true - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/identity-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/identity-function/-/identity-function-1.0.0.tgz", - "integrity": "sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" - }, - "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==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/individual": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/individual/-/individual-3.0.0.tgz", - "integrity": "sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==", - "dev": true - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4112,16 +973,11 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, "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==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4129,53 +985,32 @@ "node": ">=8" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" + "hasown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "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==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -4183,95 +1018,13 @@ "node": ">=0.10.0" } }, - "node_modules/is-iterable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-iterable/-/is-iterable-1.1.1.tgz", - "integrity": "sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/iterable-lookahead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/iterable-lookahead/-/iterable-lookahead-1.0.0.tgz", - "integrity": "sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=0.12.0" } }, "node_modules/jiti": { @@ -4283,185 +1036,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/knip": { - "version": "2.38.6", - "resolved": "https://registry.npmjs.org/knip/-/knip-2.38.6.tgz", - "integrity": "sha512-FUkcSx0VGmRQ70rQzcygZrP3FPpoFS5CFp7sONGclB+HIIA6DJ11u1MZXmh0XsXewgeIm9guCkAD6xoO4i/hWA==", - "dev": true, - "dependencies": { - "@ericcornelissen/bash-parser": "^0.5.2", - "@npmcli/map-workspaces": "^3.0.4", - "@pkgjs/parseargs": "0.11.0", - "@pnpm/logger": "5.0.0", - "@pnpm/workspace.pkgs-graph": "2.0.10", - "@snyk/github-codeowners": "^1.1.0", - "chalk": "^5.2.0", - "easy-table": "^1.2.0", - "fast-glob": "^3.2.12", - "globby": "^13.1.3", - "jiti": "1.21.0", - "js-yaml": "^4.1.0", - "micromatch": "^4.0.5", - "minimist": "^1.2.8", - "pretty-ms": "^8.0.0", - "strip-json-comments": "^5.0.0", - "summary": "^2.1.0", - "typescript": "^5.0.2", - "zod": "3.22.4", - "zod-validation-error": "1.5.0" - }, - "bin": { - "knip": "dist/cli.js" - }, - "engines": { - "node": ">=16.17.0 <17 || >=18.6.0" - } - }, - "node_modules/knip/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/knip/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/knip/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/knip/node_modules/strip-json-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", - "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true - }, "node_modules/laravel-vite-plugin": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", @@ -4478,17 +1052,13 @@ "vite": "^3.0.0 || ^4.0.0" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, "node_modules/lines-and-columns": { @@ -4497,189 +1067,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/linkifyjs": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.1.tgz", - "integrity": "sha512-zFN/CTVmbcVef+WaDXT63dNzzkfRBKT1j464NJQkV7iSgJU0sLBus9W0HBwnXK13/hf168pbrx/V/bjEHOXNHA==" - }, - "node_modules/load-json-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.curry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/magic-string": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", - "integrity": "sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==", - "dev": true, - "dependencies": { - "vlq": "^0.2.1" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/markdown-it": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", - "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4702,13 +1089,25 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { - "node": ">=8" + "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==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/minimatch": { @@ -4723,55 +1122,22 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true - }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -4785,141 +1151,46 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/ndjson": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", - "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", - "dev": true, - "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.5", - "readable-stream": "^3.6.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "ndjson": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-fetch": { - "version": "3.0.0-beta.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0-beta.9.tgz", - "integrity": "sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^3.0.1", - "fetch-blob": "^2.1.1" - }, - "engines": { - "node": "^10.17 || >=12.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-fetch-native": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz", - "integrity": "sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==", + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "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/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-pairs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-pairs/-/object-pairs-0.1.0.tgz", - "integrity": "sha512-3ECr6K831I4xX/Mduxr9UC+HPOz/d6WKKYj9p4cmC8Lg8p7g8gitzsxNX5IWlSIgFWN/a4JgrJaoAMKn20oKwA==", - "dev": true - }, - "node_modules/object-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object-values/-/object-values-1.0.0.tgz", - "integrity": "sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/object.omit": { + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", - "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", - "dependencies": { - "is-extendable": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ofetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", - "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, - "dependencies": { - "destr": "^2.0.1", - "node-fetch-native": "^1.4.0", - "ufo": "^1.3.0" + "engines": { + "node": ">= 6" } }, "node_modules/once": { @@ -4931,210 +1202,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-memoize": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.1.tgz", - "integrity": "sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog==", - "dev": true, - "dependencies": { - "mem": "^6.0.1", - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/p-memoize?sponsor=1" - } - }, - "node_modules/p-memoize/node_modules/mem": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz", - "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", - "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-npm-tarball-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-npm-tarball-url/-/parse-npm-tarball-url-3.0.0.tgz", - "integrity": "sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==", - "dev": true, - "dependencies": { - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.15" - } - }, - "node_modules/parse-npm-tarball-url/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "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", @@ -5144,82 +1211,23 @@ "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-temp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-temp/-/path-temp-2.1.0.tgz", - "integrity": "sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==", - "dev": true, - "dependencies": { - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=8.15" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", - "dev": true - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "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==", "dev": true }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -5227,79 +1235,29 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pinia": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", - "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", - "dependencies": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "@vue/composition-api": "^1.4.0", - "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.3.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/pinia-plugin-persistedstate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", - "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", - "peerDependencies": { - "pinia": "^2.0.0" - } - }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" } }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5323,6 +1281,90 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "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-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, "node_modules/postcss-selector-parser": { "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", @@ -5336,256 +1378,17 @@ "node": ">=4" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "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==", + "dev": true }, - "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-ms": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", - "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", - "dev": true, - "dependencies": { - "parse-ms": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "dependencies": { - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "node_modules/prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "dependencies": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "node_modules/prosemirror-history": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz", - "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==", - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz", - "integrity": "sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ==", - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-markdown": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.11.2.tgz", - "integrity": "sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ==", - "dependencies": { - "markdown-it": "^13.0.1", - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "dependencies": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-model": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.3.tgz", - "integrity": "sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==", - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", - "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", - "dependencies": { - "prosemirror-model": "^1.19.0" - } - }, - "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-tables": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.4.tgz", - "integrity": "sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw==", - "dependencies": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "node_modules/prosemirror-trailing-node": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz", - "integrity": "sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==", - "dependencies": { - "@remirror/core-constants": "^2.0.2", - "@remirror/core-helpers": "^3.0.0", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.19.0", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.31.2" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "dependencies": { - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.32.1", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.1.tgz", - "integrity": "sha512-9SnB4HBgRczzTyIMZLPE1iszegL04hNfUyS8uPtP1RPxNM2NTCiIs8KwNsJU4nbZO9rxJTwVTv7Jm3zU4CR78A==", - "dependencies": { - "prosemirror-model": "^1.16.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -5607,63 +1410,20 @@ } ] }, - "node_modules/ramda": { - "name": "@pnpm/ramda", - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@pnpm/ramda/-/ramda-0.28.1.tgz", - "integrity": "sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "pify": "^2.3.0" } }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -5671,26 +1431,21 @@ "node": ">=8.10.0" } }, - "node_modules/rename-overwrite": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/rename-overwrite/-/rename-overwrite-4.0.3.tgz", - "integrity": "sha512-e1zOWZh4Lauz5DcLMC8j4eoOHPIrZkAVpiocE9SkDE1ZrGMW+W88LR1Y2YjD1DFgOYfJWqSsK6JKsRfuRH+tbQ==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "@zkochan/rimraf": "^2.1.2", - "fs-extra": "10.1.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=12.10" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/reusify": { @@ -5703,51 +1458,11 @@ "node": ">=0.10.0" } }, - "node_modules/reverse-arguments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reverse-arguments/-/reverse-arguments-1.0.0.tgz", - "integrity": "sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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/rollup": { "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -5759,20 +1474,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-analyzer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-analyzer/-/rollup-plugin-analyzer-4.0.0.tgz", - "integrity": "sha512-LL9GEt3bkXp6Wa19SNR5MWcvHNMvuTFYg+eYBZN2OIFhSWN+pEJUQXEKu5BsOeABob3x9PDaLKW7w5iOJnsESQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5796,439 +1497,112 @@ "queue-microtask": "^1.2.2" } }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote-word": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/shell-quote-word/-/shell-quote-word-1.0.1.tgz", - "integrity": "sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==", - "dev": true - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sirv": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", - "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "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==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true - }, - "node_modules/std-env": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" }, "engines": { "node": ">=8" } }, - "node_modules/string-width-cjs/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==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==", - "dev": true - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", - "dev": true, - "dependencies": { - "acorn": "^8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/summary": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/summary/-/summary-2.1.0.tgz", - "integrity": "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==", - "dev": true - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/throttle-debounce": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", - "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/tinybench": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", - "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "dependencies": { - "@popperjs/core": "^2.9.0" - } - }, - "node_modules/to-no-case": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", - "integrity": "sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==", - "dev": true - }, - "node_modules/to-pascal-case": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-pascal-case/-/to-pascal-case-1.0.0.tgz", - "integrity": "sha512-QGMWHqM6xPrcQW57S23c5/3BbYb0Tbe9p+ur98ckRnGDwD4wbbtDiYI38CfmMKNB5Iv0REjs5SNDntTwvDxzZA==", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz", + "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==", "dev": true, "dependencies": { - "to-space-case": "^1.0.0" + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, "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==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -6236,248 +1610,40 @@ "node": ">=8.0" } }, - "node_modules/to-regex-range/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/to-space-case": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", - "integrity": "sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==", - "dev": true, - "dependencies": { - "to-no-case": "^1.0.0" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/ufo": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", - "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, - "node_modules/unconfig": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.11.tgz", - "integrity": "sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==", + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@antfu/utils": "^0.7.6", - "defu": "^6.1.2", - "jiti": "^1.20.0", - "mlly": "^1.4.2" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "devOptional": true - }, - "node_modules/unescape-js": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unescape-js/-/unescape-js-1.1.4.tgz", - "integrity": "sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==", - "dev": true, - "dependencies": { - "string.fromcodepoint": "^0.2.1" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unocss": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.57.1.tgz", - "integrity": "sha512-xLsyJ8+T1/Ux93yrqOvuQy268wF5rSzydlsbqZ5EVfi01PxYyydez3nycPqbyPZientkJ0Yohzd5aBqmZgku3A==", - "dev": true, - "dependencies": { - "@unocss/astro": "0.57.1", - "@unocss/cli": "0.57.1", - "@unocss/core": "0.57.1", - "@unocss/extractor-arbitrary-variants": "0.57.1", - "@unocss/postcss": "0.57.1", - "@unocss/preset-attributify": "0.57.1", - "@unocss/preset-icons": "0.57.1", - "@unocss/preset-mini": "0.57.1", - "@unocss/preset-tagify": "0.57.1", - "@unocss/preset-typography": "0.57.1", - "@unocss/preset-uno": "0.57.1", - "@unocss/preset-web-fonts": "0.57.1", - "@unocss/preset-wind": "0.57.1", - "@unocss/reset": "0.57.1", - "@unocss/transformer-attributify-jsx": "0.57.1", - "@unocss/transformer-attributify-jsx-babel": "0.57.1", - "@unocss/transformer-compile-class": "0.57.1", - "@unocss/transformer-directives": "0.57.1", - "@unocss/transformer-variant-group": "0.57.1", - "@unocss/vite": "0.57.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "bin": { + "update-browserslist-db": "cli.js" }, "peerDependencies": { - "@unocss/webpack": "0.57.1", - "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@unocss/webpack": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "browserslist": ">= 4.21.0" } }, "node_modules/util-deprecate": { @@ -6486,40 +1652,11 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/version-selector-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/version-selector-type/-/version-selector-type-3.0.0.tgz", - "integrity": "sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA==", - "dev": true, - "dependencies": { - "semver": "^7.3.2" - }, - "engines": { - "node": ">=10.13" - } - }, "node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -6570,38 +1707,6 @@ } } }, - "node_modules/vite-node": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", - "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.4.0", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-plugin-compression2": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/vite-plugin-compression2/-/vite-plugin-compression2-0.11.0.tgz", - "integrity": "sha512-U6oEyRXZD26BynOgD/tStNTbQOLPt96aQNj/gdJTicKVYCQCdlV7QdmSF7VEhSyjiS59pQRhiMBu/uajprxWLA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.2" - } - }, "node_modules/vite-plugin-full-reload": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", @@ -6615,360 +1720,19 @@ "vite": "^2 || ^3 || ^4" } }, - "node_modules/vitest": { - "version": "0.34.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", - "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.6", - "@vitest/runner": "0.34.6", - "@vitest/snapshot": "0.34.6", - "@vitest/spy": "0.34.6", - "@vitest/utils": "0.34.6", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.10", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.6", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "node_modules/vue": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", - "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", - "dependencies": { - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-sfc": "3.3.7", - "@vue/runtime-dom": "3.3.7", - "@vue/server-renderer": "3.3.7", - "@vue/shared": "3.3.7" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", - "dependencies": { - "@vue/devtools-api": "^6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "optional": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dev": true, - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/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==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/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==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { - "node": ">=12" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-validation-error": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-1.5.0.tgz", - "integrity": "sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==", - "dev": true, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "zod": "^3.18.0" + "node": ">= 14" } } } diff --git a/package.json b/package.json index bd014a0..06260b9 100644 --- a/package.json +++ b/package.json @@ -1,53 +1,16 @@ { "private": true, + "type": "module", "scripts": { "dev": "vite", - "build": "vite build", - "lint": "eslint \"**/*.{js,jsx,.vue}\" --ignore-path .gitignore", - "format": "prettier . --write", - "test": "vitest", - "knip": "knip", - "ls-lint": "npx @ls-lint/ls-lint" + "build": "vite build" }, "devDependencies": { - "@ls-lint/ls-lint": "^2.2.2", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "eslint": "^8.52.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jsdoc": "^46.6.0", - "eslint-plugin-vue": "^9.18.1", - "knip": "^2.38.6", + "autoprefixer": "^10.4.16", + "axios": "^1.1.2", "laravel-vite-plugin": "^0.8.0", - "lodash": "^4.17.19", - "postcss": "^8.4.27", - "prettier": "3.0.3", - "rollup-plugin-analyzer": "^4.0.0", - "ts-node": "^10.9.1", - "typescript": "^5.0.4", - "unocss": "^0.57.1", - "vite": "^4.4.7", - "vite-plugin-compression2": "^0.11.0", - "vitest": "^0.34.3" - }, - "dependencies": { - "@tiptap/extension-highlight": "^2.1.8", - "@tiptap/extension-image": "^2.0.3", - "@tiptap/extension-link": "^2.0.3", - "@tiptap/extension-subscript": "^2.0.3", - "@tiptap/extension-superscript": "^2.1.8", - "@tiptap/extension-text-align": "^2.0.3", - "@tiptap/extension-underline": "^2.0.3", - "@tiptap/pm": "^2.0.3", - "@tiptap/starter-kit": "^2.1.8", - "@tiptap/vue-3": "^2.0.3", - "@vitejs/plugin-vue": "^4.4.0", - "dompurify": "^3.0.4", - "dotenv": "^16.0.3", - "pinia": "^2.0.28", - "pinia-plugin-persistedstate": "^3.2.0", - "sass": "^1.69.5", - "vue": "^3.3.7", - "vue-router": "^4.2.2" + "postcss": "^8.4.31", + "tailwindcss": "^3.3.5", + "vite": "^4.0.0" } } diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index d90c3c1..0000000 --- a/phpcs.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - STEMMechanics Coding Standards - - app - config - resources - routes - tests - - */database/* - */cache/* - */lang/* - */*.js - */*.css - */*.xml - */*.blade.php - */autoload.php - */storage/* - */docs/* - */vendor/* - */migrations/* - public/index.php - - - - - - - - - - - - */tests/* - */data/* - - - - - - - - - - - - - - - - - - error - - - - - error - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml index 8df6492..f112c0c 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,30 +1,31 @@ - - - - ./tests/Unit - - - ./tests/Feature - - - - - - - - - - - - - - - - - - - ./app - - + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess index 19f7a27..3aec5e2 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -3,31 +3,8 @@ Options -MultiViews -Indexes - - - - Header set Content-Disposition "attachment" - - - - RewriteEngine On - # Block access to .git directory - RewriteRule .*\.git/.* - [L,R=404] - - # Force HTTPS - RewriteCond %{HTTPS} !=on - RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - - # Support shortlinks - RewriteCond %{HTTP_HOST} ^(www\.)?stemmech\.com\.au$ [NC] - RewriteRule ^(.*)$ shortlink.php?code=$1 [L,QSA] - - # Add www subdomain if missing - RewriteCond %{HTTP_HOST} ^stemmechanics.com.au$ [NC] - RewriteRule (.*) https://www.stemmechanics.com.au/$1 [R=301,L] - # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] @@ -37,31 +14,8 @@ RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] - # Pass to media handler if the media request has query - #RewriteCond %{REQUEST_FILENAME} -f - #RewriteCond %{QUERY_STRING} . - #RewriteRule ^uploads/(.+)\.(jpe?g|png)$ media.php?url=uploads/$1.$2 [NC,QSA,L] - - # AddEncoding allows you to have certain browsers uncompress information on the fly. - AddEncoding gzip .gz - - #Serve gzip compressed CSS files if they exist and the client accepts gzip. - RewriteCond %{HTTP:Accept-encoding} gzip - RewriteCond %{REQUEST_FILENAME}\.gz -s - RewriteRule ^(.*)\.css $1\.css\.gz [QSA] - - # Serve gzip compressed JS files if they exist and the client accepts gzip. - RewriteCond %{HTTP:Accept-encoding} gzip - RewriteCond %{REQUEST_FILENAME}\.gz -s - RewriteRule ^(.*)\.js $1\.js\.gz [QSA] - - # Serve correct content types, and prevent mod_deflate double gzip. - RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1] - RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1] - # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] - diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png deleted file mode 100644 index 2085bdd..0000000 Binary files a/public/android-chrome-192x192.png and /dev/null differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png deleted file mode 100644 index 5ae4495..0000000 Binary files a/public/android-chrome-512x512.png and /dev/null differ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png deleted file mode 100644 index 4a41f0b..0000000 Binary files a/public/apple-touch-icon.png and /dev/null differ diff --git a/public/assets/community-discord.webp b/public/assets/community-discord.webp deleted file mode 100644 index c308ce7..0000000 Binary files a/public/assets/community-discord.webp and /dev/null differ diff --git a/public/assets/community-facebook.webp b/public/assets/community-facebook.webp deleted file mode 100644 index 556ac9a..0000000 Binary files a/public/assets/community-facebook.webp and /dev/null differ diff --git a/public/assets/community-github.webp b/public/assets/community-github.webp deleted file mode 100644 index b163610..0000000 Binary files a/public/assets/community-github.webp and /dev/null differ diff --git a/public/assets/community-mastodon.webp b/public/assets/community-mastodon.webp deleted file mode 100644 index f580d13..0000000 Binary files a/public/assets/community-mastodon.webp and /dev/null differ diff --git a/public/assets/community-minecraft.webp b/public/assets/community-minecraft.webp deleted file mode 100644 index c41e61c..0000000 Binary files a/public/assets/community-minecraft.webp and /dev/null differ diff --git a/public/assets/community-youtube.webp b/public/assets/community-youtube.webp deleted file mode 100644 index 7fa02c0..0000000 Binary files a/public/assets/community-youtube.webp and /dev/null differ diff --git a/public/assets/fileicons/.htaccess b/public/assets/fileicons/.htaccess deleted file mode 100644 index 05d0416..0000000 --- a/public/assets/fileicons/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -RewriteEngine on -RewriteCond %{REQUEST_FILENAME} !-f -RewriteRule \.png$ unknown.png [L] \ No newline at end of file diff --git a/public/assets/fileicons/doc.webp b/public/assets/fileicons/doc.webp deleted file mode 100644 index de67c0b..0000000 Binary files a/public/assets/fileicons/doc.webp and /dev/null differ diff --git a/public/assets/fileicons/docx.webp b/public/assets/fileicons/docx.webp deleted file mode 100644 index e370217..0000000 Binary files a/public/assets/fileicons/docx.webp and /dev/null differ diff --git a/public/assets/fileicons/jpeg.webp b/public/assets/fileicons/jpeg.webp deleted file mode 100644 index 21ba151..0000000 Binary files a/public/assets/fileicons/jpeg.webp and /dev/null differ diff --git a/public/assets/fileicons/jpg.webp b/public/assets/fileicons/jpg.webp deleted file mode 100644 index 88ad67b..0000000 Binary files a/public/assets/fileicons/jpg.webp and /dev/null differ diff --git a/public/assets/fileicons/mov.webp b/public/assets/fileicons/mov.webp deleted file mode 100644 index 3651241..0000000 Binary files a/public/assets/fileicons/mov.webp and /dev/null differ diff --git a/public/assets/fileicons/mp4.webp b/public/assets/fileicons/mp4.webp deleted file mode 100644 index f6f592b..0000000 Binary files a/public/assets/fileicons/mp4.webp and /dev/null differ diff --git a/public/assets/fileicons/pdf.webp b/public/assets/fileicons/pdf.webp deleted file mode 100644 index a654e4d..0000000 Binary files a/public/assets/fileicons/pdf.webp and /dev/null differ diff --git a/public/assets/fileicons/png.webp b/public/assets/fileicons/png.webp deleted file mode 100644 index c929a74..0000000 Binary files a/public/assets/fileicons/png.webp and /dev/null differ diff --git a/public/assets/fileicons/sb3.webp b/public/assets/fileicons/sb3.webp deleted file mode 100644 index 6d11fff..0000000 Binary files a/public/assets/fileicons/sb3.webp and /dev/null differ diff --git a/public/assets/fileicons/stopmotionstudiomobile.webp b/public/assets/fileicons/stopmotionstudiomobile.webp deleted file mode 100644 index ea802c8..0000000 Binary files a/public/assets/fileicons/stopmotionstudiomobile.webp and /dev/null differ diff --git a/public/assets/fileicons/svg.webp b/public/assets/fileicons/svg.webp deleted file mode 100644 index d6d2e57..0000000 Binary files a/public/assets/fileicons/svg.webp and /dev/null differ diff --git a/public/assets/fileicons/txt.webp b/public/assets/fileicons/txt.webp deleted file mode 100644 index 170d546..0000000 Binary files a/public/assets/fileicons/txt.webp and /dev/null differ diff --git a/public/assets/fileicons/unknown.webp b/public/assets/fileicons/unknown.webp deleted file mode 100644 index 72bdfb1..0000000 Binary files a/public/assets/fileicons/unknown.webp and /dev/null differ diff --git a/public/assets/fileicons/xls.webp b/public/assets/fileicons/xls.webp deleted file mode 100644 index 3d8c782..0000000 Binary files a/public/assets/fileicons/xls.webp and /dev/null differ diff --git a/public/assets/fileicons/xml.webp b/public/assets/fileicons/xml.webp deleted file mode 100644 index bbbbf78..0000000 Binary files a/public/assets/fileicons/xml.webp and /dev/null differ diff --git a/public/assets/fileicons/zip.webp b/public/assets/fileicons/zip.webp deleted file mode 100644 index 55f60e3..0000000 Binary files a/public/assets/fileicons/zip.webp and /dev/null differ diff --git a/public/assets/hamburger.svg b/public/assets/hamburger.svg deleted file mode 100644 index cf857fb..0000000 --- a/public/assets/hamburger.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -image/svg+xml - - - - - - - - - diff --git a/public/assets/home-discord.webp b/public/assets/home-discord.webp deleted file mode 100644 index 21152ed..0000000 Binary files a/public/assets/home-discord.webp and /dev/null differ diff --git a/public/assets/home-green-screen.webp b/public/assets/home-green-screen.webp deleted file mode 100644 index c11db46..0000000 Binary files a/public/assets/home-green-screen.webp and /dev/null differ diff --git a/public/assets/home-hero.webp b/public/assets/home-hero.webp deleted file mode 100644 index 72bd459..0000000 Binary files a/public/assets/home-hero.webp and /dev/null differ diff --git a/public/assets/home-minecraft-address.webp b/public/assets/home-minecraft-address.webp deleted file mode 100644 index f20581f..0000000 Binary files a/public/assets/home-minecraft-address.webp and /dev/null differ diff --git a/public/assets/home-minecraft-edu.webp b/public/assets/home-minecraft-edu.webp deleted file mode 100644 index 322feb1..0000000 Binary files a/public/assets/home-minecraft-edu.webp and /dev/null differ diff --git a/public/assets/home-minecraft.webp b/public/assets/home-minecraft.webp deleted file mode 100644 index 6d16944..0000000 Binary files a/public/assets/home-minecraft.webp and /dev/null differ diff --git a/public/assets/logo-dark.webp b/public/assets/logo-dark.webp deleted file mode 100644 index d0373d3..0000000 Binary files a/public/assets/logo-dark.webp and /dev/null differ diff --git a/public/assets/logo.webp b/public/assets/logo.webp deleted file mode 100644 index 2985774..0000000 Binary files a/public/assets/logo.webp and /dev/null differ diff --git a/public/assets/sad-monster.webp b/public/assets/sad-monster.webp deleted file mode 100644 index b23e182..0000000 Binary files a/public/assets/sad-monster.webp and /dev/null differ diff --git a/public/assets/vareal.webp b/public/assets/vareal.webp deleted file mode 100644 index 068572f..0000000 Binary files a/public/assets/vareal.webp and /dev/null differ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png deleted file mode 100644 index 2a25ed2..0000000 Binary files a/public/favicon-16x16.png and /dev/null differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png deleted file mode 100644 index 4f2893c..0000000 Binary files a/public/favicon-32x32.png and /dev/null differ diff --git a/public/favicon.ico b/public/favicon.ico index 45023b3..e69de29 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/media.php b/public/media.php deleted file mode 100644 index c27bb45..0000000 --- a/public/media.php +++ /dev/null @@ -1,83 +0,0 @@ - 0 && strpos($_GET['url'], 'uploads/') === 0 && is_file($filepath)) { - if(isset($_GET['size'])) { - $availableSizes = ['thumb', 'small', 'medium', 'large', 'xlarge']; // we ignore full as its the original file - $requestedSize = strtolower($_GET['size']); - $requestedSizeIndex = array_search($requestedSize, $availableSizes); - - // Loop through the array from the requested size index - if($requestedSizeIndex !== false) { - for ($i = $requestedSizeIndex; $i < count($availableSizes); $i++) { - $sizePath = pathinfo($filepath, PATHINFO_DIRNAME) . '/' . pathinfo($filepath, PATHINFO_FILENAME) . "-$availableSizes[$i]." . pathinfo($filepath, PATHINFO_EXTENSION); - if (file_exists($sizePath)) { - $filepath = $sizePath; - break; - } - } - } - - // Output the original image to the browser - header('Content-Type: '. mime_content_type($filepath)); - header('Content-Disposition: inline; filename=' . pathinfo($filepath, PATHINFO_FILENAME) . '.' . pathinfo($filepath, PATHINFO_EXTENSION)); - readfile($filepath); - } else { - $newWidth = (isset($_GET['w']) ? intval($_GET['w']) : -1); - $newHeight = (isset($_GET['h']) ? intval($_GET['h']) : -1); - - if($newWidth != -1 || $newHeight != -1) { - $image = imagecreatefromstring(file_get_contents($filepath)); - - $width = imagesx($image); - $height = imagesy($image); - - $aspectRatio = $width / $height; - - if($newWidth == -1) { - $newWidth = intval($newHeight * $aspectRatio); - } - - if($newHeight == -1) { - $newHeight = intval($newWidth / $aspectRatio); - } - - $newImage = imagecreatetruecolor($newWidth, $newHeight); - imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); - - // Output the resized image to the browser - $mime_type = mime_content_type($_GET['url']); - header('Content-Type: ' . $mime_type); - switch($mime_type) { - case "image/jpeg": - imagejpeg($newImage); - break; - case "image/gif": - imagegif($newImage); - break; - case "image/png": - imagepng($newImage); - break; - } - imagedestroy($newImage); - - // Clean up the image resources - imagedestroy($image); - } else { - // Output the original image to the browser - header('Content-Type: '. mime_content_type($filepath)); - header('Content-Disposition: inline; filename=' . pathinfo($filepath, PATHINFO_FILENAME) . '.' . pathinfo($filepath, PATHINFO_EXTENSION)); - readfile($filepath); - } - } -} else { - // Return a 404 error - header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found"); - exit; -} diff --git a/public/shortlink.php b/public/shortlink.php deleted file mode 100644 index 54bbaaf..0000000 --- a/public/shortlink.php +++ /dev/null @@ -1,51 +0,0 @@ -load(); - -$dbHost = $_ENV['DB_HOST']; -$dbPort = $_ENV['DB_PORT']; -$dbName = $_ENV['DB_DATABASE']; -$dbUser = $_ENV['DB_USERNAME']; -$dbPass = $_ENV['DB_PASSWORD']; - -// create connection -$conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName, $dbPort); - -// check connection -if ($conn->connect_error) { - die("Connection failed: " . $conn->connect_error); -} - -// get code from URL -$code = $_SERVER['REQUEST_URI']; -$code = trim($code, '/'); -if (($pos = strpos($code, '?')) !== false) { - $code = substr($code, 0, $pos); -} - -// lookup code in database -$sql = "SELECT url, used FROM shortlinks WHERE code = ?"; -$stmt = $conn->prepare($sql); -$stmt->bind_param("s", $code); -$stmt->execute(); -$result = $stmt->get_result(); - -// if code is found, redirect to URL and update 'used' column -if ($result->num_rows > 0) { - $row = $result->fetch_assoc(); - $url = $row["url"]; - $used = $row["used"] + 1; - $updateSql = "UPDATE shortlinks SET used = $used WHERE code = ?"; - $stmt = $conn->prepare($updateSql); - $stmt->bind_param("s", $code); - $stmt->execute(); - header("Location: " . $url); - exit(); -} else { - // if code is not found, redirect to default URL - header("Location: https://www.stemmechanics.com.au/"); - exit(); -} diff --git a/resources/css/app.scss b/resources/css/app.scss deleted file mode 100644 index 9d6f68a..0000000 --- a/resources/css/app.scss +++ /dev/null @@ -1,230 +0,0 @@ -*, -:after, -:before { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - border: 0 solid #e5e7eb; -} -html { - overflow: -moz-scrollbars-vertical; - overflow-y: auto; - background-color: #f3f4f6; -} -html, -body { - font-family: Poppins, Roboto, "Open Sans", ui-sans-serif, system-ui, - sans-serif; - font-size: 1rem; - color: #000; - width: 100%; - min-height: 100vh; - min-width: 100%; - overflow-x: hidden; - line-height: 1.5; - margin: 0; -} -h1, -h2, -h3, -p { - margin: 0; -} -p + p, -p + ul, -ul + p { - margin-top: 1rem; -} -ol, -ul { - list-style: none; - margin: 0; - padding: 0; -} -small { - display: inline-block; -} -.small { - font-size: smaller; -} -.x-small { - font-size: x-small; -} -.list-decimal, -.list-disc, -.list-circle { - margin-left: 2.5rem; -} -.list-decimal li, -.list-disc li, -.list-circle li { - margin-top: 0.5rem; -} -a:not([role="button"]) { - color: #0284c7; -} -a:not([role="button"]):hover { - color: #0ea5e9; -} -a[role="button"] { - text-decoration: inherit; -} -a { - text-decoration: none; -} -input:disabled { - background-color: rgba(243, 244, 246); -} -input[type="submit"]:disabled { - background-color: rgba(209, 213, 219); -} -input { - font-family: Poppins, Roboto, "Open Sans", ui-sans-serif, system-ui, - sans-serif; -} -.scrollbar-width-none { - scrollbar-width: none; -} -.scrollbar-width-none::-webkit-scrollbar { - display: none; -} -.bg-center { - background-position: center; -} -.whitespace-nowrap { - white-space: nowrap; -} -.spin { - animation: rotate 1s infinite linear; -} -.text-xxs { - font-size: 0.6rem; - line-height: 0.75rem; -} -.text-bold { - font-weight: bold; -} -.sm-html .ProseMirror { - outline: none; -} -.sm-html hr { - border-top: 1px solid #aaa; - margin: 1.5rem 0; -} -.sm-html pre { - padding: 0 1rem; - line-height: 1rem; -} -.sm-html blockquote { - border-left: 4px solid #ddd; - margin-left: 1rem; - padding-left: 1rem; -} -.sm-html p.info, -.sm-html p.success, -.sm-html p.warning, -.sm-html p.danger { - display: flex; - border-radius: 0.5rem; - padding: 0.5rem 1rem 0.5rem 0.75rem; - margin: 0.5rem; - font-size: 80%; -} -.sm-html p.info::before, -.sm-html p.success::before, -.sm-html p.warning::before, -.sm-html p.danger::before { - display: inline-block; - width: 1.5rem; - height: 1.5rem; - margin-right: 0.5rem; - margin-top: 0.1rem; - flex-shrink: 0; -} -.sm-html p.info { - border: 1px solid rgba(14, 165, 233, 1); - background-color: rgba(14, 165, 233, 0.25); -} -.sm-html p.info::before { - color: rgba(14, 165, 233, 1); - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z' fill='rgba(14,165,233,1)' /%3E%3C/svg%3E"); -} -.sm-html p.success { - border: 1px solid rgba(22, 163, 74, 1); - background-color: rgba(22, 163, 74, 0.25); -} -.sm-html p.success::before { - color: rgba(22, 163, 74, 1); - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z' fill='rgba(22,163,74,1)' /%3E%3C/svg%3E"); -} -.sm-html p.warning, -div.warning { - border: 1px solid rgba(202, 138, 4, 1); - background-color: rgba(250, 204, 21, 0.25); -} -.sm-html p.warning::before { - color: rgba(202, 138, 4, 1); - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16' fill='rgba(202,138,4,1)' /%3E%3C/svg%3E"); -} -.sm-html p.danger { - border: 1px solid rgba(220, 38, 38, 1); - background-color: rgba(220, 38, 38, 0.25); -} -.sm-html p.danger::before { - color: rgba(220, 38, 38, 1); - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41' fill='rgba(220,38,38,1)' /%3E%3C/svg%3E"); -} -.sm-html img { - display: block; - margin: 1rem auto; - max-height: 100%; - max-width: 100%; -} -.sm-html ul { - list-style: disc; - margin: 1rem 2rem; -} -.sm-html ol { - list-style: decimal; - margin: 1rem 2rem; -} -.sm-html ul li, -.sm-html ol li { - margin-bottom: 0.25rem; -} -.sm-editor::-webkit-scrollbar { - background-color: transparent; - width: 16px; -} -.sm-editor::-webkit-scrollbar-thumb { - background-color: #aaa; - border: 4px solid transparent; - border-radius: 8px; - background-clip: padding-box; -} -.selected-checked { - border: 3px solid rgba(2, 132, 199, 1); - position: relative; -} -.selected-checked::after { - display: block; - position: absolute; - border: 1px solid white; - height: 1.5rem; - width: 1.5rem; - background-color: rgba(2, 132, 199, 1); - top: -0.4rem; - right: -0.4rem; - content: ""; - background-position: center; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21,7L9,19L2.712,12.712L5.556,9.892L9.029,13.358L18.186,4.189L21,7Z' fill='rgba(255,255,255,1)' /%3E%3C/svg%3E"); -} -@keyframes rotate { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index e69de29..846d350 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/js/components/SMArticleCard.vue b/resources/js/components/SMArticleCard.vue deleted file mode 100644 index bfceecf..0000000 --- a/resources/js/components/SMArticleCard.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/resources/js/components/SMAttachments.vue b/resources/js/components/SMAttachments.vue deleted file mode 100644 index a2c93bb..0000000 --- a/resources/js/components/SMAttachments.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - diff --git a/resources/js/components/SMCard.vue b/resources/js/components/SMCard.vue deleted file mode 100644 index 76d777b..0000000 --- a/resources/js/components/SMCard.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/resources/js/components/SMCheckbox.vue b/resources/js/components/SMCheckbox.vue deleted file mode 100644 index c13697b..0000000 --- a/resources/js/components/SMCheckbox.vue +++ /dev/null @@ -1,248 +0,0 @@ - - - - - diff --git a/resources/js/components/SMControl.vue b/resources/js/components/SMControl.vue deleted file mode 100644 index 91c2a21..0000000 --- a/resources/js/components/SMControl.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - diff --git a/resources/js/components/SMDialog.ts b/resources/js/components/SMDialog.ts deleted file mode 100644 index 3af256a..0000000 --- a/resources/js/components/SMDialog.ts +++ /dev/null @@ -1,124 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { - AllowedComponentProps, - Component, - defineComponent, - shallowReactive, - VNodeProps, - watch, -} from "vue"; - -export interface DialogInstance { - comp?: any; - dialog: Component; - wrapper: string; - props: unknown; - resolve: (data: unknown) => void; -} -const dialogRefs = shallowReactive([]); - -export default defineComponent({ - name: "SMDialogList", - template: ` -

-
- -
-
- `, - data() { - const dialogRefList = dialogRefs; - - return { - name: "default", - transitionAttrs: {}, - dialogRefList, - }; - }, -}); - -/** - * Closes last opened dialog, resolving the promise with the return value of the dialog, or with the given - * data if any. - * @param {unknown} data The dialog return value. - */ -export function closeDialog(data?: unknown) { - if (dialogRefs.length <= 1) { - document.getElementsByTagName("html")[0].style.overflow = ""; - document.getElementsByTagName("body")[0].style.overflow = ""; - } - - const lastDialog = dialogRefs.pop(); - if (data === undefined && lastDialog.comp && lastDialog.comp.returnValue) { - data = lastDialog.comp.returnValue(); - } - if (lastDialog && data !== undefined) { - lastDialog.resolve(data); - } -} - -/** - * Extracts the type of props from a component definition. - */ -type PropsType = C extends new (...args: any) => any - ? Omit< - InstanceType["$props"], - keyof VNodeProps | keyof AllowedComponentProps - > - : never; - -/** - * Extracts the return type of the dialog from the setup function. - */ -type BindingReturnType = C extends new ( - ...args: any -) => any - ? InstanceType extends { returnValue: () => infer Y } - ? Y - : never - : never; - -/** - * Extracts the return type of the dialog either from the setup method or from the methods. - */ -type ReturnType = BindingReturnType; - -/** - * Opens a dialog. - * @param {Component} dialog The dialog you want to open. - * @param {PropsType} props The props to be passed to the dialog. - * @param {string} wrapper The dialog wrapper you want the dialog to open into. - * @returns {Promise} A promise that resolves when the dialog is closed - */ -export function openDialog( - dialog: C, - props?: PropsType, - wrapper: string = "default", -): Promise> { - if (dialogRefs.length === 0) { - document.getElementsByTagName("html")[0].style.overflow = "hidden"; - document.getElementsByTagName("body")[0].style.overflow = "hidden"; - } - - return new Promise((resolve) => { - dialogRefs.push({ - dialog, - props, - wrapper, - resolve, - }); - - window.setTimeout(() => { - const autofocusElement = document.querySelector( - "[autofocus]", - ) as HTMLInputElement; - if (autofocusElement) { - autofocusElement.focus(); - } - }, 10); - }); -} diff --git a/resources/js/components/SMDropdown.vue b/resources/js/components/SMDropdown.vue deleted file mode 100644 index df45afb..0000000 --- a/resources/js/components/SMDropdown.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - - - diff --git a/resources/js/components/SMEditor.vue b/resources/js/components/SMEditor.vue deleted file mode 100644 index 4c51209..0000000 --- a/resources/js/components/SMEditor.vue +++ /dev/null @@ -1,936 +0,0 @@ - - - - - diff --git a/resources/js/components/SMEventCard.vue b/resources/js/components/SMEventCard.vue deleted file mode 100644 index d9f11d3..0000000 --- a/resources/js/components/SMEventCard.vue +++ /dev/null @@ -1,269 +0,0 @@ - - - - - diff --git a/resources/js/components/SMFileLink.vue b/resources/js/components/SMFileLink.vue deleted file mode 100644 index b450d6b..0000000 --- a/resources/js/components/SMFileLink.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/resources/js/components/SMForm.vue b/resources/js/components/SMForm.vue deleted file mode 100644 index 728667b..0000000 --- a/resources/js/components/SMForm.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/resources/js/components/SMFormError.vue b/resources/js/components/SMFormError.vue deleted file mode 100644 index 04e1c93..0000000 --- a/resources/js/components/SMFormError.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - - diff --git a/resources/js/components/SMHTML.vue b/resources/js/components/SMHTML.vue deleted file mode 100644 index 53b2444..0000000 --- a/resources/js/components/SMHTML.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - diff --git a/resources/js/components/SMHeader.vue b/resources/js/components/SMHeader.vue deleted file mode 100644 index 95aecc3..0000000 --- a/resources/js/components/SMHeader.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/resources/js/components/SMImage.vue b/resources/js/components/SMImage.vue deleted file mode 100644 index 4fe5e13..0000000 --- a/resources/js/components/SMImage.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - - - diff --git a/resources/js/components/SMImageGallery.vue b/resources/js/components/SMImageGallery.vue deleted file mode 100644 index f027e0a..0000000 --- a/resources/js/components/SMImageGallery.vue +++ /dev/null @@ -1,364 +0,0 @@ - - - - - diff --git a/resources/js/components/SMImageStack.vue b/resources/js/components/SMImageStack.vue deleted file mode 100644 index ad5bf96..0000000 --- a/resources/js/components/SMImageStack.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - - diff --git a/resources/js/components/SMInput copy.vue b/resources/js/components/SMInput copy.vue deleted file mode 100644 index b38d1ac..0000000 --- a/resources/js/components/SMInput copy.vue +++ /dev/null @@ -1,882 +0,0 @@ - - - - - diff --git a/resources/js/components/SMInput.vue b/resources/js/components/SMInput.vue deleted file mode 100644 index 557fce0..0000000 --- a/resources/js/components/SMInput.vue +++ /dev/null @@ -1,315 +0,0 @@ - - - - - diff --git a/resources/js/components/SMInputAttachments.vue b/resources/js/components/SMInputAttachments.vue deleted file mode 100644 index b08df28..0000000 --- a/resources/js/components/SMInputAttachments.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - - - diff --git a/resources/js/components/SMInputFile.vue b/resources/js/components/SMInputFile.vue deleted file mode 100644 index b38d1ac..0000000 --- a/resources/js/components/SMInputFile.vue +++ /dev/null @@ -1,882 +0,0 @@ - - - - - diff --git a/resources/js/components/SMLoading.vue b/resources/js/components/SMLoading.vue deleted file mode 100644 index 918f5eb..0000000 --- a/resources/js/components/SMLoading.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - - diff --git a/resources/js/components/SMMastHead.vue b/resources/js/components/SMMastHead.vue deleted file mode 100644 index cb6f3d2..0000000 --- a/resources/js/components/SMMastHead.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/resources/js/components/SMNavbar.vue b/resources/js/components/SMNavbar.vue deleted file mode 100644 index 7831020..0000000 --- a/resources/js/components/SMNavbar.vue +++ /dev/null @@ -1,717 +0,0 @@ - - - - - diff --git a/resources/js/components/SMPageFooter.vue b/resources/js/components/SMPageFooter.vue deleted file mode 100644 index 6aadace..0000000 --- a/resources/js/components/SMPageFooter.vue +++ /dev/null @@ -1,645 +0,0 @@ - - - diff --git a/resources/js/components/SMPageStatus.vue b/resources/js/components/SMPageStatus.vue deleted file mode 100644 index 84a23f4..0000000 --- a/resources/js/components/SMPageStatus.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/resources/js/components/SMPagination.vue b/resources/js/components/SMPagination.vue deleted file mode 100644 index 744946d..0000000 --- a/resources/js/components/SMPagination.vue +++ /dev/null @@ -1,210 +0,0 @@ - - - diff --git a/resources/js/components/SMRange.vue b/resources/js/components/SMRange.vue deleted file mode 100644 index 5ecc5ca..0000000 --- a/resources/js/components/SMRange.vue +++ /dev/null @@ -1,876 +0,0 @@ - - - - - diff --git a/resources/js/components/SMSelectFile.vue b/resources/js/components/SMSelectFile.vue deleted file mode 100644 index 6f24b23..0000000 --- a/resources/js/components/SMSelectFile.vue +++ /dev/null @@ -1,653 +0,0 @@ - - - - - diff --git a/resources/js/components/SMSocialIcons.vue b/resources/js/components/SMSocialIcons.vue deleted file mode 100644 index ce0d576..0000000 --- a/resources/js/components/SMSocialIcons.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/resources/js/components/SMTab.vue b/resources/js/components/SMTab.vue deleted file mode 100644 index f9e686c..0000000 --- a/resources/js/components/SMTab.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/resources/js/components/SMTabGroup.vue b/resources/js/components/SMTabGroup.vue deleted file mode 100644 index 940c4db..0000000 --- a/resources/js/components/SMTabGroup.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/resources/js/components/SMTable.vue b/resources/js/components/SMTable.vue deleted file mode 100644 index 4864cde..0000000 --- a/resources/js/components/SMTable.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - - diff --git a/resources/js/components/SMToast.vue b/resources/js/components/SMToast.vue deleted file mode 100644 index 3587f71..0000000 --- a/resources/js/components/SMToast.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - diff --git a/resources/js/components/SMToastList.vue b/resources/js/components/SMToastList.vue deleted file mode 100644 index 6ba4bc9..0000000 --- a/resources/js/components/SMToastList.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/resources/js/components/dialogs/SMDialogChangePassword.vue b/resources/js/components/dialogs/SMDialogChangePassword.vue deleted file mode 100644 index 6556d55..0000000 --- a/resources/js/components/dialogs/SMDialogChangePassword.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - diff --git a/resources/js/components/dialogs/SMDialogConfirm.vue b/resources/js/components/dialogs/SMDialogConfirm.vue deleted file mode 100644 index 65ec69a..0000000 --- a/resources/js/components/dialogs/SMDialogConfirm.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - diff --git a/resources/js/components/dialogs/SMDialogMedia.vue b/resources/js/components/dialogs/SMDialogMedia.vue deleted file mode 100644 index cc0e831..0000000 --- a/resources/js/components/dialogs/SMDialogMedia.vue +++ /dev/null @@ -1,1642 +0,0 @@ - - - - - diff --git a/resources/js/components/dialogs/SMDialogProgress.vue b/resources/js/components/dialogs/SMDialogProgress.vue deleted file mode 100644 index 1681ad8..0000000 --- a/resources/js/components/dialogs/SMDialogProgress.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/resources/js/extensions/danger.ts b/resources/js/extensions/danger.ts deleted file mode 100644 index 921ad9e..0000000 --- a/resources/js/extensions/danger.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { mergeAttributes, Node } from "@tiptap/core"; - -export interface DangerOptions { - HTMLAttributes: Record; -} - -declare module "@tiptap/core" { - interface Commands { - danger: { - /** - * Toggle a paragraph - */ - setDanger: () => ReturnType; - toggleDanger: () => ReturnType; - }; - } -} - -export const Danger = Node.create({ - name: "danger", - - priority: 1000, - - addOptions() { - return { - HTMLAttributes: { class: "danger" }, - }; - }, - - group: "block", - - content: "inline*", - - parseHTML() { - return [{ tag: "p", class: "danger" }]; - }, - - renderHTML({ HTMLAttributes }) { - return [ - "p", - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ]; - }, - - addCommands() { - return { - setDanger: - () => - ({ commands }) => { - return commands.setNode(this.name); - }, - toggleDanger: - () => - ({ commands }) => { - return commands.toggleNode(this.name, "paragraph"); - }, - }; - }, -}); diff --git a/resources/js/extensions/info.ts b/resources/js/extensions/info.ts deleted file mode 100644 index 80868dc..0000000 --- a/resources/js/extensions/info.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { mergeAttributes, Node } from "@tiptap/core"; - -export interface InfoOptions { - HTMLAttributes: Record; -} - -declare module "@tiptap/core" { - interface Commands { - info: { - /** - * Toggle a paragraph - */ - setInfo: () => ReturnType; - toggleInfo: () => ReturnType; - }; - } -} - -export const Info = Node.create({ - name: "info", - - priority: 1000, - - addOptions() { - return { - HTMLAttributes: { class: "info" }, - }; - }, - - group: "block", - - content: "inline*", - - parseHTML() { - return [{ tag: "p", class: "info" }]; - }, - - renderHTML({ HTMLAttributes }) { - return [ - "p", - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ]; - }, - - addCommands() { - return { - setInfo: - () => - ({ commands }) => { - return commands.setNode(this.name); - }, - toggleInfo: - () => - ({ commands }) => { - return commands.toggleNode(this.name, "paragraph"); - }, - }; - }, -}); diff --git a/resources/js/extensions/small.ts b/resources/js/extensions/small.ts deleted file mode 100644 index 29ccd37..0000000 --- a/resources/js/extensions/small.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { mergeAttributes, Node } from "@tiptap/core"; - -export interface SmallOptions { - HTMLAttributes: Record; -} - -declare module "@tiptap/core" { - interface Commands { - small: { - /** - * Set a small mark - */ - setSmall: () => ReturnType; - /** - * Toggle a small mark - */ - toggleSmall: () => ReturnType; - }; - } -} - -export const Small = Node.create({ - name: "small", - group: "block", - content: "inline*", - - addOptions() { - return { - HTMLAttributes: { class: "small" }, - }; - }, - - parseHTML() { - return [{ tag: "p.small", priority: 100 }]; - }, - - renderHTML({ HTMLAttributes }) { - return [ - "p", - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ]; - }, - - addCommands() { - return { - setSmall: - () => - ({ commands }) => { - return commands.setNode(this.name); - }, - toggleSmall: - () => - ({ commands }) => { - return commands.toggleNode(this.name, "paragraph"); - }, - }; - }, -}); diff --git a/resources/js/extensions/success.ts b/resources/js/extensions/success.ts deleted file mode 100644 index a7997fe..0000000 --- a/resources/js/extensions/success.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { mergeAttributes, Node } from "@tiptap/core"; - -export interface SuccessOptions { - HTMLAttributes: Record; -} - -declare module "@tiptap/core" { - interface Commands { - success: { - /** - * Toggle a paragraph - */ - setSuccess: () => ReturnType; - toggleSuccess: () => ReturnType; - }; - } -} - -export const Success = Node.create({ - name: "success", - - priority: 1000, - - addOptions() { - return { - HTMLAttributes: { class: "success" }, - }; - }, - - group: "block", - - content: "inline*", - - parseHTML() { - return [{ tag: "p", class: "success" }]; - }, - - renderHTML({ HTMLAttributes }) { - return [ - "p", - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ]; - }, - - addCommands() { - return { - setSuccess: - () => - ({ commands }) => { - return commands.setNode(this.name); - }, - toggleSuccess: - () => - ({ commands }) => { - return commands.toggleNode(this.name, "paragraph"); - }, - }; - }, -}); diff --git a/resources/js/extensions/warning.ts b/resources/js/extensions/warning.ts deleted file mode 100644 index 58e9d6c..0000000 --- a/resources/js/extensions/warning.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { mergeAttributes, Node } from "@tiptap/core"; - -export interface WarningOptions { - HTMLAttributes: Record; -} - -declare module "@tiptap/core" { - interface Commands { - warning: { - /** - * Toggle a paragraph - */ - setWarning: () => ReturnType; - toggleWarning: () => ReturnType; - }; - } -} - -export const Warning = Node.create({ - name: "warning", - - priority: 1000, - - addOptions() { - return { - HTMLAttributes: { class: "warning" }, - }; - }, - - group: "block", - - content: "inline*", - - parseHTML() { - return [{ tag: "p", class: "warning" }]; - }, - - renderHTML({ HTMLAttributes }) { - return [ - "p", - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ]; - }, - - addCommands() { - return { - setWarning: - () => - ({ commands }) => { - return commands.setNode(this.name); - }, - toggleWarning: - () => - ({ commands }) => { - return commands.toggleNode(this.name, "paragraph"); - }, - }; - }, -}); diff --git a/resources/js/helpers/api.ts b/resources/js/helpers/api.ts deleted file mode 100644 index e2f6ffa..0000000 --- a/resources/js/helpers/api.ts +++ /dev/null @@ -1,476 +0,0 @@ -import { useUserStore } from "../store/UserStore"; -import { useApplicationStore } from "../store/ApplicationStore"; -import { useCacheStore } from "../store/CacheStore"; -import { ImportMetaExtras } from "../../../import-meta"; - -interface ApiProgressData { - loaded: number; - total: number; -} - -interface ApiCallbackData { - status: number; - statusText: string; - url: string; - headers: unknown; - data: unknown; -} - -type ApiProgressCallback = (progress: ApiProgressData) => void; -type ApiResultCallback = (data: ApiCallbackData) => void; - -export interface ApiOptions { - url: string; - params?: object; - method?: string; - headers?: HeadersInit; - body?: string | object | FormData | ArrayBuffer | Blob; - signal?: AbortSignal | null; - progress?: ApiProgressCallback; - callback?: ApiResultCallback; - chunk?: string; -} - -export interface ApiResponse { - status: number; - message: string; - data: unknown; - json?: Record; -} - -const apiDefaultHeaders = { - Accept: "application/json", - "Content-Type": "application/json;charset=UTF-8", -}; - -export const api = { - timeout: 8000, - baseUrl: (import.meta as ImportMetaExtras).env.APP_URL_API, - - send: function (options: ApiOptions) { - return new Promise((resolve, reject) => { - let url = this.baseUrl + options.url; - - if (options.params) { - let params = ""; - - for (const [key, value] of Object.entries(options.params)) { - const placeholder = `{${key}}`; - if (url.includes(placeholder)) { - url = url.replace( - placeholder, - encodeURIComponent(value), - ); - } else { - params += `&${encodeURIComponent( - key, - )}=${encodeURIComponent(value)}`; - } - } - - url = url.replace(/{(.*?)}/g, "$1"); - if (params.length > 0) { - url += (url.includes("?") ? "" : "?") + params.substring(1); - } - } - - options.headers = { - ...apiDefaultHeaders, - ...(options.headers || {}), - }; - - const userStore = useUserStore(); - if (userStore.id) { - options.headers["Authorization"] = `Bearer ${userStore.token}`; - } - - options.method = options.method.toUpperCase() || "GET"; - - if (options.body && typeof options.body === "object") { - if (options.body instanceof FormData) { - if ( - Object.prototype.hasOwnProperty.call( - options.headers, - "Content-Type", - ) - ) { - // remove the "Content-Type" key from the headers object - delete options.headers["Content-Type"]; - } - - if (options.method != "POST") { - options.body.append("_method", options.method); - options.method = "POST"; - } - } else if ( - options.body instanceof Blob || - options.body instanceof ArrayBuffer - ) { - // do nothing, let XHR handle these types of bodies without a Content-Type header - } else { - options.body = JSON.stringify(options.body); - options.headers["Content-Type"] = "application/json"; - } - } - - if ( - (options.method == "POST" || - options.method == "PUT" || - options.method == "PATCH") && - options.progress - ) { - const xhr = new XMLHttpRequest(); - - xhr.upload.onprogress = function (event) { - if (event.lengthComputable) { - options.progress({ - loaded: event.loaded, - total: event.total, - }); - } - }; - - xhr.open(options.method, url); - for (const header in options.headers) { - xhr.setRequestHeader(header, options.headers[header]); - } - xhr.onload = function () { - const result = { - status: xhr.status, - statusText: xhr.statusText, - url: url, - headers: {}, - data: "", - }; - - const headersString = xhr.getAllResponseHeaders(); - const headersArray = headersString.trim().split("\n"); - headersArray.forEach((header) => { - const [name, value] = header.trim().split(":"); - result.headers[name] = value.trim(); - }); - - if ( - xhr.response && - result.headers["content-type"] == "application/json" - ) { - try { - result.data = JSON.parse(xhr.response); - } catch (error) { - result.data = xhr.response; - } - } else { - result.data = xhr.response; - } - - useApplicationStore().unavailable = false; - if (xhr.status < 300) { - if (options.callback) { - options.callback(result); - } else { - resolve(result); - } - - return; - } else { - if (xhr.status == 503) { - useApplicationStore().unavailable = true; - } - - if (options.callback) { - options.callback(result); - } else { - reject(result); - } - - return; - } - }; - - try { - xhr.send(options.body as XMLHttpRequestBodyInit); - } catch (e) { - console.log(e); - } - } else { - const fetchOptions: RequestInit = { - method: options.method.toUpperCase() || "GET", - headers: options.headers, - signal: options.signal || null, - }; - - if ( - (typeof options.body == "string" && - options.body.length > 0) || - options.body instanceof FormData - ) { - fetchOptions.body = options.body; - } - - if (fetchOptions.method == "GET" && options.callback) { - const cache = useCacheStore().getCacheByUrl(url); - if (cache != null) { - options.callback(cache); - } - } - - fetch(url, fetchOptions) - .then(async (response) => { - let data: string | object = ""; - if (response.headers.get("content-length") !== "0") { - if ( - response && - response.headers.get("content-type") == null - ) { - try { - data = response.json - ? await response.json() - : {}; - } catch (error) { - try { - data = response.text - ? await response.text() - : ""; - } catch (error) { - data = ""; - } - } - } else { - data = - response && response.json - ? await response.json() - : {}; - } - } - - const result = { - status: response.status, - statusText: response.statusText, - url: response.url, - headers: response.headers, - data: data, - }; - - useApplicationStore().unavailable = false; - if (response.status >= 300) { - if (response.status === 503) { - useApplicationStore().unavailable = true; - } - - if (options.callback) { - options.callback(result); - } else { - reject(result); - } - - return; - } - - if (options.callback) { - if (fetchOptions.method == "GET") { - const modified = useCacheStore().updateCache( - url, - result, - ); - - if (modified == false) { - return; - } - } - - options.callback(result); - return; - } - - resolve(result); - }) - .catch((error) => { - // Handle any errors thrown during the fetch process - const { response, ...rest } = error; - const result = { - ...rest, - response: response && response.json(), - }; - - if (options.callback) { - options.callback(result); - } else { - reject(result); - } - - return; - }); - } - }); - }, - - get: async function (options: ApiOptions | string): Promise { - let apiOptions = {} as ApiOptions; - - if (typeof options == "string") { - apiOptions.url = options; - } else { - apiOptions = options; - } - - apiOptions.method = "GET"; - return await this.send(apiOptions); - }, - - post: async function (options: ApiOptions | string): Promise { - let apiOptions = {} as ApiOptions; - - if (typeof options == "string") { - apiOptions.url = options; - } else { - apiOptions = options; - } - - apiOptions.method = "POST"; - return await this.send(apiOptions); - }, - - put: async function (options: ApiOptions | string): Promise { - let apiOptions = {} as ApiOptions; - - if (typeof options == "string") { - apiOptions.url = options; - } else { - apiOptions = options; - } - - apiOptions.method = "PUT"; - return await this.send(apiOptions); - }, - - delete: async function ( - options: ApiOptions | string, - ): Promise { - let apiOptions = {} as ApiOptions; - - if (typeof options == "string") { - apiOptions.url = options; - } else { - apiOptions = options; - } - - apiOptions.method = "DELETE"; - return await this.send(apiOptions); - }, - - chunk: async function (options: ApiOptions | string): Promise { - let apiOptions = {} as ApiOptions; - - // setup api options - if (typeof options == "string") { - apiOptions.url = options; - } else { - apiOptions = options; - } - - // set method to post by default - if (!Object.prototype.hasOwnProperty.call(apiOptions, "method")) { - apiOptions.method = "POST"; - } - - // check for chunk option - if ( - Object.prototype.hasOwnProperty.call(apiOptions, "chunk") && - Object.prototype.hasOwnProperty.call(apiOptions, "body") && - apiOptions.body instanceof FormData - ) { - if (apiOptions.body.has(apiOptions.chunk)) { - const file = apiOptions.body.get(apiOptions.chunk); - - if (file instanceof File) { - const chunkSize = 2 * 1024 * 1024; - let chunk = 0; - let chunkCount = 1; - let job_id = -1; - - if (file.size > chunkSize) { - chunkCount = Math.ceil(file.size / chunkSize); - } - - let result = null; - for (chunk = 0; chunk < chunkCount; chunk++) { - const offset = chunk * chunkSize; - const fileChunk = file.slice( - offset, - offset + chunkSize, - ); - - const chunkFormData = new FormData(); - if (job_id == -1) { - for (const [field, value] of apiOptions.body) { - chunkFormData.append(field, value); - } - - chunkFormData.append("name", file.name); - chunkFormData.append("size", file.size.toString()); - chunkFormData.append("mime_type", file.type); - } else { - chunkFormData.append("job_id", job_id.toString()); - } - - chunkFormData.set(apiOptions.chunk, fileChunk); - chunkFormData.append("chunk", (chunk + 1).toString()); - chunkFormData.append( - "chunk_count", - chunkCount.toString(), - ); - - const chunkOptions = { - method: apiOptions.method, - url: apiOptions.url, - params: apiOptions.params || {}, - body: chunkFormData, - headers: apiOptions.headers || {}, - progress: (progressEvent) => { - if ( - Object.prototype.hasOwnProperty.call( - apiOptions, - "progress", - ) - ) { - apiOptions.progress({ - loaded: - chunk * chunkSize + - progressEvent.loaded, - total: file.size, - }); - } - }, - }; - - result = await this.send(chunkOptions); - job_id = result.data.media_job.id; - } - - return result; - } - } - } - - return await this.send(apiOptions); - }, -}; - -/** - * Get an api result data as type. - * @param result The api result object. - * @param defaultValue The default data to return if no result exists. - * @returns Data object. - */ -export function getApiResultData( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - result: any, - defaultValue: T | null = null, -): T | null { - if (!result || !Object.prototype.hasOwnProperty.call(result, "data")) { - return defaultValue; - } - - const data = result.data as T; - return data instanceof Object ? data : defaultValue; -} diff --git a/resources/js/helpers/api.types.ts b/resources/js/helpers/api.types.ts deleted file mode 100644 index c8c110c..0000000 --- a/resources/js/helpers/api.types.ts +++ /dev/null @@ -1,190 +0,0 @@ -export type Booleanish = boolean | "true" | "false"; - -export type EmptyObject = { [key: string]: never }; - -export interface SessionRequest { - id: number; - session_id: number; - type: string; - path: string; - created_at: string; - updated_at: string; -} - -export interface Session { - id: number; - ip: string; - useragent: string; - created_at: string; - updated_at: string; - ended_at: string; - requests?: SessionRequest[]; -} - -export interface SessionCollection { - sessions: Session[]; - total: number; -} - -export interface SessionRequestCollection { - session: Session; -} - -export interface Event { - id: string; - title: string; - hero: Media; - content: string; - start_at: string; - end_at: string; - publish_at: string; - location: string; - location_url: string; - address: string; - status: string; - registration_type: string; - registration_data: string; - price: string; - ages: string; - attachments: Array; - created_at: string; - updated_at: string; -} - -export interface EventResponse { - event: Event; -} - -export interface EventCollection { - events: Event[]; - total: number; -} - -export interface Media { - id: string; - user_id: string; - title: string; - name: string; - mime_type: string; - security_type: string; - size: number; - storage: string; - url: string; - thumbnail: string; - description: string; - dimensions: string; - variants: { [key: string]: string }; - created_at: string; - updated_at: string; - jobs: Array; -} - -export interface MediaResponse { - medium: Media; -} - -export interface MediaCollection { - media: Array; - total: number; -} - -export interface MediaJob { - id: string; - media_id: string; - user_id: string; - status: string; - status_text: string; - progress: number; - progress_max: number; -} - -export interface MediaJobResponse { - media_job: MediaJob; -} - -export interface Article { - id: string; - title: string; - slug: string; - user_id: string; - user: User; - content: string; - publish_at: string; - hero: Media; - gallery: Array; - attachments: Array; -} - -export interface Article { - id: string; - title: string; - slug: string; - user: User; - content: string; - publish_at: string; - hero: Media; - attachments: Array; - created_at: string; - updated_at: string; -} - -export interface ArticleResponse { - article: Article; -} - -export interface ArticleCollection { - articles: Array
; - total: number; -} - -export interface User { - id: string; - username: string; - email: string; - first_name: string; - last_name: string; - phone: string; - display_name: string; -} - -export interface UserResponse { - user: User; -} - -export interface UserCollection { - users: Array; - total: number; -} - -export interface LoginResponse { - user: User; - token: string; -} - -export interface LogsDiscordResponse { - log: { - output: string; - error: string; - }; -} - -export interface Shortlink { - id: number; - code: string; - url: string; - used: number; -} - -export interface ShortlinkCollection { - shortlinks: Array; - total: number; -} - -export interface ShortlinkResponse { - shortlink: Shortlink; -} - -export interface ApiInfo { - version: string; - max_upload_size: number; -} diff --git a/resources/js/helpers/array.ts b/resources/js/helpers/array.ts deleted file mode 100644 index 10d1667..0000000 --- a/resources/js/helpers/array.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Test if array has a match using basic search (* means anything) - * - * @param {Array} arr The array to search. - * @param {string} str The string to find. - * @returns {boolean} if the array has the string. - */ -export const arrayHasBasicMatch = ( - arr: Array, - str: string -): boolean => { - let matches = false; - - arr.every((elem) => { - elem = elem.replace(/[|\\{}()[\]^$+?.]/g, "\\$&"); - const regex = new RegExp("^" + elem.replace("*", ".*?") + "$", "i"); - if (str.match(regex)) { - matches = true; - } - return !matches; - }); - - return matches; -}; diff --git a/resources/js/helpers/datetime.ts b/resources/js/helpers/datetime.ts deleted file mode 100644 index 7b6e9f7..0000000 --- a/resources/js/helpers/datetime.ts +++ /dev/null @@ -1,462 +0,0 @@ -export class SMDate { - date: Date | null = null; - dayString: string[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - - fullDayString: string[] = [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - ]; - - monthString: string[] = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", - ]; - - fullMonthString: string[] = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December", - ]; - - constructor( - dateOrString: string | Date = "", - options: { format?: string; utc?: boolean } = {}, - ) { - this.date = null; - - if (typeof dateOrString === "string") { - if (dateOrString.length > 0) { - this.parse(dateOrString, options); - } - } else if ( - dateOrString instanceof Date && - !Number.isNaN(dateOrString.getTime()) - ) { - this.date = dateOrString; - } - } - - /** - * Parse a string date into a Date object - * @param {string} dateString The date string. - * @param {object} options (optional) Options object. - * @param {string} options.format (optional) The format of the date string. - * @param {boolean} options.utc (optional) The date string is UTC. - * @returns {SMDate} SMDate object. - */ - public parse( - dateString: string, - { format = "dmy", utc = false } = {}, - ): SMDate { - const now = new Date(); - let time = ""; - - if (dateString.toLowerCase() === "now") { - this.date = now; - return this; - } - - // Cache regular expressions - const isoDateRegex = - /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,10})?Z$/i; - const timeRegex = - /^(\d+)(?::(\d+))?(?::(\d+))? ?(am?|a\.m\.|pm?|p\.m\.)?$/i; - - // Test if the dateString is in ISO 8601 - if (isoDateRegex.test(dateString)) { - format = "YMd"; - [dateString, time] = dateString.split("T"); - time = time.slice(0, -8); - } - - // Split the date string into an array of components based on the length of each date component - const components = dateString.split(/[ /-]/); - - const [day, month, year] = - format === "dmy" - ? components - : format === "mdy" - ? [components[1], components[0], components[2]] - : [components[2], components[1], components[0]]; - - if (year === undefined || year.length === 3 || year.length >= 5) { - return this; - } - - // numeric - for (const component of [day, month, year]) { - if (isNaN(parseInt(component))) { - return this; - } - } - - const parsedDay = parseInt(day.padStart(2, "0"), 10); - const parsedMonth = this.getMonthAsNumber(month); - const parsedYear = parseInt(year.padStart(4, "20"), 10); - let parsedHours: number = 0, - parsedMinutes: number = 0, - parsedSeconds: number = 0; - - if (time.length == 0 && components.length > 3) { - time = components.slice(3).join(" "); - } - const parsedTime = timeRegex.exec(time); - if (time && parsedTime) { - const [_, hourStr, minuteStr, secondStr, ampm] = parsedTime; - parsedHours = parseInt(hourStr); - parsedMinutes = parseInt(minuteStr || "0"); - parsedSeconds = parseInt(secondStr || "0"); - - if (parsedHours < 0 || parsedHours > 23) { - return this; - } - - if (ampm) { - if (/pm/i.test(ampm) && parsedHours < 12) { - parsedHours += 12; - } else if (/am/i.test(ampm) && parsedHours === 12) { - parsedHours = 0; - } - } - - if ( - parsedMinutes < 0 || - parsedMinutes > 59 || - parsedSeconds < 0 || - parsedSeconds > 59 - ) { - return this; - } - - time = `${parsedHours.toString().padStart(2, "0")}:${parsedMinutes - .toString() - .padStart(2, "0")}:${parsedSeconds - .toString() - .padStart(2, "0")}`; - } else { - time = "00:00:00"; - } - - const date = utc - ? new Date( - Date.UTC( - parsedYear, - parsedMonth - 1, - parsedDay, - parsedHours, - parsedMinutes, - parsedSeconds, - ), - ) - : new Date( - parsedYear, - parsedMonth - 1, - parsedDay, - parsedHours, - parsedMinutes, - parsedSeconds, - ); - - if (isNaN(date.getTime())) { - return this; - } - - if (utc) { - const isoDate = date.toISOString(); - const checkYear = parseInt(isoDate.substring(0, 4), 10); - const checkMonth = parseInt(isoDate.substring(5, 7), 10); - const checkDay = new Date(isoDate).getUTCDate(); - const checkHours = parseInt(isoDate.substring(11, 13), 10); - const checkMinutes = parseInt(isoDate.substring(14, 16), 10); - const checkSeconds = parseInt(isoDate.substring(17, 19), 10); - if ( - checkYear !== parsedYear || - checkMonth !== parsedMonth || - checkDay !== parsedDay || - checkHours !== parsedHours || - checkMinutes !== parsedMinutes || - checkSeconds !== parsedSeconds - ) { - return this; - } - } else { - if ( - date.getFullYear() !== parsedYear || - date.getMonth() + 1 !== parsedMonth || - date.getDate() !== parsedDay || - date.getHours() !== parsedHours || - date.getMinutes() !== parsedMinutes || - date.getSeconds() !== parsedSeconds - ) { - return this; - } - } - - this.date = date; - return this; - } - - /** - * Format the date to a string. - * @param {string} format The format to return. - * @param {object} options (optional) Function options. - * @param {boolean} options.utc (optional) Format the date to be as UTC instead of local. - * @returns {string} The formatted date. - */ - public format(format: string, options: { utc?: boolean } = {}): string { - if (this.date == null) { - return ""; - } - - let result = format; - - let year: string, - month: string, - date: string, - day: number, - hour: string, - min: string, - sec: string; - if (options.utc) { - const isoDate = this.date.toISOString(); - year = isoDate.substring(0, 4); - month = isoDate.substring(5, 7); - date = isoDate.substring(8, 10); - day = new Date(isoDate).getUTCDay(); - hour = isoDate.substring(11, 13); - min = isoDate.substring(14, 16); - sec = isoDate.substring(17, 19); - } else { - year = this.date.getFullYear().toString(); - month = (this.date.getMonth() + 1).toString(); - date = this.date.getDate().toString(); - day = this.date.getDay(); - hour = this.date.getHours().toString(); - min = this.date.getMinutes().toString(); - sec = this.date.getSeconds().toString(); - } - - const apm = parseInt(hour, 10) >= 12 ? "pm" : "am"; - /* eslint-disable indent */ - const apmhours = ( - parseInt(hour, 10) > 12 - ? parseInt(hour, 10) - 12 - : parseInt(hour, 10) == 0 - ? 12 - : parseInt(hour, 10) - ).toString(); - /* eslint-enable indent */ - - // year - result = result.replace(/\byy\b/g, year.slice(-2)); - result = result.replace(/\byyyy\b/g, year); - - // month - result = result.replace(/\bM\b/g, month); - result = result.replace(/\bMM\b/g, (0 + month).slice(-2)); - result = result.replace( - /\bMMM\b/g, - this.monthString[parseInt(month) - 1], - ); - result = result.replace( - /\bMMMM\b/g, - this.fullMonthString[parseInt(month) - 1], - ); - - // day - result = result.replace(/\bd\b/g, date); - result = result.replace(/\bdd\b/g, (0 + date).slice(-2)); - result = result.replace(/\bEEE\b/g, this.dayString[day]); - result = result.replace(/\bEEEE\b/g, this.fullDayString[day]); - - // hour - result = result.replace(/\bH\b/g, hour); - result = result.replace(/\bHH\b/g, (0 + hour).slice(-2)); - result = result.replace(/\bh\b/g, apmhours); - result = result.replace(/\bhh\b/g, (0 + apmhours).slice(-2)); - - // min - result = result.replace(/\bm\b/g, min); - result = result.replace(/\bmm\b/g, (0 + min).slice(-2)); - - // sec - result = result.replace(/\bs\b/g, sec); - result = result.replace(/\bss\b/g, (0 + sec).slice(-2)); - - // am/pm - result = result.replace(/\baa\b/g, apm); - result = result.replace(/\bAA\b/g, apm.toUpperCase()); - - return result; - } - - /** - * Return a relative date string from now. - * @returns {string} A relative date string. - */ - public relative(): string { - if (this.date === null) { - return ""; - } - - const now = new Date(); - let dif = Math.round((now.getTime() - this.date.getTime()) / 1000); - const format = dif < 0 ? "in %" : "% ago"; - dif = Math.abs(dif); - - if (dif < 60) { - return "Just now"; - } else if (dif < 3600) { - const v = Math.round(dif / 60); - return format.replace("%", `${v} min${v != 1 ? "s" : ""}`); - } else if (dif < 86400) { - const v = Math.round(dif / 3600); - return format.replace("%", `${v} hour${v != 1 ? "s" : ""}`); - } else if (dif < 604800) { - const v = Math.round(dif / 86400); - return format.replace("%", `${v} day${v != 1 ? "s" : ""}`); - } else if (dif < 2419200) { - const v = Math.round(dif / 604800); - return format.replace("%", `${v} week${v != 1 ? "s" : ""}`); - } else { - return ( - this.monthString[this.date.getMonth()] + - " " + - this.date.getDate() + - ", " + - this.date.getFullYear() - ); - } - } - - /** - * If the date is before the passed date. - * @param {Date|SMDate} d (optional) The date to check. If none, use now - * @returns {boolean} If the date is before the passed date. - */ - public isBefore(d: Date | SMDate = new SMDate("now")): boolean { - const otherDate = d instanceof SMDate ? d.date : d; - if (otherDate == null) { - return false; - } - - if (this.date == null) { - return true; - } - - return otherDate > this.date; - } - - /** - * If the date is after the passed date. - * @param {Date|SMDate} d (optional) The date to check. If none, use now - * @returns {boolean} If the date is after the passed date. - */ - public isAfter(d: Date | SMDate = new SMDate("now")): boolean { - const otherDate = d instanceof SMDate ? d.date : d; - if (otherDate == null) { - return false; - } - - if (this.date == null) { - return true; - } - - return otherDate < this.date; - } - - /** - * Return a month number from a string or a month number or month name - * @param {string} monthString The month string as number or name - * @returns {number} The month number - */ - private getMonthAsNumber(monthString: string): number { - const months = this.fullMonthString.map((month) => month.toLowerCase()); - - const shortMonths = months.map((month) => month.slice(0, 3)); - const monthIndex = months.indexOf(monthString.toLowerCase()); - if (monthIndex !== -1) { - return monthIndex + 1; - } - const shortMonthIndex = shortMonths.indexOf(monthString.toLowerCase()); - if (shortMonthIndex !== -1) { - return shortMonthIndex + 1; - } - const monthNumber = parseInt(monthString, 10); - if (!isNaN(monthNumber) && monthNumber >= 1 && monthNumber <= 12) { - return monthNumber; - } - - return 0; - } - - /** - * Test if the current date is valid. - * @returns {boolean} If the current date is valid. - */ - public isValid(): boolean { - return this.date !== null; - } - - /** - * Return a string with only the first occurrence of characters - * @param {string} str The string to modify. - * @param {string} characters The characters to use to test. - * @returns {string} A string that only contains the first occurrence of the characters. - */ - private onlyFirstOccurrence( - str: string, - characters: string = "dMy", - ): string { - let findCharacters = characters.split(""); - const replaceRegex = new RegExp("[^" + characters + "]", "g"); - let result = ""; - - str = str.replace(replaceRegex, ""); - if (str.length > 0) { - str.split("").forEach((strChar) => { - if ( - findCharacters.length > 0 && - findCharacters.includes(strChar) - ) { - result += strChar; - - const index = findCharacters.findIndex( - (findChar) => findChar === strChar, - ); - if (index !== -1) { - findCharacters = findCharacters - .slice(0, index) - .concat(findCharacters.slice(index + 1)); - } - } - }); - } - - return result; - } -} diff --git a/resources/js/helpers/debounce.ts b/resources/js/helpers/debounce.ts deleted file mode 100644 index 3200e6e..0000000 --- a/resources/js/helpers/debounce.ts +++ /dev/null @@ -1,27 +0,0 @@ -type DebounceCallback = (...args: unknown[]) => void; -type DebounceResult = (...args: unknown[]) => void; - -/** - * Call a function after a delay once. - * - * @param {Function} fn The function to call. - * @param {number} delay The delay before calling function. - * @returns {void} - */ -export const debounce = ( - fn: DebounceCallback, - delay: number -): DebounceResult => { - let timeoutID: NodeJS.Timeout | null = null; - return (...args) => { - if (timeoutID != null) { - clearTimeout(timeoutID); - } - - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - timeoutID = setTimeout(function () { - fn.apply(that, args); - }, delay); - }; -}; diff --git a/resources/js/helpers/form.ts b/resources/js/helpers/form.ts deleted file mode 100644 index 3f132cb..0000000 --- a/resources/js/helpers/form.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { ApiResponse } from "./api"; -import { - createValidationResult, - defaultValidationResult, - ValidationObject, - ValidationResult, -} from "./validate"; - -type FormObjectValidateFunction = (item?: string | null) => Promise; -type FormObjectLoadingFunction = (state?: boolean) => boolean; -type FormObjectMessageFunction = ( - message?: string, - type?: string, - icon?: string, -) => void; -type FormObjectErrorFunction = (message: string) => void; -type FormObjectApiErrorsFunction = ( - apiErrors: ApiResponse, - callback?: (error: string, status: number) => void, -) => void; - -export interface FormObject { - validate: FormObjectValidateFunction; - loading: FormObjectLoadingFunction; - message: FormObjectMessageFunction; - error: FormObjectErrorFunction; - apiErrors: FormObjectApiErrorsFunction; - _loading: boolean; - _message: string; - _messageType: string; - _messageIcon: string; - controls: { [key: string]: FormControlObject }; -} - -const defaultFormObject: FormObject = { - validate: async function (item = null) { - const keys = item ? [item] : Object.keys(this.controls); - let valid = true; - - await Promise.all( - keys.map(async (key) => { - if ( - typeof this.controls[key] == "object" && - Object.keys(this.controls[key]).includes("validation") - ) { - const validationResult = await this.controls[ - key - ].validation.validator.validate(this.controls[key].value); - this.controls[key].validation.result = validationResult; - - if (!validationResult.valid) { - valid = false; - } - } - }), - ); - - return valid; - }, - loading: function (state = undefined) { - if (state !== undefined) { - this._loading = state; - } - - return this._loading; - }, - message: function (message = "", type = "", icon = "") { - this._message = message; - - if (type.length > 0) { - this._messageType = type; - } - if (icon.length > 0) { - this._messageIcon = icon; - } - }, - error: function (message = "") { - if (message == "") { - this.message(""); - } else { - this.message(message, "error", "alert-circle-outline"); - } - }, - apiErrors: function ( - apiResponse: ApiResponse, - callback?: (error: string, status: number) => void, - ) { - let foundKeys = false; - - if ( - apiResponse.data && - typeof apiResponse.data === "object" && - "errors" in apiResponse.data - ) { - const errors = apiResponse.data.errors as Record; - Object.keys(errors).forEach((key) => { - if ( - typeof this.controls[key] === "object" && - Object.keys(this.controls[key]).includes("validation") - ) { - foundKeys = true; - this.controls[key].validation.result = - createValidationResult(false, errors[key]); - } - }); - } - - if (foundKeys == false) { - const errorMessage = - (apiResponse?.json?.message as string) || - "An unknown server error occurred.\nPlease try again later."; - - if (callback) { - callback(errorMessage, apiResponse.status); - } else { - this.error(errorMessage); - } - } - }, - controls: {}, - - _loading: false, - _message: "", - _messageType: "primary", - _messageIcon: "", -}; - -/** - * Create a new Form object. - * @param {Record} controls The controls included in the form. - * @returns {FormObject} Returns a form object. - */ -export const Form = ( - controls: Record, -): FormObject => { - const form = { ...defaultFormObject }; - form.controls = controls; - - form._loading = false; - form._message = ""; - form._messageType = "primary"; - form._messageIcon = ""; - - return form; -}; - -interface FormControlValidation { - validator: ValidationObject; - result: ValidationResult; -} - -const getDefaultFormControlValidation = (): FormControlValidation => { - return { - validator: { - validate: async (): Promise => { - return defaultValidationResult; - }, - }, - result: defaultValidationResult, - }; -}; - -type FormControlClearValidations = () => void; -type FormControlSetValidation = ( - valid: boolean, - message?: string | Array, -) => void; -type FormControlIsValid = () => boolean; - -export interface FormControlObject { - value: unknown; - validate: () => Promise; - validation: FormControlValidation; - clearValidations: FormControlClearValidations; - setValidationResult: FormControlSetValidation; - isValid: FormControlIsValid; -} - -/** - * Create a new form control object. - * @param {string} value The control name. - * @param {ValidationObject | null} validator The control validation rules. - * @returns {FormControlObject} The form control object. - */ -export const FormControl = ( - value: unknown = "", - validator: ValidationObject | null = null, -): FormControlObject => { - return { - value: value, - validation: - validator == null - ? getDefaultFormControlValidation() - : { - validator: validator, - result: defaultValidationResult, - }, - clearValidations: function () { - this.validation.result = defaultValidationResult; - }, - setValidationResult: function ( - valid: boolean, - message?: string | Array, - ) { - this.validation.result = createValidationResult(valid, message); - }, - validate: async function () { - if (this.validation.validator) { - this.validation.result = - await this.validation.validator.validate(this.value); - - return this.validation.result; - } - - return defaultValidationResult; - }, - isValid: function () { - return this.validation.result.valid; - }, - }; -}; diff --git a/resources/js/helpers/image.ts b/resources/js/helpers/image.ts deleted file mode 100644 index 48cee62..0000000 --- a/resources/js/helpers/image.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { ImportMetaExtras } from "../../../import-meta"; -import { urlStripAttributes } from "./url"; - -type ImageLoadCallback = (url: string) => void; - -export const imageLoad = ( - url: string, - callback: ImageLoadCallback, - postfix = "size=thumb" -) => { - if ( - url.startsWith((import.meta as ImportMetaExtras).env.APP_URL) === true - ) { - callback(urlStripAttributes(url) + "?" + postfix); - const tmp = new Image(); - tmp.onload = function () { - callback(url); - }; - tmp.src = url; - } else { - // Image is not one we control - callback(url); - } -}; - -export const imageSize = (size: string, url: string) => { - const availableSizes = [ - "thumb", - "small", - "medium", - "large", - "xlarge", - "xxlarge", - ]; - if (availableSizes.includes(size)) { - if ( - url.startsWith((import.meta as ImportMetaExtras).env.APP_URL) === - true || - url.startsWith("/") === true - ) { - return `${url}?size=${size}`; - } - } - - return url; -}; - -// Thumb 150 x 150 -export const imageThumb = (url: string) => { - return imageSize("thumb", url); -}; - -// Small 300 x 300 -export const imageSmall = (url: string) => { - return imageSize("small", url); -}; - -// Small 640 x 640 -export const imageMedium = (url: string) => { - return imageSize("medium", url); -}; - -// Large 1024 x 1024 -export const imageLarge = (url: string) => { - return imageSize("large", url); -}; - -// Large 1536 x 1536 -export const imageXLarge = (url: string) => { - return imageSize("xlarge", url); -}; - -// Large 2560 x 2560 -export const imageXXLarge = (url: string) => { - return imageSize("xxlarge", url); -}; - -// Full size -export const imageFull = (url: string) => { - return imageSize("full", url); -}; diff --git a/resources/js/helpers/media.ts b/resources/js/helpers/media.ts deleted file mode 100644 index bcca2c9..0000000 --- a/resources/js/helpers/media.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { ImportMetaExtras } from "../../../import-meta"; -import { Media, MediaJob } from "./api.types"; -import { strCaseCmp, toTitleCase } from "./string"; - -export const mediaGetVariantUrl = ( - media: Media, - variant = "scaled", -): string => { - if (!media) { - return ""; - } - - // If the variant is 'original', return the media url - if (variant === "original") { - return media.url; - } - - // If the variant key exists in media.variants, return the corresponding variant URL - if (media.variants && media.variants[variant]) { - return media.url.replace(media.name, media.variants[variant]); - } - - // If the variant key does not exist, return the 'scaled' variant - return media.variants && media.variants["scaled"] - ? media.url.replace(media.name, media.variants["scaled"]) - : media.url; -}; - -/** - * Convert a Media URL to a user friendly URL - * @param {Media|string} mediaOrString Media object or URL string - * @returns {string} User friendly URL - */ -export const mediaGetWebURL = (mediaOrString: Media | string): string => { - const webUrl = (import.meta as ImportMetaExtras).env.APP_URL; - const apiUrl = (import.meta as ImportMetaExtras).env.APP_URL_API; - - let url = - typeof mediaOrString === "string" - ? mediaOrString - : (mediaOrString as Media).url; - - // If the input is a string, use it as the URL directly - if (typeof mediaOrString === "string") { - return url; - } - - // Is the URL an API request? - if (url.startsWith(apiUrl)) { - const fileUrlPath = url.substring(apiUrl.length); - const fileUrlParts = fileUrlPath.split("/"); - - if ( - fileUrlParts.length >= 4 && - fileUrlParts[0].length === 0 && - strCaseCmp("media", fileUrlParts[1]) === true && - strCaseCmp("download", fileUrlParts[3]) === true - ) { - url = webUrl + "/file/" + fileUrlParts[2]; - } - } - - return url; -}; - -/** - * Check if a mime matches. - * @param {string} mimeExpected The mime expected. - * @param {string} mimeToCheck The mime to check. - * @returns {boolean} The mimeToCheck matches mimeExpected. - */ -export const mimeMatches = ( - mimeExpected: string, - mimeToCheck: string, -): boolean => { - if (mimeExpected.length == 0) { - mimeExpected = "*"; - } - - const escapedExpectation = mimeExpected.replace( - /[.*+?^${}()|[\]\\]/g, - "\\$&", - ); - const pattern = escapedExpectation.replace(/\\\*/g, ".*"); - const regex = new RegExp(`^${pattern}$`); - - return regex.test(mimeToCheck); -}; - -/** - * MediaGetThumbnailCallback Type - */ -export type mediaGetThumbnailCallback = (url: string) => void; - -/** - * Get Media/File Thumbnail. - * @param {Media|File} media The Media/File object. - * @param {string|null} useVariant The variable to use. - * @param {mediaGetThumbnailCallback|null} callback Callback with the thumbnail. Required when passing File. - * @returns {string} The thumbnail url. - */ -export const mediaGetThumbnail = ( - media: Media | File, - useVariant: string | null = "", - callback: mediaGetThumbnailCallback | null = null, -): string => { - let url: string = ""; - - if (media) { - if (media instanceof File) { - if (callback != null) { - if (mimeMatches("image/*", media.type) == true) { - const reader = new FileReader(); - - reader.onload = function (e) { - callback(e.target.result.toString()); - }; - - reader.readAsDataURL(media); - return ""; - } - } - } else { - if ( - useVariant && - useVariant != "" && - useVariant != null && - media.variants && - media.variants[useVariant] - ) { - url = media.url.replace(media.name, media.variants[useVariant]); - } else if (media.thumbnail && media.thumbnail.length > 0) { - url = media.thumbnail; - } else if (media.variants && media.variants["thumb"]) { - url = media.url.replace(media.name, media.variants["thumb"]); - } - } - - if (url === "") { - url = "/assets/fileicons/unknown.webp"; - } - } - - if (callback != null) { - callback(url); - return ""; - } - - return url; -}; - -/** - * Check if the media is currently busy. - * @param {Media} media The media item to check. - * @returns {boolean} If the media is busy. - */ -export const mediaIsBusy = (media: Media): boolean => { - let busy = false; - - if (media.jobs) { - media.jobs.forEach((item) => { - if ( - item.status != "invalid" && - item.status != "complete" && - item.status != "failed" - ) { - busy = true; - } - }); - } - - return busy; -}; - -interface MediaStatus { - busy: boolean; - status: string; - status_text: string; - progress: number; -} - -/** - * Get the current Media status - * @param {Media} media The media item to check. - * @returns {MediaStatus} The media status. - */ -export const getMediaStatus = (media: Media): MediaStatus => { - const status = { - busy: false, - status: "", - status_text: "", - progress: 0, - }; - - if (media.jobs) { - for (const item of media.jobs) { - if ( - item.status != "invalid" && - item.status != "complete" && - item.status != "failed" - ) { - status.busy = true; - status.status = item.status; - status.status_text = item.status_text; - status.progress = item.progress; - break; - } - } - } - - return status; -}; - -/** - * Get the current Media status Text - * @param {Media} media The media item to check. - * @returns {string} Human readable string. - */ -export const getMediaStatusText = (media: Media): string => { - let status = ""; - - if (media.jobs.length > 0) { - if ( - media.jobs[0].status != "invalid" && - media.jobs[0].status != "failed" && - media.jobs[0].status != "complete" - ) { - if (media.jobs[0].status_text != "") { - status = toTitleCase(media.jobs[0].status_text); - } else { - status = toTitleCase(media.jobs[0].status); - } - - if (media.jobs[0].progress_max != 0) { - status += ` ${Math.floor( - (media.jobs[0].progress / media.jobs[0].progress_max) * 100, - )}%`; - } - } - } - - return status; -}; - -export interface MediaParams { - id?: string; - user_id?: string; - title?: string; - name?: string; - mime_type?: string; - permission?: string; - size?: number; - storage?: string; - url?: string; - thumbnail?: string; - description?: string; - dimensions?: string; - variants?: { [key: string]: string }; - created_at?: string; - updated_at?: string; - jobs?: Array; -} - -export interface MediaJobParams { - id?: string; - media_id?: string; - user_id?: string; - status?: string; - status_text?: string; - progress?: number; - progress_max?: number; -} - -export const createMediaItem = (params?: MediaParams): Media => { - const media = { - id: params.id || "", - user_id: params.user_id || "", - title: params.title || "", - name: params.name || "", - mime_type: params.mime_type || "", - permission: params.permission || "", - size: params.size !== undefined ? params.size : 0, - storage: params.storage || "", - url: params.url || "", - thumbnail: params.thumbnail || "", - description: params.description || "", - dimensions: params.dimensions || "", - variants: params.variants || {}, - created_at: params.created_at || "", - updated_at: params.updated_at || "", - jobs: params.jobs || [], - }; - - return media; -}; - -export const createMediaJobItem = (params?: MediaJobParams): MediaJob => { - const job = { - id: params.id || "", - media_id: params.media_id || "", - user_id: params.user_id || "", - status: params.status || "", - status_text: params.status_text || "", - progress: params.progress || 0, - progress_max: params.progress_max || 0, - }; - - return job; -}; diff --git a/resources/js/helpers/object.ts b/resources/js/helpers/object.ts deleted file mode 100644 index efa73a2..0000000 --- a/resources/js/helpers/object.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Sort a objects properties alphabetically - * - * @param {Record} obj The object to sort - * @returns {Record} The object sorted - */ -export const sortProperties = ( - obj: Record -): Record => { - // convert object into array - const sortable: [string, unknown][] = []; - for (const key in obj) - if (Object.prototype.hasOwnProperty.call(obj, key)) - sortable.push([key, obj[key]]); // each item is an array in format [key, value] - - // sort items by value - sortable.sort(function (a, b) { - const x = String(a[1]).toLowerCase(), - y = String(b[1]).toLowerCase(); - return x < y ? -1 : x > y ? 1 : 0; - }); - - const sortedObj: Record = {}; - sortable.forEach((item) => { - sortedObj[item[0]] = item[1]; - }); - - return sortedObj; // array in format [ [ key1, val1 ], [ key2, val2 ], ... ] -}; diff --git a/resources/js/helpers/seo.ts b/resources/js/helpers/seo.ts deleted file mode 100644 index 38df10d..0000000 --- a/resources/js/helpers/seo.ts +++ /dev/null @@ -1,53 +0,0 @@ -export interface SEOTags { - title: string; - description: string; - keywords: string[]; - robots: { - index: boolean; - follow: boolean; - }; - url: string; - image: string; -} - -export const updateSEOTags = (tags: SEOTags): void => { - const updateTag = ( - tag: string, - queryAttribName: string, - queryAttribValue: string, - updateAttribName: string, - updateAttribValue: string - ) => { - const existingTag = document.querySelector( - `${tag}[${queryAttribName}="${queryAttribValue}"]` - ); - if (existingTag) { - existingTag.setAttribute(updateAttribName, updateAttribValue); - } else { - const metaTag = document.createElement(tag); - metaTag.setAttribute(queryAttribName, queryAttribValue); - metaTag.setAttribute(updateAttribName, updateAttribValue); - document.head.appendChild(metaTag); - } - }; - - const robotsIndexValue = tags.robots.index ? "index" : "noindex"; - const robotsFollowValue = tags.robots.follow ? "follow" : "nofollow"; - const robotsValue = `${robotsIndexValue}, ${robotsFollowValue}`; - - document.title = `STEMMechanics | ${tags.title}`; - updateTag("meta", "name", "description", "content", tags.description); - updateTag("meta", "name", "keywords", "content", tags.keywords.join(", ")); - updateTag("meta", "name", "robots", "content", robotsValue); - updateTag("link", "rel", "canonical", "href", tags.url); - updateTag("meta", "property", "og:title", "content", tags.title); - updateTag( - "meta", - "property", - "og:description", - "content", - tags.description - ); - updateTag("meta", "property", "og:image", "content", tags.image); - updateTag("meta", "property", "og:url", "content", tags.url); -}; diff --git a/resources/js/helpers/square.ts b/resources/js/helpers/square.ts deleted file mode 100644 index 2897706..0000000 --- a/resources/js/helpers/square.ts +++ /dev/null @@ -1,36 +0,0 @@ -const appId = "sandbox-sq0idb-FYI93DDPJk0wJvaU0ye4MQ"; -const locationId = "LQ0C6GMZEWVQ0"; -const square = null; - -export const initCard = (): Object => { - const scriptSrc = "https://sandbox.web.squarecdn.com/v1/square.js"; - if (!document.querySelector(`script[src="${scriptSrc}"]`)) { - const script = document.createElement("script"); - script.type = "text/javascript"; - script.src = scriptSrc; - script.onload = async () => { - if (!window.Square) { - console.log("Square failed to load properly"); - } - - let payments; - try { - payments = window.Square.payments(appId, locationId); - } catch (e) { - console.log("Square: Missing credentials", e); - return; - } - - let card; - try { - card = await payments.card(); - await card.attach("#card-container"); - } catch (e) { - console.error("Initializing Card failed", e); - return; - } - }; - - document.head.appendChild(script); - } -}; diff --git a/resources/js/helpers/string.ts b/resources/js/helpers/string.ts deleted file mode 100644 index 282c9c4..0000000 --- a/resources/js/helpers/string.ts +++ /dev/null @@ -1,129 +0,0 @@ -/** - * Transforms a string to title case. - * @param {string} str The string to transform. - * @returns {string} A string transformed to title case. - */ -export const toTitleCase = (str: string): string => { - // Replace underscores and hyphens with spaces - str = str.replace(/[_-]+/g, " "); - - // Capitalize the first letter of each word and make the rest lowercase - str = str.replace(/\b\w+\b/g, (txt) => { - return txt.charAt(0).toUpperCase() + txt.slice(1).toLowerCase(); - }); - - // Replace "cdn" with "CDN" - str = str.replace(/\bCdn\b/gi, "CDN"); - - return str; -}; - -/** - * Convert a string to a excerpt. - * @param {string} txt The text to convert. - * @param {number} maxLen (optional) The maximum length of the excerpt. - * @param {boolean} strip (optional) Strip HTML tags from the text. - * @param stripHtml - * @returns {string} The excerpt. - */ -export function excerpt( - txt: string, - maxLen: number = 150, - stripHtml: boolean = true, -): string { - if (stripHtml) { - txt = txt.replace(/<[^>]+>/g, "").replace(/ /g, " "); - } - - const words = txt.trim().split(/\s+/); - let curLen = 0; - const excerptWords: string[] = []; - - for (const word of words) { - if (curLen + word.length + 1 > maxLen) { - break; - } - curLen += word.length + 1; - excerptWords.push(word); - } - - let excerpt = excerptWords.join(" "); - if (curLen < txt.length) { - excerpt += "..."; - } - - return excerpt; -} - -/** - * String HTML tags from text. - * @param {string} txt The text to strip tags. - * @returns {string} The stripped text. - */ -export const stripHtmlTags = (txt: string): string => { - return txt.replace(/<(p|br)([ /]*?>|[ /]+.*?>)|<[a-zA-Z/][^>]+(>|$)/g, " "); -}; - -/** - * Replace HTML entities with real characters. - * @param {string} txt The text to transform. - * @returns {string} Transformed text - */ -export const replaceHtmlEntities = (txt: string): string => { - const translate_re = /&(nbsp|amp|quot|lt|gt);/g; - - return txt.replace(translate_re, function (match, entity) { - switch (entity) { - case "nbsp": - return " "; - case "amp": - return "&"; - case "quot": - return '"'; - case "lt": - return "<"; - case "gt": - return ">"; - default: - return match; - } - }); -}; - -/** - * Convert a string to a number, ignoring items like dollar signs, etc. - * @param {string} str The string to convert to a number - * @returns {number} A number with the minimum amount of decimal places (or 0) - */ -export const stringToNumber = (str: string): number => { - str = str.replace(/[^\d.-]/g, ""); - const num = parseFloat(str); - return isNaN(num) ? 0 : Number(num.toFixed(2)); -}; - -/** - * Convert a number or string to a price (0 or 0.00). - * @param {number|string} numOrString The number of string to convert to a price. - * @returns {string} The converted result. - */ -export const toPrice = (numOrString: number | string): string => { - const num = - typeof numOrString === "string" - ? stringToNumber(numOrString) - : numOrString; - return num.toFixed(num % 1 === 0 ? 0 : 2); -}; - -/** - * Compare 2 strings case insensitive - * @param {string} string1 The first string for comparison. - * @param {string} string2 The second string for comparison. - * @returns {boolean} If the strings match. - */ -export const strCaseCmp = (string1: string, string2: string): boolean => { - if (string1 !== undefined && string2 !== undefined) { - return string1.toLowerCase() === string2.toLowerCase(); - } - - return false; -}; diff --git a/resources/js/helpers/transition.ts b/resources/js/helpers/transition.ts deleted file mode 100644 index 7230a89..0000000 --- a/resources/js/helpers/transition.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Ref } from "vue"; - -/** - * Return the browser transiton end name. - * - * @returns {string} The browser transition end name. - */ -const transitionEndEventName = (): string => { - const el = document.createElement("div"), - transitions: Record = { - transition: "transitionend", - OTransition: "otransitionend", - MozTransition: "transitionend", - WebkitTransition: "webkitTransitionEnd", - }; - - for (const i in transitions) { - if ( - Object.prototype.hasOwnProperty.call(transitions, i) && - el.style[i] !== undefined - ) { - return transitions[i]; - } - } - - return ""; -}; - -/** - * Wait for the element to render as Promise - * - * @param elem The - * @returns - */ -const waitForElementRender = (elem: Ref): Promise => { - return new Promise((resolve) => { - if (document.contains(elem.value)) { - return resolve(elem.value as HTMLElement); - } - - /* eslint-disable @typescript-eslint/no-explicit-any */ - const MutationObserver = - window.MutationObserver || - (window as any).WebKitMutationObserver || - (window as any).MozMutationObserver; - /* eslint-enable @typescript-eslint/no-explicit-any */ - const observer = new MutationObserver(() => { - if (document.contains(elem.value)) { - resolve(elem.value); - observer.disconnect(); - } - }); - - observer.observe(document.body, { - childList: true, - subtree: true, - }); - }); -}; - -/** - * Run the enter transition on a element. - * - * @param {Ref} elem The element to run the enter transition. - * @param {string} transition The transition name. - * @returns {void} - */ -export const transitionEnter = (elem: Ref, transition: string): void => { - waitForElementRender(elem) - .then((e: HTMLElement) => { - window.setTimeout(() => { - e.classList.replace( - transition + "-enter-from", - transition + "-enter-active" - ); - const transitionName = transitionEndEventName(); - e.addEventListener( - transitionName, - () => { - e.classList.replace( - transition + "-enter-active", - transition + "-enter-to" - ); - }, - false - ); - }, 1); - }) - .catch(() => { - /* empty */ - }); -}; - -/** - * Run the exit transition on a element then call a callback. - * - * @param {Ref} elem The element to run the enter transition. - * @param {string} transition The transition name. - * @param {TransitionLeaveCallback|null} callback The callback to run after the transition finishes. - * @returns {void} - */ -type TransitionLeaveCallback = () => void; - -export const transitionLeave = ( - elem: Ref, - transition: string, - callback: TransitionLeaveCallback | null = null -): void => { - elem.value.classList.remove(transition + "-enter-to"); - elem.value.classList.add(transition + "-leave-from"); - window.setTimeout(() => { - elem.value.classList.replace( - transition + "-leave-from", - transition + "-leave-active" - ); - const transitionName = transitionEndEventName(); - elem.value.addEventListener( - transitionName, - () => { - elem.value.classList.replace( - transition + "-leave-active", - transition + "-leave-to" - ); - if (callback) { - callback(); - } - }, - false - ); - }, 1); -}; diff --git a/resources/js/helpers/types.ts b/resources/js/helpers/types.ts deleted file mode 100644 index 940aa0e..0000000 --- a/resources/js/helpers/types.ts +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Test if target is a boolean - * @param {unknown} target The varible to test - * @returns {boolean} If the varible is a boolean type - */ -export function isBool(target: unknown): boolean { - return typeof target === "boolean"; -} - -/** - * Test if target is a number - * @param {unknown} target The varible to test - * @returns {boolean} If the varible is a number type - */ -export function isNumber(target: unknown): boolean { - return typeof target === "number"; -} - -/** - * Test if target is an object - * @param {unknown} target The varible to test - * @returns {boolean} If the varible is a object type - */ -export function isObject(target: unknown): boolean { - return typeof target === "object" && target !== null; -} - -/** - * Test if target is a string - * @param {unknown} target The varible to test - * @returns {boolean} If the varible is a string type - */ -export function isString(target: unknown): boolean { - return typeof target === "string" && target !== null; -} - -/** - * Convert bytes to a human readable string. - * @param {number} bytes The bytes to convert. - * @param {number} decimalPlaces The number of places to force. - * @returns {string} The bytes in human readable string. - */ -export const bytesReadable = ( - bytes: number, - decimalPlaces: number = undefined, -): string => { - if (Number.isNaN(bytes)) { - return "0 Bytes"; - } - - if (Math.abs(bytes) < 1024) { - return bytes + " Bytes"; - } - - const units = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; - let u = -1; - const r = 10 ** 1; - let tempBytes = bytes; - - while ( - Math.round(Math.abs(tempBytes) * r) / r >= 1024 && - u < units.length - 1 - ) { - tempBytes /= 1024; - ++u; - } - - if (decimalPlaces === undefined) { - return tempBytes.toFixed(2).replace(/\.?0+$/, "") + " " + units[u]; - } - - return tempBytes.toFixed(decimalPlaces) + " " + units[u]; -}; diff --git a/resources/js/helpers/url.ts b/resources/js/helpers/url.ts deleted file mode 100644 index 2941407..0000000 --- a/resources/js/helpers/url.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { RouteLocationNormalizedLoaded, Router } from "vue-router"; - -export const urlStripAttributes = (url: string): string => { - const urlObject = new URL(url); - urlObject.search = ""; - urlObject.hash = ""; - return urlObject.toString(); -}; - -export const urlMatches = ( - fullUrl: string, - testPath: string | string[], -): boolean | number => { - // Remove query string and fragment identifier from both URLs - const urlWithoutParams = fullUrl.split(/[?#]/)[0]; - - if (Array.isArray(testPath)) { - // Iterate over the array of test paths and return the index of the first matching path - for (let i = 0; i < testPath.length; i++) { - const pathWithoutParams = testPath[i].split(/[?#]/)[0]; - // Remove trailing slashes from both URLs - const trimmedUrl = urlWithoutParams.replace(/\/$/, ""); - const trimmedPath = pathWithoutParams.replace(/\/$/, ""); - // Check if both URLs contain a domain and port - const hasDomainAndPort = - /^https?:\/\/[^/]+\//.test(trimmedUrl) && - /^https?:\/\/[^/]+\//.test(trimmedPath); - - if (hasDomainAndPort) { - // Do a full test with both URLs - if (trimmedUrl === trimmedPath) { - return i; - } - } else { - // Remove the domain and test the paths - const urlWithoutDomain = trimmedUrl.replace( - /^https?:\/\/[^/]+/, - "", - ); - const pathWithoutDomain = trimmedPath.replace( - /^https?:\/\/[^/]+/, - "", - ); - if (urlWithoutDomain === pathWithoutDomain) { - return i; - } - } - } - // If no matching path is found, return false - return false; - } else { - const pathWithoutParams = testPath.split(/[?#]/)[0]; - // Remove trailing slashes from both URLs - const trimmedUrl = urlWithoutParams.replace(/\/$/, ""); - const trimmedPath = pathWithoutParams.replace(/\/$/, ""); - // Check if both URLs contain a domain and port - const hasDomainAndPort = - /^https?:\/\/[^/]+\//.test(trimmedUrl) && - /^https?:\/\/[^/]+\//.test(trimmedPath); - - if (hasDomainAndPort) { - // Do a full test with both URLs - return trimmedUrl === trimmedPath; - } else { - // Remove the domain and test the paths - const urlWithoutDomain = trimmedUrl.replace( - /^https?:\/\/[^/]+/, - "", - ); - const pathWithoutDomain = trimmedPath.replace( - /^https?:\/\/[^/]+/, - "", - ); - return urlWithoutDomain === pathWithoutDomain; - } - } -}; - -interface Params { - [key: string]: string; -} - -export const updateRouterParams = (router: Router, params: Params): void => { - const query = { ...router.currentRoute.value.query }; - - Object.entries(params).forEach(([key, value]) => { - if (value === "") { - if (key in params) { - delete query[key]; - } - } else { - query[key] = value; - } - }); - - router.push({ query }); -}; - -export const getRouterParam = ( - route: RouteLocationNormalizedLoaded, - param: string, - defaultValue: string = "", -): string => { - if (route.query[param] !== undefined) { - const val = route.query[param]; - - if (Array.isArray(val) == true) { - if (val.length > 0) { - return val[0]; - } - - return defaultValue; - } - - return val.toString(); - } - - return defaultValue; -}; - -export const extractFileNameFromUrl = (url: string): string => { - const matches = url.match(/\/([^/]+\.[^/]+)$/); - if (!matches) { - return ""; - } - const fileName = matches[1]; - return fileName; -}; - -export const addQueryParam = ( - url: string, - name: string, - value: string, -): string => { - const urlObject = new URL(url); - const queryParams = new URLSearchParams(urlObject.search); - - if (queryParams.has(name)) { - queryParams.set(name, value); - } else { - // Add the new query parameter - queryParams.append(name, value); - } - - urlObject.search = queryParams.toString(); - return urlObject.toString(); -}; diff --git a/resources/js/helpers/utils.ts b/resources/js/helpers/utils.ts deleted file mode 100644 index b2e7bd6..0000000 --- a/resources/js/helpers/utils.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { useUserStore } from "../store/UserStore"; -import { extractFileNameFromUrl } from "./url"; - -/** - * Tests if an object or string is empty. - * @param {unknown} value The object or string. - * @returns {boolean} If the object or string is empty. - */ -export const isEmpty = (value: unknown): boolean => { - if (typeof value === "string") { - return value.trim().length === 0; - } else if ( - value instanceof File || - value instanceof Blob || - value instanceof Map || - value instanceof Set - ) { - return value.size === 0; - } else if (value instanceof FormData) { - return [...value.entries()].length === 0; - } else if (typeof value === "object") { - return !value || Object.keys(value).length === 0; - } - - return false; -}; - -/** - * Returns the file extension - * @param {string} fileName The filename with extension. - * @returns {string} The file extension. - */ -export const getFileExtension = (fileName: string): string => { - if (fileName.includes(".")) { - return fileName.split(".").pop(); - } - - return ""; -}; - -/** - * Returns a url to a file type icon based on file name. - * @param {string} fileName The filename with extension. - * @returns {string} The url to the file type icon. - */ -export const getFileIconImagePath = (fileName: string): string => { - const ext = getFileExtension(fileName); - if (ext.length > 0) { - return `/assets/fileicons/${ext}.webp`; - } - - return "/assets/fileicons/unknown.webp"; -}; - -/** - * Returns a url to a file preview icon based on file url. - * @param {string} url The url of the file. - * @returns {string} The url to the file preview icon. - */ -export const getFilePreview = (url: string): string => { - const ext = getFileExtension(extractFileNameFromUrl(url)); - if (ext.length > 0) { - if (/(gif|jpe?g|png)/i.test(ext)) { - return `${url}?size=thumb`; - } - - return `/assets/fileicons/${ext}.webp`; - } - - return "/assets/fileicons/unknown.webp"; -}; - -/** - * Clamps a number between 2 numbers. - * @param {number} n The number to clamp. - * @param {number} min The minimum allowable number. - * @param {number} max The maximum allowable number. - * @returns {number} The clamped number. - */ -export const clamp = (n: number, min: number, max: number): number => { - if (n < min) return min; - if (n > max) return max; - return n; -}; - -type RandomIDVerifyCallback = (id: string) => boolean; - -/** - * Generate a random ID. - * @param {string} prefix Any prefix to add to the ID. - * @param {number} length The length of the ID string (default = 6). - * @param {RandomIDVerifyCallback|null} callback Callback that if returns true generates a ID string. - * @returns {string} A random string. - */ -export const generateRandomId = ( - prefix: string = "", - length: number = 6, - callback: RandomIDVerifyCallback | null = null, -): string => { - let randomId = ""; - const letters = - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; - - do { - randomId = prefix; - for (let i = 0; i < length; i++) { - randomId += letters.charAt( - Math.floor(Math.random() * letters.length), - ); - } - } while (callback != null ? callback(randomId) : false); - - return randomId; -}; - -/** - * Generate a random element ID. - * @param {string} prefix Any prefix to add to the ID. - * @param {number} length The length of the ID string (default = 6). - * @returns {string} A random string non-existent in the document. - */ -export const generateRandomElementId = ( - prefix: string = "", - length: number = 6, -): string => { - return generateRandomId(prefix, length, (s) => { - return document.getElementById(s) != null; - }); -}; - -/** - * Return if the current user has a permission. - * @param {string} permission The permission to check. - * @returns {boolean} If the user has the permission. - */ -export const userHasPermission = (permission: string): boolean => { - const userStore = useUserStore(); - return userStore.permissions && userStore.permissions.includes(permission); -}; - -/** - * Convert File Name to Title - * @param {string} fileName The filename with extension. - * @returns {string} The title. - */ -export const convertFileNameToTitle = (fileName: string): string => { - // Remove file extension - fileName = fileName.replace(/\.[^/.]+$/, ""); - - // Replace underscores with space - fileName = fileName.replace(/_/g, " "); - - // Replace dashes that are not surrounded by spaces with space - fileName = fileName.replace(/(? { - return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test( - uuid - ); -}; - -/** - * Generates a random UUID. - * - * @returns {string} A random UUID. - */ -export const randomUUID = (): string => { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { - const r = (Math.random() * 16) | 0; - const v = c === "x" ? r : (r & 0x3) | 0x8; - return v.toString(16); - }); -}; diff --git a/resources/js/helpers/validate.ts b/resources/js/helpers/validate.ts deleted file mode 100644 index 5904830..0000000 --- a/resources/js/helpers/validate.ts +++ /dev/null @@ -1,978 +0,0 @@ -import { bytesReadable } from "../helpers/types"; -import { SMDate } from "./datetime"; -import { isEmpty } from "../helpers/utils"; - -export interface ValidationObject { - validate: (value: unknown) => Promise; -} - -export interface ValidationResult { - valid: boolean; - invalidMessages: Array; -} - -export const defaultValidationResult: ValidationResult = { - valid: true, - invalidMessages: [], -}; - -export const createValidationResult = ( - valid: boolean, - message: string | Array = "" -) => { - if (typeof message == "string") { - message = [message]; - } - - return { - valid: valid, - invalidMessages: message, - }; -}; - -/** - * Validation Min - */ -const VALIDATION_MIN_TYPE = ["String", "Number"]; -type ValidationMinType = (typeof VALIDATION_MIN_TYPE)[number]; - -interface ValidationMinOptions { - min: number; - type?: ValidationMinType; - invalidMessage?: string | ((options: ValidationMinOptions) => string); -} - -interface ValidationMinObject extends ValidationMinOptions { - validate: (value: string) => Promise; -} - -const defaultValidationMinOptions: ValidationMinOptions = { - min: 1, - type: "String", - invalidMessage: (options: ValidationMinOptions) => { - return options.type == "String" - ? `Required to be at least ${options.min} characters.` - : `Required to be at least ${options.min}.`; - }, -}; - -export function Min( - minOrOptions: number | ValidationMinOptions, - options?: ValidationMinOptions -); -export function Min(options: ValidationMinOptions): ValidationMinObject; - -/** - * Validate field length or number is at minimum or higher/larger - * - * @param minOrOptions minimum number or options data - * @param options options data - * @returns ValidationMinObject - */ -export function Min( - minOrOptions: number | ValidationMinOptions, - options?: ValidationMinOptions -): ValidationMinObject { - if (typeof minOrOptions === "number") { - options = { ...defaultValidationMinOptions, ...(options || {}) }; - options.min = minOrOptions; - } else { - options = { ...defaultValidationMinOptions, ...(minOrOptions || {}) }; - } - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: - this.type == "String" - ? value.toString().length >= this.min - : parseInt(value) >= this.min, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * Validation Max - */ -const VALIDATION_MAX_TYPE = ["String", "Number"]; -type ValidationMaxType = (typeof VALIDATION_MAX_TYPE)[number]; - -interface ValidationMaxOptions { - max: number; - type?: ValidationMaxType; - invalidMessage?: string | ((options: ValidationMaxOptions) => string); -} - -interface ValidationMaxObject extends ValidationMaxOptions { - validate: (value: string) => Promise; -} - -const defaultValidationMaxOptions: ValidationMaxOptions = { - max: 1, - type: "String", - invalidMessage: (options: ValidationMaxOptions) => { - return options.type == "String" - ? `Required to be less than ${options.max + 1} characters.` - : `Required to be less than ${options.max + 1}.`; - }, -}; - -export function Max( - maxOrOptions: number | ValidationMaxOptions, - options?: ValidationMaxOptions -): ValidationMaxObject; -export function Max(options: ValidationMaxOptions): ValidationMaxObject; - -/** - * Validate field length or number is at maximum or smaller - * - * @param maxOrOptions maximum number or options data - * @param options options data - * @returns ValidationMaxObject - */ -export function Max( - maxOrOptions: number | ValidationMaxOptions, - options?: ValidationMaxOptions -): ValidationMaxObject { - if (typeof maxOrOptions === "number") { - options = { ...defaultValidationMaxOptions, ...(options || {}) }; - options.max = maxOrOptions; - } else { - options = { ...defaultValidationMaxOptions, ...(maxOrOptions || {}) }; - } - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: - this.type == "String" - ? value.toString().length <= this.max - : parseInt(value) <= this.max, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * Validation Length - */ -interface ValidationLengthOptions { - length: number; - invalidMessage?: string | ((options: ValidationLengthOptions) => string); -} - -interface ValidationLengthObject extends ValidationLengthOptions { - validate: (value: string) => Promise; -} - -const defaultValidationLengthOptions: ValidationLengthOptions = { - length: 1, - invalidMessage: (options: ValidationLengthOptions) => { - return `Required to be ${options.length} characters.`; - }, -}; - -export function Length( - lengthOrOptions: number | ValidationLengthOptions, - options?: ValidationLengthOptions -): ValidationLengthObject; -export function Length( - options: ValidationLengthOptions -): ValidationLengthObject; - -/** - * Validate field length - * - * @param lengthOrOptions string length or options data - * @param options options data - * @returns ValidationLengthObject - */ -export function Length( - lengthOrOptions: number | ValidationLengthOptions, - options?: ValidationLengthOptions -): ValidationLengthObject { - if (typeof lengthOrOptions === "number") { - options = { ...defaultValidationLengthOptions, ...(options || {}) }; - options.length = lengthOrOptions; - } else { - options = { - ...defaultValidationLengthOptions, - ...(lengthOrOptions || {}), - }; - } - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: value.toString().length == this.length, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * PASSWORD - */ -interface ValidationPasswordOptions { - invalidMessage?: string | ((options: ValidationPasswordOptions) => string); -} - -interface ValidationPasswordObject extends ValidationPasswordOptions { - validate: (value: string) => Promise; -} - -const defaultValidationPasswordOptions: ValidationPasswordOptions = { - invalidMessage: - "Your password needs to have at least a letter, a number and a special character.", -}; - -/** - * Validate field is in a valid password format - * - * @param options options data - * @returns ValidationPasswordObject - */ -export function Password( - options?: ValidationPasswordOptions -): ValidationPasswordObject { - options = { ...defaultValidationPasswordOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: /(?=.*[A-Za-z])(?=.*\d)(?=.*[.@$!%*#?&])[A-Za-z\d.@$!%*#?&]{1,}$/.test( - value - ), - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * EMAIL - */ -interface ValidationEmailOptions { - invalidMessage?: string | ((options: ValidationEmailOptions) => string); -} - -interface ValidationEmailObject extends ValidationEmailOptions { - validate: (value: string) => Promise; -} - -const defaultValidationEmailOptions: ValidationEmailOptions = { - invalidMessage: "Your email is not in a supported format.", -}; - -/** - * Validate field is in a valid Email format - * - * @param options options data - * @returns ValidationEmailObject - */ -export function Email(options?: ValidationEmailOptions): ValidationEmailObject { - options = { ...defaultValidationEmailOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: - value.length == 0 || - /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(value), - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * PHONE - */ -interface ValidationPhoneOptions { - invalidMessage?: string | ((options: ValidationPhoneOptions) => string); -} - -interface ValidationPhoneObject extends ValidationPhoneOptions { - validate: (value: string) => Promise; -} - -const defaultValidationPhoneOptions: ValidationPhoneOptions = { - invalidMessage: "Your Phone number is not in a supported format.", -}; - -/** - * Validate field is in a valid Phone format - * - * @param options options data - * @returns ValidationPhoneObject - */ -export function Phone(options?: ValidationPhoneOptions): ValidationPhoneObject { - options = { ...defaultValidationPhoneOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: - value.length == 0 || - /^(\+|00)?[0-9][0-9 \-().]{7,32}$/.test(value), - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * NUMBER - */ -interface ValidationNumberOptions { - invalidMessage?: string | ((options: ValidationNumberOptions) => string); -} - -interface ValidationNumberObject extends ValidationNumberOptions { - validate: (value: string) => Promise; -} - -const defaultValidationNumberOptions: ValidationNumberOptions = { - invalidMessage: "Must be a number.", -}; - -/** - * Validate field is in a valid Whole number format - * - * @param options options data - * @returns ValidationNumberObject - */ -export function Number( - options?: ValidationNumberOptions -): ValidationNumberObject { - options = { ...defaultValidationNumberOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: value.length == 0 || /^0?\d+$/.test(value), - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * DATE - */ -interface ValidationDateOptions { - before?: string | ((value: string) => string); - after?: string | ((value: string) => string); - invalidMessage?: string | ((options: ValidationDateOptions) => string); - invalidBeforeMessage?: - | string - | ((options: ValidationDateOptions) => string); - invalidAfterMessage?: string | ((options: ValidationDateOptions) => string); -} - -interface ValidationDateObject extends ValidationDateOptions { - validate: (value: string) => Promise; -} - -const defaultValidationDateOptions: ValidationDateOptions = { - before: "", - after: "", - invalidMessage: "Must be a valid date.", - invalidBeforeMessage: (options: ValidationDateOptions) => { - return `Must be a date before ${options.before}.`; - }, - invalidAfterMessage: (options: ValidationDateOptions) => { - return `Must be a date after ${options.after}.`; - }, -}; - -/** - * Validate field is in a valid Date format - * - * @param options options data - * @returns ValidationDateObject - */ -export function Date(options?: ValidationDateOptions): ValidationDateObject { - options = { ...defaultValidationDateOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - let valid = true; - let invalidMessageType = "invalidMessage"; - - const parsedDate = new SMDate(value); - - if (parsedDate.isValid() == true) { - const beforeDate = new SMDate( - typeof (options["before"] = options?.before || "") === - "function" - ? options.before(value) - : options.before - ); - const afterDate = new SMDate( - typeof (options["after"] = options?.after || "") === - "function" - ? options.after(value) - : options.after - ); - if ( - beforeDate.isValid() == true && - parsedDate.isBefore(beforeDate) == false - ) { - valid = false; - invalidMessageType = "invalidBeforeMessage"; - } - if ( - afterDate.isValid() == true && - parsedDate.isAfter(afterDate) == false - ) { - valid = false; - invalidMessageType = "invalidAfterMessage"; - } - } else { - valid = false; - } - - return Promise.resolve({ - valid: valid, - invalidMessages: [ - typeof this[invalidMessageType] === "string" - ? this[invalidMessageType] - : this[invalidMessageType](this), - ], - }); - }, - }; -} - -/** - * TIME - */ -interface ValidationTimeOptions { - before?: string | ((value: string) => string); - after?: string | ((value: string) => string); - invalidMessage?: string | ((options: ValidationTimeOptions) => string); - invalidBeforeMessage?: - | string - | ((options: ValidationTimeOptions) => string); - invalidAfterMessage?: string | ((options: ValidationTimeOptions) => string); -} - -interface ValidationTimeObject extends ValidationTimeOptions { - validate: (value: string) => Promise; -} - -const defaultValidationTimeOptions: ValidationTimeOptions = { - before: "", - after: "", - invalidMessage: "Must be a valid time.", - invalidBeforeMessage: (options: ValidationTimeOptions) => { - return `Must be a time before ${options.before}.`; - }, - invalidAfterMessage: (options: ValidationTimeOptions) => { - return `Must be a time after ${options.after}.`; - }, -}; - -/** - * Validate field is in a valid Time format - * - * @param options options data - * @returns ValidationTimeObject - */ -export function Time(options?: ValidationTimeOptions): ValidationTimeObject { - options = { ...defaultValidationTimeOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - let valid = true; - let invalidMessageType = "invalidMessage"; - - const parsedTime = new SMDate(value); - if (parsedTime.isValid() == true) { - const beforeTime = new SMDate( - typeof (options["before"] = options?.before || "") === - "function" - ? options.before(value) - : options.before - ); - const afterTime = new SMDate( - typeof (options["after"] = options?.after || "") === - "function" - ? options.after(value) - : options.after - ); - - if ( - beforeTime.isValid() == true && - parsedTime.isBefore(beforeTime) == false - ) { - valid = false; - invalidMessageType = "invalidBeforeMessage"; - } - if ( - afterTime.isValid() == true && - parsedTime.isAfter(afterTime) == false - ) { - valid = false; - invalidMessageType = "invalidAfterMessage"; - } - } else { - valid = false; - } - - return Promise.resolve({ - valid: valid, - invalidMessages: [ - typeof this[invalidMessageType] === "string" - ? this[invalidMessageType] - : this[invalidMessageType](this), - ], - }); - }, - }; -} - -/** - * DATETIME - */ -interface ValidationDateTimeOptions { - before?: string | ((value: string) => string); - after?: string | ((value: string) => string); - invalidMessage?: string | ((options: ValidationDateTimeOptions) => string); - invalidBeforeMessage?: - | string - | ((options: ValidationDateTimeOptions) => string); - invalidAfterMessage?: - | string - | ((options: ValidationDateTimeOptions) => string); -} - -interface ValidationDateTimeObject extends ValidationDateTimeOptions { - validate: (value: string) => Promise; -} - -const defaultValidationDateTimeOptions: ValidationDateTimeOptions = { - before: "", - after: "", - invalidMessage: "Must be a valid date and time.", - invalidBeforeMessage: (options: ValidationDateTimeOptions) => { - return `Must be a date/time before ${options.before}.`; - }, - invalidAfterMessage: (options: ValidationDateTimeOptions) => { - return `Must be a date/time after ${options.after}.`; - }, -}; - -/** - * Validate field is in a valid Date format - * - * @param options options data - * @returns ValidationDateObject - */ -export function DateTime( - options?: ValidationDateTimeOptions -): ValidationDateTimeObject { - options = { ...defaultValidationDateTimeOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - let valid = true; - let invalidMessageType = "invalidMessage"; - - const parsedDate = new SMDate(value); - - if (parsedDate.isValid() == true) { - const beforeDate = new SMDate( - typeof (options["before"] = options?.before || "") === - "function" - ? options.before(value) - : options.before - ); - const afterDate = new SMDate( - typeof (options["after"] = options?.after || "") === - "function" - ? options.after(value) - : options.after - ); - if ( - beforeDate.isValid() == true && - parsedDate.isBefore(beforeDate) == false - ) { - valid = false; - invalidMessageType = "invalidBeforeMessage"; - } - if ( - afterDate.isValid() == true && - parsedDate.isAfter(afterDate) == false - ) { - valid = false; - invalidMessageType = "invalidAfterMessage"; - } - } else { - valid = false; - } - - return Promise.resolve({ - valid: valid, - invalidMessages: [ - typeof this[invalidMessageType] === "string" - ? this[invalidMessageType] - : this[invalidMessageType](this), - ], - }); - }, - }; -} - -/** - * CUSTOM - */ -type ValidationCustomCallback = (value: string) => Promise; - -interface ValidationCustomOptions { - callback: ValidationCustomCallback; - invalidMessage?: string | ((options: ValidationCustomOptions) => string); -} - -interface ValidationCustomObject extends ValidationCustomOptions { - validate: (value: string) => Promise; -} - -const defaultValidationCustomOptions: ValidationCustomOptions = { - callback: async () => { - return true; - }, - invalidMessage: "This field is invalid.", -}; - -export function Custom( - callbackOrOptions: ValidationCustomCallback | ValidationCustomOptions, - options?: ValidationCustomOptions -); -export function Custom( - options: ValidationCustomOptions -): ValidationCustomObject; - -/** - * Validate field is in a valid Custom format - * - * @param callbackOrOptions - * @param options options data - * @returns ValidationCustomObject - */ -export function Custom( - callbackOrOptions: ValidationCustomCallback | ValidationCustomOptions, - options?: ValidationCustomOptions -): ValidationCustomObject { - if (typeof callbackOrOptions === "function") { - options = { ...defaultValidationCustomOptions, ...(options || {}) }; - options.callback = callbackOrOptions; - } else { - options = { - ...defaultValidationCustomOptions, - ...(callbackOrOptions || {}), - }; - } - - return { - ...options, - validate: async function (value: string): Promise { - const validateResult = { - valid: true, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }; - - const callbackResult = - typeof this.callback === "function" - ? await this.callback(value) - : true; - - if (typeof callbackResult === "string") { - if (callbackResult.length > 0) { - validateResult.valid = false; - validateResult.invalidMessages = [callbackResult]; - } - } else if (callbackResult !== true) { - validateResult.valid = false; - } - - return validateResult; - }, - }; -} - -/** - * And - * - * @param list - */ -export const And = (list: Array) => { - return { - list: list, - validate: async function (value: string) { - const validationResult: ValidationResult = { - valid: true, - invalidMessages: [], - }; - - await Promise.all( - this.list.map(async (item: ValidationObject) => { - const validationItemResult = await item.validate(value); - if (validationItemResult.valid == false) { - validationResult.valid = false; - validationResult.invalidMessages = - validationResult.invalidMessages.concat( - validationItemResult.invalidMessages - ); - } - }) - ); - - return validationResult; - }, - }; -}; - -/** - * Required - */ -interface ValidationRequiredOptions { - invalidMessage?: string | ((options: ValidationRequiredOptions) => string); -} - -interface ValidationRequiredObject extends ValidationRequiredOptions { - validate: (value: string) => Promise; -} - -const defaultValidationRequiredOptions: ValidationRequiredOptions = { - invalidMessage: "This field is required.", -}; - -/** - * Validate field contains value - * - * @param options options data - * @returns ValidationRequiredObject - */ -export function Required( - options?: ValidationRequiredOptions -): ValidationRequiredObject { - options = { ...defaultValidationRequiredOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: unknown): Promise { - return Promise.resolve({ - valid: !isEmpty(value), - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * Required If - */ -type ValidationRequiredIfCheck = boolean | Array; - -interface ValidationRequiredIfOptions { - check: ValidationRequiredIfCheck; - invalidMessage?: - | string - | ((options: ValidationRequiredIfOptions) => string); -} - -interface ValidationRequiredIfObject extends ValidationRequiredIfOptions { - validate: (value: string) => Promise; -} - -const defaultValidationRequiredIfOptions: ValidationRequiredIfOptions = { - check: true, - invalidMessage: "This field is required.", -}; - -/** - * Validate field contains value - * - * @param checkOrOptions - * @param options options data - * @returns ValidationRequiredIfObject - */ -export function RequiredIf( - checkOrOptions: boolean | Array | ValidationRequiredIfOptions, - options?: ValidationRequiredIfOptions -): ValidationRequiredIfObject { - if ( - typeof checkOrOptions === "boolean" || - Array.isArray(checkOrOptions) === true - ) { - options = { ...defaultValidationRequiredIfOptions, ...(options || {}) }; - options.check = checkOrOptions; - } else { - options = { - ...defaultValidationRequiredIfOptions, - ...(checkOrOptions || {}), - }; - } - - options = { ...defaultValidationRequiredIfOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: unknown): Promise { - return Promise.resolve({ - valid: Array.isArray(value) - ? value.every((item) => !!item) - : value == true, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * Url - */ -interface ValidationUrlOptions { - invalidMessage?: string | ((options: ValidationUrlOptions) => string); -} - -interface ValidationUrlObject extends ValidationUrlOptions { - validate: (value: string) => Promise; -} - -const defaultValidationUrlOptions: ValidationUrlOptions = { - invalidMessage: "Not a supported Url format.", -}; - -/** - * Validate field is in a valid Email format - * - * @param options options data - * @returns ValidationEmailObject - */ -export function Url(options?: ValidationUrlOptions): ValidationUrlObject { - options = { ...defaultValidationUrlOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: string): Promise { - return Promise.resolve({ - valid: - value.length > 0 - ? /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*(:\d+)?([/?#][^\s]*)?$/.test( - value - ) - : true, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} - -/** - * FileSize - */ -interface ValidationFileSizeOptions { - size: number; - invalidMessage?: string | ((options: ValidationFileSizeOptions) => string); -} - -interface ValidationFileSizeObject extends ValidationFileSizeOptions { - validate: (value: File) => Promise; -} - -const defaultValidationFileSizeOptions: ValidationFileSizeOptions = { - size: 1024 * 1024 * 1024, // 1 Mb - invalidMessage: (options) => { - return `The file size must be less than ${bytesReadable(options.size)}`; - }, -}; - -/** - * Validate file is equal or less than size. - * - * @param options options data - * @returns ValidationEmailObject - */ -export function FileSize( - options?: ValidationFileSizeOptions -): ValidationFileSizeObject { - options = { ...defaultValidationFileSizeOptions, ...(options || {}) }; - - return { - ...options, - validate: function (value: File): Promise { - const isValid = - value instanceof File ? value.size < options.size : true; - - return Promise.resolve({ - valid: isValid, - invalidMessages: [ - typeof this.invalidMessage === "string" - ? this.invalidMessage - : this.invalidMessage(this), - ], - }); - }, - }; -} diff --git a/resources/js/lib/prism.js b/resources/js/lib/prism.js deleted file mode 100644 index 1608998..0000000 --- a/resources/js/lib/prism.js +++ /dev/null @@ -1,25 +0,0 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism&languages=markup+clike+javascript+bash+c+javadoclike+js-extras+json+json5+log+markup-templating+objectivec+perl+php+phpdoc+php-extras+python+regex+sql+swift+typoscript+yaml */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; -Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},n={bash:a,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete Prism.languages.c.boolean; -!function(e){function n(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(t,a,r,o){if(t.language===a){var c=t.tokenStack=[];t.code=t.code.replace(r,(function(e){if("function"==typeof o&&!o(e))return e;for(var r,i=c.length;-1!==t.code.indexOf(r=n(a,i));)++i;return c[i]=e,r})),t.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(t,a){if(t.language===a&&t.tokenStack){t.grammar=e.languages[a];var r=0,o=Object.keys(t.tokenStack);!function c(i){for(var u=0;u=o.length);u++){var g=i[u];if("string"==typeof g||g.content&&"string"==typeof g.content){var l=o[r],s=t.tokenStack[l],f="string"==typeof g?g:g.content,p=n(a,l),k=f.indexOf(p);if(k>-1){++r;var m=f.substring(0,k),d=new e.Token(a,e.tokenize(s,t.grammar),"language-"+a,s),h=f.substring(k+p.length),v=[];m&&v.push.apply(v,c([m])),v.push(d),h&&v.push.apply(v,c([h])),"string"==typeof g?i.splice.apply(i,[u,1].concat(v)):g.content=v}}else g.content&&c(g.content)}return i}(t.tokens)}}}})}(Prism); -!function(e){var a=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,n=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:a,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];e.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:a,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",(function(a){/<\?/.test(a.code)&&e.languages["markup-templating"].buildPlaceholders(a,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)})),e.hooks.add("after-tokenize",(function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"php")}))}(Prism); -!function(a){var e=a.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(e,"addSupport",{value:function(e,n){"string"==typeof e&&(e=[e]),e.forEach((function(e){!function(e,n){var t="doc-comment",r=a.languages[e];if(r){var o=r[t];if(o||(o=(r=a.languages.insertBefore(e,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[t]),o instanceof RegExp&&(o=r[t]={pattern:o}),Array.isArray(o))for(var i=0,s=o.length;i/g,(function(){return"(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*"})),e)}a.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+a.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),a.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+a.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),a.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),a.languages.insertBefore("javascript","keyword",{imports:{pattern:e("(\\bimport\\b\\s*)(?:(?:\\s*,\\s*(?:\\*\\s*as\\s+|\\{[^{}]*\\}))?|\\*\\s*as\\s+|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)"),lookbehind:!0,inside:a.languages.javascript},exports:{pattern:e("(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})"),lookbehind:!0,inside:a.languages.javascript}}),a.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),a.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),a.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:e("(\\.\\s*)#?"),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var t=["function","function-variable","method","method-variable","property-access"],r=0;r.]/,email:{pattern:/(^|\s)[-\w+.]+@[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+(?=\s)/,lookbehind:!0,alias:"url"},"ip-address":{pattern:/\b(?:\d{1,3}(?:\.\d{1,3}){3})\b/,alias:"constant"},"mac-address":{pattern:/\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\b/i,alias:"constant"},domain:{pattern:/(^|\s)[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[a-z][a-z0-9-]+(?=\s)/,lookbehind:!0,alias:"constant"},uuid:{pattern:/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i,alias:"constant"},hash:{pattern:/\b(?:[a-f0-9]{32}){1,2}\b/i,alias:"constant"},"file-path":{pattern:/\b[a-z]:[\\/][^\s|,;:(){}\[\]"']+|(^|[\s:\[\](>|])\.{0,2}\/\w[^\s|,;:(){}\[\]"']*/i,lookbehind:!0,greedy:!0,alias:"string"},date:{pattern:RegExp("\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))|\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b|\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b","i"),alias:"number"},time:{pattern:/\b\d{1,2}:\d{1,2}:\d{1,2}(?:[.,:]\d+)?(?:\s?[+-]\d{2}:?\d{2}|Z)?\b/,alias:"number"},boolean:/\b(?:false|null|true)\b/i,number:{pattern:/(^|[^.\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\d[\da-f]*(?:\.\d+)*(?:e[+-]?\d+)?[a-z]{0,3}\b)\b(?!\.\w)/i,lookbehind:!0},operator:/[;:?<=>~/@!$%&+\-|^(){}*#]/,punctuation:/[\[\].,]/}; -Prism.languages.objectivec=Prism.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete Prism.languages.objectivec["class-name"],Prism.languages.objc=Prism.languages.objectivec; -!function(e){var n="(?:\\((?:[^()\\\\]|\\\\[^])*\\)|\\{(?:[^{}\\\\]|\\\\[^])*\\}|\\[(?:[^[\\]\\\\]|\\\\[^])*\\]|<(?:[^<>\\\\]|\\\\[^])*>)";e.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],string:[{pattern:RegExp("\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2",n].join("|")+")"),greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:RegExp("\\b(?:m|qr)(?![a-zA-Z0-9])\\s*(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2",n].join("|")+")[msixpodualngc]*"),greedy:!0},{pattern:RegExp("(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2(?:(?!\\2)[^\\\\]|\\\\[^])*\\2","([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[^])*\\3(?:(?!\\3)[^\\\\]|\\\\[^])*\\3",n+"\\s*"+n].join("|")+")[msixpodualngcer]*"),lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*?>|\b_\b/,alias:"symbol"},"v-string":{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/(\bsub[ \t]+)\w+/,lookbehind:!0},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\b/,punctuation:/[{}[\];(),:]/}}(Prism); -!function(a){var e="(?:\\b[a-zA-Z]\\w*|[|\\\\[\\]])+";a.languages.phpdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp("(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:"+e+"\\s+)?)\\$\\w+"),lookbehind:!0}}),a.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp("(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)"+e),lookbehind:!0,inside:{keyword:/\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\b/,punctuation:/[|\\[\]()]/}}]}),a.languages.javadoclike.addSupport("php",a.languages.phpdoc)}(Prism); -Prism.languages.insertBefore("php","variable",{this:{pattern:/\$this\b/,alias:"keyword"},global:/\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/\b(?:parent|self|static)\b/,punctuation:/::|\\/}}}); -Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; -!function(a){var e={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t="(?:[^\\\\-]|"+n.source+")",s=RegExp(t+"-"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"};a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":e,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:n}},"special-escape":e,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; -Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=Prism.languages.swift})); -!function(E){var n=/\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\b/;E.languages.typoscript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:= \t]|(?:^|[^= \t])[ \t]+)\/\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^"'])#.*/,lookbehind:!0,greedy:!0}],function:[{pattern://,inside:{string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,inside:{keyword:n}},keyword:{pattern:/INCLUDE_TYPOSCRIPT/}}},{pattern:/@import\s*(?:"[^"\r\n]*"|'[^'\r\n]*')/,inside:{string:/"[^"\r\n]*"|'[^'\r\n]*'/}}],string:{pattern:/^([^=]*=[< ]?)(?:(?!\]\n).)*/,lookbehind:!0,inside:{function:/\{\$.*\}/,keyword:n,number:/^\d+$/,punctuation:/[,|:]/}},keyword:n,number:{pattern:/\b\d+\s*[.{=]/,inside:{operator:/[.{=]/}},tag:{pattern:/\.?[-\w\\]+\.?/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:|]/,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/},E.languages.tsconfig=E.languages.typoscript}(Prism); -!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,(function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"})),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return e}));return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,(function(){return t}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return"(?:"+a+"|"+d+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism); diff --git a/resources/js/main.js b/resources/js/main.js deleted file mode 100644 index f8497d1..0000000 --- a/resources/js/main.js +++ /dev/null @@ -1,12 +0,0 @@ -import Router from "@/router"; -import { createPinia } from "pinia"; -import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; -import { createApp } from "vue"; -import App from "./views/App.vue"; -import "uno.css"; -import "../css/app.scss"; - -const pinia = createPinia(); -pinia.use(piniaPluginPersistedstate); - -createApp(App).use(pinia).use(Router).mount("#app"); diff --git a/resources/js/router/index.js b/resources/js/router/index.js deleted file mode 100644 index 19a54f3..0000000 --- a/resources/js/router/index.js +++ /dev/null @@ -1,619 +0,0 @@ -import { useUserStore } from "@/store/UserStore"; -import { createRouter, createWebHistory } from "vue-router"; -import { api } from "../helpers/api"; -import { useApplicationStore } from "../store/ApplicationStore"; -import { updateSEOTags } from "../helpers/seo"; - -export const routes = [ - { - path: "/", - name: "home", - meta: { - title: "Home", - description: - "STEMMechanics, a family-run company based in Cairns, Queensland, creates fantastic STEM-focused programs and activities that are both entertaining and educational.", - }, - component: () => import("@/views/Home.vue"), - }, - { - path: "/blog", - name: "blog", - meta: { - title: "Blog", - }, - component: () => import(/* webpackPrefetch: true */ "@/views/Blog.vue"), - }, - { - path: "/article", - redirect: "/blog", - children: [ - { - path: ":slug", - name: "article", - component: () => import("@/views/Article.vue"), - }, - ], - }, - { - path: "/workshops", - name: "workshops", - meta: { - title: "Workshops", - }, - component: () => - import(/* webpackPreload: true */ "@/views/Workshops.vue"), - }, - { - path: "/event", - redirect: "/workshops", - children: [ - { - path: ":id", - name: "event", - component: () => import("@/views/Event.vue"), - }, - ], - }, - { - path: "/verify-email", - name: "verify-email", - meta: { - title: "Verify Email", - }, - component: () => import("@/views/EmailVerify.vue"), - }, - { - path: "/resend-verify-email", - name: "resend-verify-email", - meta: { - title: "Resend Verification Email", - }, - component: () => import("@/views/ResendEmailVerify.vue"), - }, - { - path: "/reset-password", - name: "reset-password", - meta: { - title: "Reset Password", - }, - component: () => import("@/views/ResetPassword.vue"), - }, - { - path: "/privacy", - name: "privacy", - meta: { - title: "Privacy Policy", - }, - component: () => import("@/views/Privacy.vue"), - }, - { - path: "/rules", - name: "rules", - meta: { - title: "Rules", - }, - component: () => import("@/views/Rules.vue"), - }, - { - path: "/community", - name: "community", - meta: { - title: "Community", - }, - component: () => import("@/views/Community.vue"), - }, - { - path: "/minecraft", - children: [ - { - path: "", - name: "minecraft", - meta: { - title: "Minecraft", - }, - component: () => import("@/views/Minecraft.vue"), - }, - { - path: "curve", - name: "minecraft-curve", - meta: { - title: "Minecraft Curve", - }, - component: () => import("@/views/MinecraftCurve.vue"), - }, - ], - }, - { - path: "/login", - name: "login", - meta: { - title: "Login", - middleware: "guest", - }, - component: () => - import(/* webpackPrefetch: true */ "@/views/Login.vue"), - }, - { - path: "/logout", - name: "logout", - meta: { - title: "Logout", - }, - component: () => import("@/views/Logout.vue"), - }, - { - path: "/contact", - name: "contact", - meta: { - title: "Contact", - }, - component: () => - import(/* webpackPrefetch: true */ "@/views/Contact.vue"), - }, - { - path: "/conduct", - redirect: { name: "code-of-conduct" }, - }, - { - path: "/code-of-conduct", - name: "code-of-conduct", - meta: { - title: "Code of Conduct", - }, - component: () => import("@/views/CodeOfConduct.vue"), - }, - { - path: "/terms", - redirect: { name: "terms-and-conditions" }, - }, - { - path: "/terms-and-conditions", - name: "terms-and-conditions", - meta: { - title: "Terms and Conditions", - }, - component: () => import("@/views/TermsAndConditions.vue"), - }, - { - path: "/register", - name: "register", - meta: { - title: "Register", - }, - component: () => - import(/* webpackPrefetch: true */ "@/views/Register.vue"), - }, - { - path: "/dashboard", - children: [ - { - path: "", - name: "dashboard", - meta: { - title: "Dashboard", - middleware: "authenticated", - }, - component: () => - import( - /* webpackPrefetch: true */ "@/views/dashboard/Dashboard.vue" - ), - }, - { - path: "analytics", - children: [ - { - path: "", - name: "dashboard-analytics-list", - meta: { - title: "Analytics", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/AnalyticsList.vue"), - }, - { - path: ":id", - name: "dashboard-analytics-item", - meta: { - title: "Analytics Session", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/AnalyticsItem.vue"), - }, - ], - }, - { - path: "articles", - children: [ - { - path: "", - name: "dashboard-article-list", - meta: { - title: "Articles", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ArticleList.vue"), - }, - { - path: "create", - name: "dashboard-article-create", - meta: { - title: "Create Article", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ArticleEdit.vue"), - }, - { - path: ":id", - name: "dashboard-article-edit", - meta: { - title: "Edit Article", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ArticleEdit.vue"), - }, - ], - }, - { - path: "events", - children: [ - { - path: "", - name: "dashboard-event-list", - meta: { - title: "Events", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/EventList.vue"), - }, - { - path: "create", - name: "dashboard-event-create", - meta: { - title: "Create Event", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/EventEdit.vue"), - }, - { - path: ":id", - name: "dashboard-event-edit", - meta: { - title: "Event", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/EventEdit.vue"), - }, - ], - }, - { - path: "details", - name: "dashboard-account-details", - meta: { - title: "Account Details", - middleware: "authenticated", - }, - component: () => import("@/views/dashboard/UserEdit.vue"), - }, - { - path: "users", - children: [ - { - path: "", - name: "dashboard-user-list", - meta: { - title: "Users", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/UserList.vue"), - }, - { - path: "create", - name: "dashboard-user-create", - meta: { - title: "Create User", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/UserEdit.vue"), - }, - { - path: ":id", - name: "dashboard-user-edit", - meta: { - title: "Edit User", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/UserEdit.vue"), - }, - ], - }, - { - path: "media", - children: [ - { - path: "", - name: "dashboard-media-list", - meta: { - title: "Media", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/MediaList.vue"), - }, - { - path: "create", - name: "dashboard-media-create", - meta: { - title: "Upload Media", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/MediaEdit.vue"), - }, - { - path: ":id", - name: "dashboard-media-edit", - meta: { - title: "Edit Media", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/MediaEdit.vue"), - }, - ], - }, - { - path: "shortlinks", - children: [ - { - path: "", - name: "dashboard-shortlink-list", - meta: { - title: "Shortlink", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ShortlinkList.vue"), - }, - { - path: "create", - name: "dashboard-shortlink-create", - meta: { - title: "Create Shortlink", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ShortlinkEdit.vue"), - }, - { - path: ":id", - name: "dashboard-shortlink-edit", - meta: { - title: "Edit Shortlink", - middleware: "authenticated", - }, - component: () => - import("@/views/dashboard/ShortlinkEdit.vue"), - }, - ], - }, - { - path: "discord-bot-logs", - name: "dashboard-discord-bot-logs", - meta: { - title: "Discord Bot Logs", - middleware: "authenticated", - }, - component: () => import("@/views/dashboard/DiscordBotLogs.vue"), - }, - ], - }, - { - path: "/forgot-password", - name: "forgot-password", - meta: { - title: "Forgot Password", - }, - component: () => import("@/views/ForgotPassword.vue"), - }, - { - path: "/file/:id", - name: "file", - meta: { - title: "File", - }, - component: () => import("@/views/File.vue"), - }, - { - path: "/cart", - name: "cart", - meta: { - title: "Cart", - }, - component: () => import("@/views/Cart.vue"), - }, - { - path: "/:catchAll(.*)", - name: "not-found", - meta: { - title: "Page not found", - hideInEditor: true, - }, - component: () => import("@/views/404.vue"), - }, -]; - -const router = createRouter({ - history: createWebHistory(), - routes, - scrollBehavior() { - return { top: 0 }; - }, -}); - -// export let activeRoutes = []; - -router.beforeEach(async (to, from, next) => { - const userStore = useUserStore(); - const applicationStore = useApplicationStore(); - - applicationStore.hydrated = false; - applicationStore.clearDynamicTitle(); - - if (applicationStore.pageLoaderTimeout !== 0) { - window.clearTimeout(applicationStore.pageLoaderTimeout); - applicationStore.pageLoaderTimeout = window.setTimeout(() => { - const pageLoadingElem = document.getElementById("sm-page-loading"); - if (pageLoadingElem !== null) { - pageLoadingElem.style.display = "flex"; - } - }, 0); - } - - if (to.meta.middleware == "authenticated") { - if (userStore.id) { - api.get({ - url: "/me", - }) - .then((res) => { - userStore.setUserDetails(res.data.user); - }) - .catch((err) => { - console.log(err); - if (err.status == 401) { - userStore.clearUser(); - - window.location.href = `/login?redirect=${to.fullPath}`; - } - }); - } - - if (!userStore.id) { - next({ - name: "login", - query: { redirect: encodeURIComponent(to.fullPath) }, - }); - - return; - } - } - - api.post({ - url: "/analytics", - body: { - type: "pageview", - path: to.fullPath, - }, - }).catch(() => { - /* empty */ - }); - - next(); -}); - -router.afterEach((to, from) => { - const applicationStore = useApplicationStore(); - - if (from.name !== undefined) { - document.body.classList.remove(`page-${from.name}`); - } - document.body.classList.add(`page-${to.name}`); - - window.setTimeout(() => { - const getMetaValue = (tag, defaultValue = "") => { - const getMeta = (obj, tag) => { - const tagHierarchy = tag.split("."); - - const nearestWithMeta = obj.matched - .slice() - .reverse() - .reduce( - (acc, r) => acc || (r.meta && r.meta[tagHierarchy[0]]), - null, - ); - if (nearestWithMeta) { - let result = nearestWithMeta; - for (let i = 1; i < tagHierarchy.length; i++) { - result = result[tagHierarchy[i]]; - if (!result) break; - } - if (result !== undefined) return result; - } - - return null; - }; - - const nearestMeta = getMeta(to, tag); - if (nearestMeta == null) { - const previousMeta = getMeta(from, tag); - if (previousMeta == null) { - return defaultValue; - } - - return previousMeta; - } - return nearestMeta; - }; - - updateSEOTags({ - title: getMetaValue("title"), - description: getMetaValue("description"), - keywords: getMetaValue("keywords", []), - robots: { - index: getMetaValue( - "robots.index", - !to.meta.middleware - ? true - : to.meta.middleware != "authenticated", - ), - follow: getMetaValue( - "robots.follow", - !to.meta.middleware - ? true - : to.meta.middleware != "authenticated", - ), - }, - url: getMetaValue("url", to.path), - image: getMetaValue("image", ""), - }); - }, 10); - - window.setTimeout(() => { - const autofocusElement = document.querySelector("[autofocus]"); - if (autofocusElement) { - autofocusElement.focus(); - } - - const hash = window.location.hash; - if (hash) { - const target = document.querySelector(hash); - if (target) { - target.scrollIntoView(); - } - } - }, 10); - - if (applicationStore.pageLoaderTimeout !== 0) { - window.clearTimeout(applicationStore.pageLoaderTimeout); - applicationStore.pageLoaderTimeout = 0; - } - - const pageLoadingElem = document.getElementById("sm-page-loading"); - if (pageLoadingElem !== null) { - pageLoadingElem.style.display = "none"; - } - - applicationStore.hydrated = true; -}); - -export default router; diff --git a/resources/js/store/ApplicationStore.ts b/resources/js/store/ApplicationStore.ts deleted file mode 100644 index ff3ea03..0000000 --- a/resources/js/store/ApplicationStore.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { defineStore } from "pinia"; - -type ApplicationStoreEventKeyUpCallback = (event: KeyboardEvent) => boolean; -type ApplicationStoreEventKeyPressCallback = (event: KeyboardEvent) => boolean; - -export interface ApplicationStore { - hydrated: boolean; - unavailable: boolean; - dynamicTitle: string; - eventKeyUpStack: ApplicationStoreEventKeyUpCallback[]; - eventKeyPressStack: ApplicationStoreEventKeyPressCallback[]; - pageLoaderTimeout: number; - _addedListener: boolean; -} - -export const useApplicationStore = defineStore({ - id: "application", - state: (): ApplicationStore => ({ - hydrated: false, - unavailable: false, - dynamicTitle: "", - eventKeyUpStack: [], - eventKeyPressStack: [], - pageLoaderTimeout: 0, - _addedListener: false, - }), - - actions: { - async setDynamicTitle(title: string) { - this.$state.dynamicTitle = title; - document.title = `STEMMechanics | ${title}`; - }, - - clearDynamicTitle() { - this.$state.dynamicTitle = ""; - }, - - addKeyUpListener(callback: ApplicationStoreEventKeyUpCallback) { - this.eventKeyUpStack.push(callback); - - if (!this._addedListener) { - document.addEventListener("keyup", (event: KeyboardEvent) => { - this.eventKeyUpStack.every( - (item: ApplicationStoreEventKeyUpCallback) => { - const result = item(event); - if (result) { - return false; - } - - return true; - }, - ); - }); - } - }, - - removeKeyUpListener(callback: ApplicationStoreEventKeyUpCallback) { - this.eventKeyUpStack = this.eventKeyUpStack.filter( - (item: ApplicationStoreEventKeyUpCallback) => item !== callback, - ); - }, - - addKeyPressListener(callback: ApplicationStoreEventKeyPressCallback) { - this.eventKeyPressStack.push(callback); - - if (!this._addedListener) { - document.addEventListener( - "keypress", - (event: KeyboardEvent) => { - this.eventKeyPressStack.every( - (item: ApplicationStoreEventKeyPressCallback) => { - const result = item(event); - if (result) { - return false; - } - - return true; - }, - ); - }, - ); - } - }, - - removeKeyPressListener( - callback: ApplicationStoreEventKeyPressCallback, - ) { - this.eventKeyPressStack = this.eventKeyPressStack.filter( - (item: ApplicationStoreEventKeyPressCallback) => - item !== callback, - ); - }, - }, -}); diff --git a/resources/js/store/CacheStore.ts b/resources/js/store/CacheStore.ts deleted file mode 100644 index b43a808..0000000 --- a/resources/js/store/CacheStore.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { DefineStoreOptions, defineStore } from "pinia"; - -interface CacheItem { - url: string; - data: unknown; -} - -export const useCacheStore = defineStore({ - id: "cache", - state: () => ({ - cache: [] as CacheItem[], - }), - - actions: { - // Method to retrieve cached JSON data based on a URL - getCacheByUrl(url: string) { - const cachedItem = this.cache.find((item) => item.url === url); - return cachedItem ? cachedItem.data : null; - }, - - // Method to update the cache with new data and check for modifications - updateCache(url: string, newData: unknown): boolean { - const index = this.cache.findIndex((item) => item.url === url); - - if (index !== -1) { - // If the URL is already in the cache, check for modifications - const existingData = this.cache[index].data; - - if (JSON.stringify(existingData) === JSON.stringify(newData)) { - // Data is not modified, return false - return false; - } else { - // Data is modified, update the cache - this.cache[index].data = newData; - return true; - } - } else { - // If the URL is not in the cache, add it - this.cache.push({ url, data: newData }); - return true; - } - }, - - // Method to clear the cache for a specific URL - clearCacheByUrl(url: string) { - const index = this.cache.findIndex((item) => item.url === url); - if (index !== -1) { - this.cache.splice(index, 1); - } - }, - - // Method to clear the entire cache - clearCache() { - this.cache = []; - }, - }, - - persist: true, -} as DefineStoreOptions & { - persist?: boolean; -}); diff --git a/resources/js/store/ToastStore.ts b/resources/js/store/ToastStore.ts deleted file mode 100644 index 27008a8..0000000 --- a/resources/js/store/ToastStore.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { defineStore } from "pinia"; - -export interface ToastOptions { - id?: number; - title?: string; - content: string; - type?: string; - loader?: boolean; -} - -export interface ToastItem { - id: number; - title: string; - content: string; - type: string; - loader: boolean; -} - -export interface ToastStore { - toasts: ToastItem[]; -} - -export const defaultToastItem: ToastItem = { - id: 0, - title: "", - content: "", - type: "primary", - loader: false, -}; - -export const useToastStore = defineStore({ - id: "toasts", - state: (): ToastStore => ({ - toasts: [], - }), - - actions: { - addToast(toast: ToastOptions): number { - while ( - !toast.id || - toast.id == 0 || - this.toasts.find((item: ToastItem) => item.id === toast.id) - ) { - toast.id = - Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1; - } - - toast.title = toast.title || defaultToastItem.title; - toast.type = toast.type || defaultToastItem.type; - - this.toasts.push(toast); - return toast.id; - }, - - clearToast(id: number): void { - this.toasts = this.toasts.filter( - (item: ToastItem) => item.id !== id - ); - }, - - updateToast(id: number, updatedFields: Partial): void { - const toastToUpdate = this.toasts.find( - (item: ToastItem) => item.id === id - ); - - if (toastToUpdate) { - toastToUpdate.title = - updatedFields.title || toastToUpdate.title; - toastToUpdate.content = - updatedFields.content || toastToUpdate.content; - toastToUpdate.type = updatedFields.type || toastToUpdate.type; - if ( - Object.prototype.hasOwnProperty.call( - updatedFields, - "loader" - ) - ) { - toastToUpdate.loader = updatedFields.loader; - } - } - }, - }, -}); diff --git a/resources/js/store/UserStore.ts b/resources/js/store/UserStore.ts deleted file mode 100644 index 7186682..0000000 --- a/resources/js/store/UserStore.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { defineStore, DefineStoreOptions } from "pinia"; - -export interface UserDetails { - id: string; - username: string; - first_name: string; - last_name: string; - display_name: string; - email: string; - phone: string; - permissions: string[]; -} - -export interface UserState { - id: string; - token: string; - username: string; - firstName: string; - lastName: string; - displayName: string; - email: string; - phone: string; - permissions: string[]; -} - -export const useUserStore = defineStore({ - id: "user", - state: (): UserState => { - return { - id: "", - token: "", - username: "", - firstName: "", - lastName: "", - displayName: "", - email: "", - phone: "", - permissions: [], - }; - }, - - actions: { - async setUserDetails(user: UserDetails) { - this.$state.id = user.id; - this.$state.username = user.username; - this.$state.firstName = user.first_name; - this.$state.lastName = user.last_name; - this.$state.displayName = user.display_name; - this.$state.email = user.email; - this.$state.phone = user.phone; - this.$state.permissions = user.permissions || []; - }, - - async setUserToken(token: string) { - this.$state.token = token; - }, - - clearUser() { - this.$state.id = null; - this.$state.token = null; - this.$state.username = null; - this.$state.firstName = null; - this.$state.lastName = null; - this.$state.displayName = null; - this.$state.email = null; - this.$state.phone = null; - this.$state.permissions = []; - }, - }, - - persist: true, -} as DefineStoreOptions & { persist?: boolean }); diff --git a/resources/js/tests/datetime.test.ts b/resources/js/tests/datetime.test.ts deleted file mode 100644 index 01d4d12..0000000 --- a/resources/js/tests/datetime.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { expect, describe, it } from "vitest"; -import { SMDate } from "../helpers/datetime"; - -describe("format()", () => { - it("should return an empty string when the first argument is not a Date object", () => { - const result = new SMDate("not a date").format("yyyy-MM-dd"); - expect(result).toEqual(""); - }); - - it("should format the date correctly", () => { - const date = new Date("2022-02-19T12:34:56"); - const result = new SMDate(date).format("yyyy-MM-dd HH:mm:ss"); - expect(result).toEqual("2022-02-19 12:34:56"); - }); - - it("should handle single-digit month and day", () => { - const date = new Date("2022-01-01T00:00:00"); - const result = new SMDate(date).format("yy-M-d"); - expect(result).toEqual("22-1-1"); - }); - - it("should handle day of week and month name abbreviations", () => { - const date = new Date("2022-03-22T00:00:00"); - const result = new SMDate(date).format("EEE, MMM dd, yyyy"); - expect(result).toEqual("Tue, Mar 22, 2022"); - }); - - it("should handle 12-hour clock with am/pm", () => { - const date = new Date("2022-01-01T12:34:56"); - const result = new SMDate(date).format("hh:mm:ss aa"); - expect(result).toEqual("12:34:56 pm"); - }); -}); diff --git a/resources/js/tests/string.test.ts b/resources/js/tests/string.test.ts deleted file mode 100644 index 53620e2..0000000 --- a/resources/js/tests/string.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { expect, describe, it } from "vitest"; -import { toTitleCase } from "../helpers/string"; - -describe("toTitleCase()", () => { - it("should return a converted title case string", () => { - const result = toTitleCase("titlecase"); - expect(result).toEqual("Titlecase"); - }); - - it("should return a converted title case string and spaces", () => { - const result = toTitleCase("titlecase_and_more"); - expect(result).toEqual("Titlecase And More"); - }); -}); diff --git a/resources/js/tests/validate.test.ts b/resources/js/tests/validate.test.ts deleted file mode 100644 index 64003b4..0000000 --- a/resources/js/tests/validate.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { expect, describe, it } from "vitest"; -import { Email } from "../helpers/validate"; - -describe("Email()", () => { - it("should return valid=false when an invalid email address is passed to the validate function", async () => { - const v = Email(); - const result = await v.validate("invalid email"); - expect(result.valid).toBe(false); - }); - - it("should return valid=false when an invalid email address is passed to the validate function", async () => { - const v = Email(); - const result = await v.validate("fake@outlook"); - expect(result.valid).toBe(false); - }); - - it("should return valid=true when an valid email address is passed to the validate function", async () => { - const v = Email(); - const result = await v.validate("fake@outlook.com"); - expect(result.valid).toBe(true); - }); - - it("should return valid=true when an valid email address is passed to the validate function", async () => { - const v = Email(); - const result = await v.validate("fake@outlook.com.au"); - expect(result.valid).toBe(true); - }); -}); diff --git a/resources/js/views/404.vue b/resources/js/views/404.vue deleted file mode 100644 index 7e8e8a3..0000000 --- a/resources/js/views/404.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/resources/js/views/App.vue b/resources/js/views/App.vue deleted file mode 100644 index afbc6af..0000000 --- a/resources/js/views/App.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/resources/js/views/Article.vue b/resources/js/views/Article.vue deleted file mode 100644 index 4e0885a..0000000 --- a/resources/js/views/Article.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - diff --git a/resources/js/views/Blog.vue b/resources/js/views/Blog.vue deleted file mode 100644 index d4aae24..0000000 --- a/resources/js/views/Blog.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - - - diff --git a/resources/js/views/Cart.vue b/resources/js/views/Cart.vue deleted file mode 100644 index 476cc04..0000000 --- a/resources/js/views/Cart.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/resources/js/views/CodeOfConduct.vue b/resources/js/views/CodeOfConduct.vue deleted file mode 100644 index 5bb3dbd..0000000 --- a/resources/js/views/CodeOfConduct.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - diff --git a/resources/js/views/Community.vue b/resources/js/views/Community.vue deleted file mode 100644 index c729776..0000000 --- a/resources/js/views/Community.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - diff --git a/resources/js/views/Contact.vue b/resources/js/views/Contact.vue deleted file mode 100644 index 570db09..0000000 --- a/resources/js/views/Contact.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - diff --git a/resources/js/views/EmailVerify.vue b/resources/js/views/EmailVerify.vue deleted file mode 100644 index 6b2bd64..0000000 --- a/resources/js/views/EmailVerify.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - diff --git a/resources/js/views/Event.vue b/resources/js/views/Event.vue deleted file mode 100644 index c8a3add..0000000 --- a/resources/js/views/Event.vue +++ /dev/null @@ -1,357 +0,0 @@ - - - diff --git a/resources/js/views/File.vue b/resources/js/views/File.vue deleted file mode 100644 index 2f00f1d..0000000 --- a/resources/js/views/File.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - diff --git a/resources/js/views/ForgotPassword.vue b/resources/js/views/ForgotPassword.vue deleted file mode 100644 index 1b352c1..0000000 --- a/resources/js/views/ForgotPassword.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/resources/js/views/Home.vue b/resources/js/views/Home.vue deleted file mode 100644 index eb25a8c..0000000 --- a/resources/js/views/Home.vue +++ /dev/null @@ -1,385 +0,0 @@ - - - - - diff --git a/resources/js/views/Login.vue b/resources/js/views/Login.vue deleted file mode 100644 index 8f6092c..0000000 --- a/resources/js/views/Login.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/resources/js/views/Logout.vue b/resources/js/views/Logout.vue deleted file mode 100644 index 7b83740..0000000 --- a/resources/js/views/Logout.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - - - diff --git a/resources/js/views/Minecraft.vue b/resources/js/views/Minecraft.vue deleted file mode 100644 index 8c7ac9b..0000000 --- a/resources/js/views/Minecraft.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - diff --git a/resources/js/views/MinecraftCurve.vue b/resources/js/views/MinecraftCurve.vue deleted file mode 100644 index 544b02e..0000000 --- a/resources/js/views/MinecraftCurve.vue +++ /dev/null @@ -1,1104 +0,0 @@ - - - - - diff --git a/resources/js/views/Privacy.vue b/resources/js/views/Privacy.vue deleted file mode 100644 index 1fd2d53..0000000 --- a/resources/js/views/Privacy.vue +++ /dev/null @@ -1,359 +0,0 @@ - - - diff --git a/resources/js/views/Register.vue b/resources/js/views/Register.vue deleted file mode 100644 index d0605dc..0000000 --- a/resources/js/views/Register.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - diff --git a/resources/js/views/ResendEmailVerify.vue b/resources/js/views/ResendEmailVerify.vue deleted file mode 100644 index 9bf6618..0000000 --- a/resources/js/views/ResendEmailVerify.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/resources/js/views/ResetPassword.vue b/resources/js/views/ResetPassword.vue deleted file mode 100644 index c352885..0000000 --- a/resources/js/views/ResetPassword.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - diff --git a/resources/js/views/Rules.vue b/resources/js/views/Rules.vue deleted file mode 100644 index 60715e0..0000000 --- a/resources/js/views/Rules.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/resources/js/views/TermsAndConditions.vue b/resources/js/views/TermsAndConditions.vue deleted file mode 100644 index 1396e03..0000000 --- a/resources/js/views/TermsAndConditions.vue +++ /dev/null @@ -1,589 +0,0 @@ - - - diff --git a/resources/js/views/Workshops.vue b/resources/js/views/Workshops.vue deleted file mode 100644 index 65772af..0000000 --- a/resources/js/views/Workshops.vue +++ /dev/null @@ -1,256 +0,0 @@ - - - - - diff --git a/resources/js/views/dashboard/AnalyticsItem.vue b/resources/js/views/dashboard/AnalyticsItem.vue deleted file mode 100644 index 48fbe70..0000000 --- a/resources/js/views/dashboard/AnalyticsItem.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - diff --git a/resources/js/views/dashboard/AnalyticsList.vue b/resources/js/views/dashboard/AnalyticsList.vue deleted file mode 100644 index 112ea03..0000000 --- a/resources/js/views/dashboard/AnalyticsList.vue +++ /dev/null @@ -1,199 +0,0 @@ - - -