Showing preview only (9,741K chars total). Download the full file or copy to clipboard to get everything.
Repository: tightenco/gistlog
Branch: main
Commit: e92d19ffc540
Files: 172
Total size: 9.2 MB
Directory structure:
gitextract_6z79ejbg/
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── lint.yml
│ └── run-tests.yml
├── .gitignore
├── .phpcs.xml.dist
├── .travis.yml
├── app/
│ ├── Authors/
│ │ ├── Author.php
│ │ ├── AuthorClient.php
│ │ └── AuthorRepository.php
│ ├── CachesGitHubResponses.php
│ ├── Console/
│ │ ├── Commands/
│ │ │ └── Inspire.php
│ │ └── Kernel.php
│ ├── ContentParser/
│ │ ├── ContentParser.php
│ │ ├── ContentParserFacade.php
│ │ ├── GitHubMarkdownTransformer.php
│ │ ├── MarkdownTransformer.php
│ │ └── Transformer.php
│ ├── Exceptions/
│ │ ├── GistNotFoundException.php
│ │ └── Handler.php
│ ├── Gists/
│ │ ├── Comment.php
│ │ ├── File.php
│ │ ├── FileCollection.php
│ │ ├── GistClient.php
│ │ ├── GistConfig.php
│ │ ├── Gistlog.php
│ │ └── GistlogRepository.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Auth/
│ │ │ │ ├── AuthController.php
│ │ │ │ ├── ConfirmPasswordController.php
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ └── ResetPasswordController.php
│ │ │ ├── AuthorsController.php
│ │ │ ├── AuthorsRssController.php
│ │ │ ├── Controller.php
│ │ │ ├── GistCommentsController.php
│ │ │ ├── GistsController.php
│ │ │ └── HomeController.php
│ │ ├── Kernel.php
│ │ └── Middleware/
│ │ ├── Authenticate.php
│ │ ├── EncryptCookies.php
│ │ ├── PreventRequestsDuringMaintenance.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── TrimStrings.php
│ │ ├── TrustHosts.php
│ │ ├── TrustProxies.php
│ │ └── VerifyCsrfToken.php
│ ├── Jobs/
│ │ └── Command.php
│ ├── Listeners/
│ │ ├── Commands/
│ │ │ └── .gitkeep
│ │ └── Events/
│ │ └── .gitkeep
│ ├── Models/
│ │ └── User.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── AuthorClientServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── ConfigServiceProvider.php
│ │ ├── ContentParserServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ ├── GistClientServiceProvider.php
│ │ ├── GitHubClientServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── Services/
│ └── Registrar.php
├── artisan
├── bin/
│ └── setup.sh
├── bootstrap/
│ ├── app.php
│ └── cache/
│ └── .gitignore
├── composer.json
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cors.php
│ ├── database.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── contributing.md
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ └── .gitkeep
│ ├── migrations/
│ │ ├── .gitkeep
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ └── 2014_10_12_100000_create_password_resets_table.php
│ └── seeders/
│ ├── .gitkeep
│ └── DatabaseSeeder.php
├── nitpick.json
├── package.json
├── phpspec.yml
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── css/
│ │ ├── app.css
│ │ └── landing.css
│ ├── index.php
│ ├── js/
│ │ ├── app.js
│ │ └── commentForm.js
│ ├── mix-manifest.json
│ └── robots.txt
├── readme.md
├── resources/
│ ├── js/
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ └── components/
│ │ ├── GistAuthModal.vue
│ │ ├── GistComment.vue
│ │ ├── GistComments.vue
│ │ ├── GistStar.vue
│ │ └── HomePageTabs.vue
│ ├── lang/
│ │ └── en/
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ ├── less/
│ │ ├── app.less
│ │ ├── github.less
│ │ ├── landing.less
│ │ └── tailwind.less
│ └── views/
│ ├── authors/
│ │ ├── feed.blade.php
│ │ └── show.blade.php
│ ├── components/
│ │ └── alert.blade.php
│ ├── create.blade.php
│ ├── errors/
│ │ ├── 404.blade.php
│ │ └── 503.blade.php
│ ├── gistlogs/
│ │ ├── comment_form.blade.php
│ │ └── show.blade.php
│ ├── landing.blade.php
│ ├── layouts/
│ │ ├── app.blade.php
│ │ ├── error.blade.php
│ │ └── rss.blade.php
│ ├── login.blade.php
│ ├── partials/
│ │ └── flash-messages.blade.php
│ └── vendor/
│ └── .gitkeep
├── routes/
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── server.php
├── storage/
│ ├── .gitignore
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
├── tailwind.config.js
├── tests/
│ ├── BrowserKitTestCase.php
│ ├── CreatesApplication.php
│ ├── Feature/
│ │ ├── AuthTest.php
│ │ ├── AuthorClientTest.php
│ │ ├── AuthorPageTest.php
│ │ ├── CommentTest.php
│ │ ├── ContentParserTest.php
│ │ ├── FileTest.php
│ │ ├── GistClientTest.php
│ │ ├── GistConfigTest.php
│ │ ├── GistlogRepositoryTest.php
│ │ ├── GistlogTest.php
│ │ └── GitHubClientTest.php
│ ├── FixtureGistClient.php
│ ├── GistFixtureHelpers.php
│ ├── SpacePadTransformer.php
│ ├── TestCase.php
│ ├── TrimTransformer.php
│ └── fixtures/
│ └── gists/
│ ├── 002ed429c7c21ab89300/
│ │ └── comments.json
│ ├── 002ed429c7c21ab89300.json
│ ├── 272f372732bf4d69bd0f.json
│ ├── 2c2769b21e512eabdd72.json
│ ├── 8f5ea4d44dbc5ccb77a3.json
│ ├── 9e5ea4d44dbc5ccb77b4.json
│ ├── aac58f02ec1aaaad7f88.json
│ ├── aac5edd61c183dd26392.json
│ └── bb5ea4d44dbc5ccb77s7.json
├── travis.php.ini
└── webpack.mix.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto
================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint
on:
push:
branches: [ main ]
pull_request:
jobs:
phpcs:
name: PHPCS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
extensions: posix, dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-suggest --ignore-platform-reqs
- name: PHPCS lint
uses: chekalsky/phpcs-action@v1
with:
phpcs_bin_path: './vendor/bin/phpcs'
tlint:
name: TLint
continue-on-error: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
extensions: posix, dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none
- name: Install dependencies
run: composer install --no-interaction --no-suggest --ignore-platform-reqs
- name: Tlint Lint
run: vendor/bin/tlint
================================================
FILE: .github/workflows/run-tests.yml
================================================
name: Run Tests
on:
pull_request:
push:
branches: [ main ]
jobs:
test:
name: Run PHPUnit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
extensions: posix, dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none
- name: Copy Laravel .env Configuration for CI
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install dependencies
uses: php-actions/composer@v4
with:
composer_version: 1
args: --prefer-source --no-interaction
- name: Generate key
run: php artisan key:generate
- name: Run PHP Tests
run: vendor/bin/phpunit --exclude needsToken
================================================
FILE: .gitignore
================================================
/node_modules
/vendor
.env
.phpunit.result.cache
.php_cs.cache
================================================
FILE: .phpcs.xml.dist
================================================
<?xml version="1.0"?>
<ruleset>
<file>app</file>
<file>config</file>
<file>database</file>
<file>resources</file>
<file>routes</file>
<file>tests</file>
<rule ref="Tighten"/>
</ruleset>
================================================
FILE: .travis.yml
================================================
language: php
php:
- 7.4
env:
- TRAVIS=true
before_script:
- phpenv config-add travis.php.ini
- composer install --prefer-source --no-interaction
script: ./vendor/bin/phpunit
================================================
FILE: app/Authors/Author.php
================================================
<?php
namespace App\Authors;
use App\Gists\Gistlog;
use Illuminate\Support\Arr;
class Author
{
public const ANONYMOUS_USERNAME = 'anonymous';
public const ANONYMOUS_AVATAR_URL = 'https://avatars3.githubusercontent.com/u/148100?v=3&s=400';
public $id;
public $avatarUrl;
public $link;
public $name;
public $username;
public $bio;
/**
* @var Collection
*/
public $gists;
/**
* @param array|ArrayAccess $gitHubUser
* @param array|ArrayAccess $gitHubGists
* @return Author
*/
public static function fromGitHub($gitHubUser, $gitHubGists = [])
{
$author = new self();
$author->id = $gitHubUser['id'];
$author->avatarUrl = $gitHubUser['avatar_url'];
$author->link = $gitHubUser['html_url'];
$author->name = Arr::get($gitHubUser, 'name');
$author->username = $gitHubUser['login'];
$author->bio = $gitHubUser['bio'];
$author->gists = collect($gitHubGists)->map(function ($gist) {
return Gistlog::fromGitHub($gist);
});
return $author;
}
public static function getAnonymous()
{
$author = new self();
$author->id = 0;
$author->avatarUrl = self::ANONYMOUS_AVATAR_URL;
$author->link = 'https://github.com/' . self::ANONYMOUS_USERNAME;
$author->name = 'anonymous';
$author->username = self::ANONYMOUS_USERNAME;
$author->gists = collect([]);
$author->bio = null;
return $author;
}
/**
* @return bool
*/
public function hasGists()
{
return $this->gists->count() > 0;
}
}
================================================
FILE: app/Authors/AuthorClient.php
================================================
<?php
namespace App\Authors;
use App\CachesGitHubResponses;
use App\Gists\GistClient;
use Exception;
use Github\Client as GitHubClient;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml;
class AuthorClient
{
use CachesGitHubResponses;
/**
* @var GitHubClient
*/
private $github;
/**
* @var GistClient
*/
private $gistClient;
public function __construct(GitHubClient $github, GistClient $gistClient)
{
$this->github = $github;
$this->gistClient = $gistClient;
}
public function getGitHubClient(): GitHubClient
{
return $this->github;
}
public function getGistClient(): GistClient
{
return $this->gistClient;
}
public function getAuthor(string $authorSlug): array
{
return Cache::remember(self::cacheKey(__METHOD__, $authorSlug), $this->cacheLength, function () use ($authorSlug) {
try {
return $this->github->api('users')->show($authorSlug);
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
});
}
public function getAuthorGists(string $username): array
{
return Cache::remember(self::cacheKey(__METHOD__, $username), $this->cacheLength, function () use ($username) {
return $this->github->api('users')->gists($username);
});
}
public function getAuthorPublishableGists(string $username): array
{
$gists = $this->getAuthorGists($username);
return array_filter(array_map(function ($gist) {
if ($this->gistIsGistlogPublished($gist)) {
$fullGist = $this->gistClient->getGist($gist['id']);
if (! $this->gistIsDraft($fullGist)) {
return $fullGist;
}
}
}, $gists));
}
private function gistIsDraft(array $gist): bool
{
try {
$config = Yaml::parse($gist['files']['gistlog.yml']['content']);
} catch (ParseException $exception) {
return false;
}
return ! Arr::get($config, 'published', true);
}
private function gistIsGistlogPublished(array $gist): bool
{
return array_key_exists('gistlog.yml', $gist['files']);
}
}
================================================
FILE: app/Authors/AuthorRepository.php
================================================
<?php
namespace App\Authors;
class AuthorRepository
{
/**
* @var AuthorClient
*/
private $authorClient;
public function __construct(AuthorClient $authorClient)
{
$this->authorClient = $authorClient;
}
/**
* @param $username
* @return Author
*/
public function findByUsername($username)
{
$author = $this->authorClient->getAuthor($username);
$gists = $this->authorClient->getAuthorPublishableGists($username);
return Author::fromGitHub($author, $gists);
}
}
================================================
FILE: app/CachesGitHubResponses.php
================================================
<?php
namespace App;
trait CachesGitHubResponses
{
protected $cacheLength = 600;
/**
* @param string $method
* @param string $data
* @return string
*/
public static function cacheKey($method, $data = null)
{
if ($data) {
$method .= "::{$data}";
}
return $method;
}
}
================================================
FILE: app/Console/Commands/Inspire.php
================================================
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
class Inspire extends Command
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'inspire';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Display an inspiring quote';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->comment(PHP_EOL . Inspiring::quote() . PHP_EOL);
}
}
================================================
FILE: app/Console/Kernel.php
================================================
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
}
================================================
FILE: app/ContentParser/ContentParser.php
================================================
<?php
namespace App\ContentParser;
class ContentParser
{
protected $transformers;
public function push(Transformer $transformer)
{
$this->transformers[] = $transformer;
}
public function transform($content)
{
return array_reduce($this->transformers, function ($content, $transformer) {
return $transformer->transform($content);
}, $content);
}
}
================================================
FILE: app/ContentParser/ContentParserFacade.php
================================================
<?php
namespace App\ContentParser;
use Illuminate\Support\Facades\Facade;
class ContentParserFacade extends Facade
{
protected static function getFacadeAccessor()
{
return ContentParser::class;
}
}
================================================
FILE: app/ContentParser/GitHubMarkdownTransformer.php
================================================
<?php
namespace App\ContentParser;
use Github\Client as GitHubClient;
use Illuminate\Support\Facades\Log;
class GitHubMarkdownTransformer implements Transformer
{
private $github;
public function __construct(GitHubClient $github)
{
$this->github = $github;
}
public function transform($content)
{
Log::debug('Calling ' . __METHOD__);
return $this->github->api('markdown')->render($content, 'gfm');
}
}
================================================
FILE: app/ContentParser/MarkdownTransformer.php
================================================
<?php
namespace App\ContentParser;
use Michelf\MarkdownExtra;
class MarkdownTransformer implements Transformer
{
public function transform($content)
{
return MarkdownExtra::defaultTransform($content);
}
}
================================================
FILE: app/ContentParser/Transformer.php
================================================
<?php
namespace App\ContentParser;
interface Transformer
{
public function transform($content);
}
================================================
FILE: app/Exceptions/GistNotFoundException.php
================================================
<?php
namespace App\Exceptions;
use Exception;
class GistNotFoundException extends Exception
{
public $gistId;
public function __construct($gistId, $message)
{
$this->gistId = $gistId;
parent::__construct("Failed to retrieve Gist '{$gistId}': {$message}");
}
}
================================================
FILE: app/Exceptions/Handler.php
================================================
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->renderable(function (GistNotFoundException $e, $request) {
return response()->view('errors.404', [
'username' => request()->route()->parameter('username'),
'gistId' => request()->route()->parameter('gistId'),
], 404);
});
}
}
================================================
FILE: app/Gists/Comment.php
================================================
<?php
namespace App\Gists;
use App\ContentParser\ContentParserFacade as ContentParser;
use Carbon\Carbon;
use Illuminate\Support\Facades\Cache;
class Comment
{
public $gistId;
public $body;
public $author;
public $avatarUrl;
public $id;
/**
* @var Carbon
*/
public $updatedAt;
/**
* @param array|ArrayAccess $githubComment
* @return Comment
*/
public static function fromGitHub($gistId, $githubComment)
{
$comment = new self();
$comment->gistId = $gistId;
$comment->body = $githubComment['body'];
$comment->author = $githubComment['user']['login'];
$comment->avatarUrl = $githubComment['user']['avatar_url'];
$comment->updatedAt = Carbon::parse($githubComment['updated_at']);
$comment->id = $githubComment['id'];
return $comment;
}
/**
* @return string
*/
public function renderHtml()
{
return Cache::remember($this->cacheKey(), 3600, function () {
return ContentParser::transform($this->body);
});
}
public function link()
{
return "https://gist.github.com/{$this->gistId}#gistcomment-{$this->id}";
}
public function cacheKey()
{
return "CommentAsHtml::gist-{$this->gistId}::gist-comment-{$this->id}}";
}
}
================================================
FILE: app/Gists/File.php
================================================
<?php
namespace App\Gists;
use Illuminate\Contracts\Support\Arrayable;
class File implements Arrayable
{
public $name;
public $type;
public $language;
public $url;
public $size;
public $content;
/**
* @param array|ArrayAccess $rawFile
* @return File
*/
public static function fromGitHub($rawFile)
{
$file = new self();
$file->name = $rawFile['filename'];
$file->type = $rawFile['type'];
$file->language = $rawFile['language'];
$file->url = $rawFile['raw_url'];
$file->size = $rawFile['size'];
$file->content = $rawFile['content'];
return $file;
}
/**
* @param array|ArrayAccess $rawFiles
* @return FileCollection
*/
public static function multipleFromGitHub($rawFiles)
{
return new FileCollection($rawFiles);
}
/**
* Get the instance as an array.
*
* @return array
*/
public function toArray()
{
return [
'name' => $this->name,
'type' => $this->type,
'language' => $this->language,
'url' => $this->url,
'size' => $this->size,
'content' => $this->content,
];
}
}
================================================
FILE: app/Gists/FileCollection.php
================================================
<?php
namespace App\Gists;
use App\Gists\File;
use Illuminate\Support\Collection;
class FileCollection extends Collection
{
public function __construct($files)
{
parent::__construct($files);
$this->items = array_map(function ($file) {
if (is_array($file)) {
return File::fromGitHub($file);
}
return $file;
}, $this->items);
}
public function getPostFile(): File
{
$post = $this->first(function ($file, $key) {
return $file->language == 'Markdown';
});
if (! empty($post)) {
return $post;
}
return $this->first();
}
public function getAdditionalFiles(): self
{
$ignoreFiles = ['gistlog.yml', $this->getPostFile()->name];
return $this->filter(function ($file) use ($ignoreFiles) {
return ! in_array($file->name, $ignoreFiles);
});
}
}
================================================
FILE: app/Gists/GistClient.php
================================================
<?php
namespace App\Gists;
use App\CachesGitHubResponses;
use App\Exceptions\GistNotFoundException;
use Exception;
use Github\Client as GitHubClient;
use Github\HttpClient\Message\ResponseMediator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Throwable;
class GistClient
{
use CachesGitHubResponses;
/**
* @var GitHubClient
*/
private $github;
public function __construct(GitHubClient $github)
{
$this->github = $github;
}
public function getGitHubClient(): GitHubClient
{
return $this->github;
}
/**
* @throws GistNotFoundException
*/
public function getGist($gistId): array
{
return Cache::remember(self::cacheKey(__METHOD__, $gistId), $this->cacheLength, function () use ($gistId) {
Log::debug('Calling ' . __METHOD__);
try {
return $this->github->api('gists')->show($gistId);
} catch (Exception $e) {
throw new GistNotFoundException($gistId, $e->getMessage());
}
});
}
public function getGistComments($gistId): array
{
// No cache here so we can have just a single cache layer (post-transformation) to reset when needed
// return Cache::remember(self::cacheKey(__METHOD__, $gistId), $this->cacheLength, function () use ($gistId) {
Log::debug('Calling ' . __METHOD__);
return ResponseMediator::getContent(
$this->github->getHttpClient()->get("/gists/{$gistId}/comments")
);
}
public function postGistComment($gistId, string $comment): array
{
$this->github->authenticate(Auth::user()->token, GitHubClient::AUTH_ACCESS_TOKEN);
$response = $this->github->getHttpClient()->post("gists/{$gistId}/comments", [], json_encode(['body' => $comment]));
return ResponseMediator::getContent($response);
}
public function starGist($gistId)
{
if (Auth::guest()) {
return;
}
if (Auth::check()) {
Cache::forget(self::class . "::starCount::{$gistId}");
$this->github->authenticate(Auth::user()->token, GitHubClient::AUTH_ACCESS_TOKEN);
$this->github->getHttpClient()->put("https://api.github.com/gists/{$gistId}/star", [], json_encode(['body' => '']), ['Content-Length' => 0]);
}
}
public function unstarGist($gistId)
{
if (Auth::guest()) {
return;
}
Cache::forget(self::class . "::starCount::{$gistId}");
$this->github->authenticate(Auth::user()->token, GitHubClient::AUTH_ACCESS_TOKEN);
$this->github->getHttpClient()->delete("https://api.github.com/gists/{$gistId}/star");
}
public function isStarredForUser($gistId): bool
{
if (Auth::guest()) {
return false;
}
// @todo: Consider reworking this to not catch *all* exceptions, but just
// check whether the HTTP status code is 404 (false) or 204 (starred)
try {
$this->github->authenticate(Auth::user()->token, GitHubClient::AUTH_ACCESS_TOKEN);
$this->github->getHttpClient()->get("https://api.github.com/gists/{$gistId}/star");
return true;
} catch (Throwable $e) {
return false;
}
}
public function starCount($gistId)
{
if (Auth::guest()) {
return false;
}
$query = 'query { viewer {login gist(name: "' . $gistId . '") {stargazerCount}}}';
return Cache::remember(self::cacheKey(__METHOD__, $gistId), $this->cacheLength, function () use ($query) {
Log::debug('Calling ' . __METHOD__);
$response = Http::withHeaders([
'Authorization' => 'bearer ' . Auth::user()->token,
'Content-Type' => 'application/json',
])->post('https://api.github.com/graphql', ['query' => $query]);
return $response->json();
});
}
}
================================================
FILE: app/Gists/GistConfig.php
================================================
<?php
namespace App\Gists;
use ArrayAccess;
use Carbon\Carbon;
use ErrorException;
use Illuminate\Support\Arr;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml;
class GistConfig implements ArrayAccess
{
/**
* @var array
*/
public $settings = [];
/**
* @var array
*/
private $defaultSettings = [
'published' => false,
'published_on' => null,
'preview' => null,
'include_files' => false,
];
/**
* @var array
*/
private $dates = ['published_on'];
public static function fromGitHub($githubGist): self
{
$config = new self();
$config->settings = $config->defaultSettings;
if (! array_key_exists('gistlog.yml', $githubGist['files'])) {
return $config;
}
try {
$userSettings = Yaml::parse($githubGist['files']['gistlog.yml']['content']);
} catch (ParseException $exception) {
$userSettings = null;
}
if (! is_array($userSettings)) {
return $config;
}
foreach ($config->defaultSettings as $setting => $defaultValue) {
$config->settings[$setting] = Arr::get($userSettings, $setting, $defaultValue);
}
foreach ($config->dates as $setting) {
if (is_null($config->settings[$setting])) {
continue;
}
try {
$config->settings[$setting] = Carbon::createFromTimestamp($config->settings[$setting]);
// @todo is there a cleaner way to do this?
if ($config->settings[$setting]->format('Y-m-d') === '1970-01-01') {
$config->settings[$setting] = null;
}
} catch (ErrorException $e) {
$config->settings[$setting] = null;
}
}
return $config;
}
public function offsetExists($setting): bool
{
return isset($this->settings[$setting]);
}
public function offsetGet($setting)
{
return $this->settings[$setting];
}
public function offsetSet($setting, $value)
{
Arr::set($this->settings, $setting, $value);
}
public function offsetUnset($setting)
{
Arr::set($this->settings, $setting, null);
}
}
================================================
FILE: app/Gists/Gistlog.php
================================================
<?php
namespace App\Gists;
use App\Authors\Author;
use App\ContentParser\ContentParserFacade as ContentParser;
use App\Gists\File;
use Carbon\Carbon;
use Illuminate\Support\Facades\Cache;
class Gistlog
{
public $id;
public $title;
public $content;
public $language;
public $author;
public $avatarUrl;
public $link;
public $config;
public $files;
public $commentCount;
private $public;
/**
* @var Carbon
*/
public $createdAt;
/**
* @var Carbon
*/
public $updatedAt;
/**
* @param array|ArrayAccess $githubGist
* @return Gistlog
*/
public static function fromGitHub($githubGist): Gistlog
{
$gistlog = new self();
$files = File::multipleFromGitHub($githubGist['files']);
$postFile = $files->getPostFile();
$gistlog->id = $githubGist['id'];
$gistlog->title = $githubGist['description'];
$gistlog->content = $postFile->content;
$gistlog->language = $postFile->language;
$gistlog->link = $githubGist['html_url'];
$gistlog->public = $githubGist['public'];
$gistlog->createdAt = Carbon::parse($githubGist['created_at']);
$gistlog->updatedAt = Carbon::parse($githubGist['updated_at']);
$gistlog->commentCount = $githubGist['comments'];
if (isset($githubGist['owner'])) {
$gistlog->author = $githubGist['owner']['login'];
$gistlog->avatarUrl = $githubGist['owner']['avatar_url'];
} else {
$gistlog->author = Author::ANONYMOUS_USERNAME;
$gistlog->avatarUrl = Author::ANONYMOUS_AVATAR_URL;
}
$gistlog->config = GistConfig::fromGitHub($githubGist);
$gistlog->files = $gistlog->showFiles() ? $files->getAdditionalFiles() : new FileCollection([]);
return $gistlog;
}
public function renderHtml(): string
{
if ($this->language === 'Markdown') {
return $this->renderMarkdown();
}
return '<pre><code>' . htmlspecialchars($this->content) . "\n</code></pre>";
}
public function hasPublishedOnDate(): bool
{
return ! is_null($this->config['published_on']);
}
public function isPublic(): bool
{
return $this->public;
}
/**
* @return bool
*/
public function isSecret()
{
return ! $this->isPublic();
}
/**
* @return bool
*/
public function isAnonymous()
{
return $this->author === Author::ANONYMOUS_USERNAME;
}
public function formattedPublishedOnDate()
{
return $this->config['published_on']->diffForHumans();
}
public function getPreview()
{
if (! is_null($this->config['preview'])) {
return $this->config['preview'];
}
$body = strip_tags($this->renderHtml());
if (strlen($body) < 200) {
return $body;
}
return substr($body, 0, strpos($body, ' ', 200));
}
public function showFiles()
{
return $this->config['include_files'];
}
public function localUrl()
{
return route('gists.show', [
'username' => $this->author,
'gistId' => $this->id,
]);
}
private function renderMarkdown()
{
if ($this->updatedAt == Cache::get('markdown.updated_at.' . $this->id)) {
return Cache::get('markdown.' . $this->id);
}
$markdown = ContentParser::transform($this->content);
Cache::forever('markdown.' . $this->id, $markdown);
Cache::forever('markdown.updated_at.' . $this->id, $this->updatedAt);
return $markdown;
}
}
================================================
FILE: app/Gists/GistlogRepository.php
================================================
<?php
namespace App\Gists;
class GistlogRepository
{
/**
* @var GistClient
*/
private $gistClient;
public function __construct(GistClient $gistClient)
{
$this->gistClient = $gistClient;
}
/**
* @param $id
* @return Gistlog
*/
public function findById($id)
{
return Gistlog::fromGitHub(
$this->gistClient->getGist($id)
);
}
/**
* @param string $url
* @return Gistlog
*/
public function findByUrl($url)
{
return $this->findById($this->extractIdFromUrl($url));
}
/**
* @param string $url
* @return string
*/
private function extractIdFromUrl($url)
{
$url = rtrim($url, '/');
return last(explode('/', $url));
}
}
================================================
FILE: app/Http/Controllers/Auth/AuthController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Exception;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\URL;
use Laravel\Socialite\Facades\Socialite;
class AuthController extends Controller
{
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
/**
* Redirect the user to the GitHub authentication page.
*
* @return Response
*/
public function redirectToProvider()
{
session()->flash('redirect_to', URL::previous());
return Socialite::driver('github')
->scopes(['user:email', 'gist'])
->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return Response
*/
public function handleProviderCallback()
{
try {
$user = Socialite::driver('github')->user();
} catch (Exception $e) {
return Redirect::to('auth/github');
}
$authUser = $this->findOrCreateUser($user);
Auth::login($authUser, true);
return redirect(session()->get('redirect_to', '/'));
}
private function findOrCreateUser($user)
{
if ($authUser = User::where('github_id', $user->id)->first()) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'github_id' => $user->id,
'avatar' => $user->avatar,
'token' => $user->token,
]);
}
public function getLogin()
{
return view('login');
}
public function getLogout()
{
Auth::logout();
return redirect('/');
}
}
================================================
FILE: app/Http/Controllers/Auth/ConfirmPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\ConfirmsPasswords;
class ConfirmPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Confirm Password Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password confirmations and
| uses a simple trait to include the behavior. You're free to explore
| this trait and override any functions that require customization.
|
*/
use ConfirmsPasswords;
/**
* Where to redirect users when the intended url fails.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
}
================================================
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
}
================================================
FILE: app/Http/Controllers/Auth/ResetPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
}
================================================
FILE: app/Http/Controllers/AuthorsController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Authors\AuthorRepository;
use Exception;
use Illuminate\Support\Facades\View;
class AuthorsController extends Controller
{
/**
* @var AuthorRepository
*/
private $repository;
public function __construct(AuthorRepository $repository)
{
$this->repository = $repository;
}
public function show($username)
{
try {
$author = $this->repository->findByUsername($username);
} catch (Exception $e) {
abort(404);
}
if ($author->gists->isEmpty()) {
return redirect("https://github.com/{$username}");
}
return View::make('authors.show')
->with('author', $author)
->with('pageTitle', "{$author->name} (@{$author->username})");
}
}
================================================
FILE: app/Http/Controllers/AuthorsRssController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Authors\AuthorRepository;
class AuthorsRssController extends Controller
{
/**
* @var AuthorRepository
*/
private $repository;
public function __construct(AuthorRepository $repository)
{
$this->repository = $repository;
}
public function show($username)
{
$author = $this->repository->findByUsername($username);
return response(
view('authors.feed')->with('author', $author)
)->header('Content-Type', 'text/xml');
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use DispatchesJobs;
use ValidatesRequests;
}
================================================
FILE: app/Http/Controllers/GistCommentsController.php
================================================
<?php
namespace App\Http\Controllers;
use App\ContentParser\ContentParserFacade;
use App\Gists\GistClient;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class GistCommentsController extends Controller
{
/**
* @var GistClient
*/
private $gistClient;
public function __construct(GistClient $gistClient)
{
$this->gistClient = $gistClient;
}
public function jsonIndex($username, $gistId)
{
$comments = Cache::remember("GistCommentsWithHtml::{$gistId}", 1800, function () use ($gistId) {
return collect($this->gistClient->getGistComments($gistId))->map(function ($comment) {
$comment['body_html'] = ContentParserFacade::transform($comment['body']);
return $comment;
})->all();
});
return response()->json($comments);
}
public function store(Request $request, GistClient $client, $gistId)
{
$request->validate(['comment' => 'required']);
$client->postGistComment($gistId, $request->get('comment'));
Cache::forget("GistCommentsWithHtml::{$gistId}");
return redirect()->back();
}
}
================================================
FILE: app/Http/Controllers/GistsController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Exceptions\GistNotFoundException;
use App\Gists\GistClient;
use App\Gists\GistlogRepository;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Throwable;
class GistsController extends Controller
{
private $repository;
public function __construct(GistlogRepository $repository)
{
$this->repository = $repository;
}
public function storeAndRedirect(Request $request)
{
$gistUrl = $request->get('gistUrl');
try {
$gistlog = $this->repository->findByUrl($gistUrl);
} catch (InvalidUrlException $e) {
Session::flash('error-message', 'Please enter a valid Gist URL.');
return Redirect::back();
} catch (GistNotFoundException $e) {
Session::flash('error-message', 'Please enter a valid Gist URL.');
return Redirect::back();
}
return Redirect::route('gists.show', [
'username' => $gistlog->author,
'gistId' => $gistlog->id,
]);
}
public function show($username, $gistId, GistClient $gistClient)
{
try {
$gistlog = $this->repository->findById($gistId);
} catch (GistNotFoundException $e) {
abort(404, 'Gist not found');
}
if ($username !== $gistlog->author) {
return Redirect::route('gists.show', [
'username' => $gistlog->author,
'gistId' => $gistlog->id,
]);
}
return View::make('gistlogs.show')
->with('gistlog', $gistlog)
->with('pageTitle', $gistlog->title . ' | ' . $gistlog->author)
->with('isStarredForUser', $gistClient->isStarredForUser($gistId));
}
protected function star(GistClient $client, $gistId)
{
try {
$client->starGist($gistId);
return response()->json([
'success' => true,
], 200);
} catch (Throwable $e) {
return response()->json([
'success' => false,
], 500);
}
}
protected function unstar(GistClient $client, $gistId)
{
try {
$client->unstarGist($gistId);
return response()->json([
'success' => true,
], 200);
} catch (Throwable $e) {
return response()->json([
'success' => false,
], 500);
}
}
public function starCount(GistClient $client, $gistId)
{
return $client->starCount($gistId);
}
}
================================================
FILE: app/Http/Controllers/HomeController.php
================================================
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function index()
{
return view('landing');
}
public function createForm()
{
return view('create');
}
}
================================================
FILE: app/Http/Kernel.php
================================================
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\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\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\Authenticate::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
}
================================================
FILE: app/Http/Middleware/Authenticate.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}
================================================
FILE: app/Http/Middleware/EncryptCookies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}
================================================
FILE: app/Http/Middleware/TrustHosts.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}
================================================
FILE: app/Http/Middleware/TrustProxies.php
================================================
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
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;
}
================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Jobs/Command.php
================================================
<?php
namespace App\Jobs;
abstract class Command
{
//
}
================================================
FILE: app/Listeners/Commands/.gitkeep
================================================
================================================
FILE: app/Listeners/Events/.gitkeep
================================================
================================================
FILE: app/Models/User.php
================================================
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'github_id', 'avatar', 'token',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
//
}
public function register()
{
// @todo is this necessary anymore? Feels like no?
$this->app->bind(
'Illuminate\Contracts\Auth\Registrar',
\App\Services\Registrar::class
);
}
}
================================================
FILE: app/Providers/AuthServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
================================================
FILE: app/Providers/AuthorClientServiceProvider.php
================================================
<?php
namespace App\Providers;
use App\Authors\AuthorClient;
use App\Gists\GistClient;
use Github\Client as GitHubClient;
use Illuminate\Support\ServiceProvider;
class AuthorClientServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(AuthorClient::class, function ($app) {
$githubClient = new GitHubClient();
// Again, we're only making public API requests, so we don't *need* to
// authenticate, but doing so significantly increases the rate limit.
// So here we authenticate if credentials are provided, but if not,
// no big deal.
if (config('services.github.client_id') && config('services.github.client_secret')) {
$githubClient->authenticate(
config('services.github.client_id'),
config('services.github.client_secret'),
GitHubClient::AUTH_CLIENT_ID
);
}
return new AuthorClient($githubClient, app(GistClient::class));
});
}
}
================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
================================================
FILE: app/Providers/ConfigServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ConfigServiceProvider extends ServiceProvider
{
/**
* Overwrite any vendor / package configuration.
*
* This service provider is intended to provide a convenient location for you
* to overwrite any "vendor" or package configuration that you may want to
* modify before the application handles the incoming request / command.
*
* @return void
*/
public function register()
{
config([
//
]);
}
}
================================================
FILE: app/Providers/ContentParserServiceProvider.php
================================================
<?php
namespace App\Providers;
use App\ContentParser\ContentParser;
use App\ContentParser\GitHubMarkdownTransformer;
use Illuminate\Support\ServiceProvider;
class ContentParserServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton(ContentParser::class, function ($app) {
$parser = new ContentParser();
$parser->push($app[GitHubMarkdownTransformer::class]);
return $parser;
});
}
}
================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}
================================================
FILE: app/Providers/GistClientServiceProvider.php
================================================
<?php
namespace App\Providers;
use App\Gists\GistClient;
use Github\Client as GitHubClient;
use Illuminate\Support\ServiceProvider;
class GistClientServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(GistClient::class, function ($app) {
$githubClient = new GitHubClient();
// We're only making public API requests, so we don't *need* to
// authenticate, but doing so significantly increases the rate
// limit. So here we authenticate if credentials are provided,
// but if they aren't, no big deal.
if (config('services.github.client_id') && config('services.github.client_secret')) {
$githubClient->authenticate(
config('services.github.client_id'),
config('services.github.client_secret'),
GitHubClient::AUTH_CLIENT_ID
);
}
return new GistClient($githubClient);
});
}
}
================================================
FILE: app/Providers/GitHubClientServiceProvider.php
================================================
<?php
namespace App\Providers;
use Github\Client;
use Illuminate\Support\ServiceProvider;
class GitHubClientServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(Client::class, function ($app) {
$githubClient = new Client();
// We're only making public API requests, so we don't *need* to
// authenticate, but doing so significantly increases the rate
// limit. So here we authenticate if credentials are provided,
// but if they aren't, no big deal.
if (config('services.github.client_id') && config('services.github.client_secret')) {
$githubClient->authenticate(
config('services.github.client_id'),
config('services.github.client_secret'),
Client::AUTH_CLIENT_ID
);
}
return $githubClient;
});
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/home';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}
================================================
FILE: app/Services/Registrar.php
================================================
<?php
namespace App\Services;
use App\Models\User;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
use Illuminate\Support\Facades\Hash;
use Validator;
class Registrar implements RegistrarContract
{
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
public function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bin/setup.sh
================================================
#!/bin/bash
cp .env.example .env
composer install
php artisan key:generate
npm install
npm run dev
echo ""
echo "Remember to customize .env.example, and create a new GitHub app and token (see readme)"
================================================
FILE: bootstrap/app.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
'Illuminate\Contracts\Http\Kernel',
\App\Http\Kernel::class
);
$app->singleton(
'Illuminate\Contracts\Console\Kernel',
\App\Console\Kernel::class
);
$app->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler',
\App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;
================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore
================================================
FILE: composer.json
================================================
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "^8.83",
"laravel/socialite": "^5.5",
"michelf/php-markdown": "^1.9",
"knplabs/github-api": "^3.7",
"symfony/yaml": "~5.0",
"php": "^7.4|^8.0",
"laravel/tinker": "^2.5",
"fideloper/proxy": "^4.4",
"laravel/ui": "^3.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"http-interop/http-factory-guzzle": "^1.2",
"tightenco/ziggy": "^1.4",
"bugsnag/bugsnag-laravel": "^2.24"
},
"require-dev": {
"phpunit/phpunit": "^9.5.10",
"laravel/browser-kit-testing": "^6.3",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^5.10",
"facade/ignition": "^2.5",
"tightenco/duster": "^0.3.0",
"fakerphp/faker": "^1.9.1"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Tests\\": "tests/"
}
},
"autoload-dev": {
"classmap": [
"tests/GistFixtureHelpers.php",
"tests/BrowserKitTestCase.php",
"tests/FixtureGistClient.php",
"tests/SpacePadTransformer.php",
"tests/TrimTransformer.php"
]
},
"scripts": {
"post-create-project-cmd": [
"@php -r \"copy('.env.example', '.env');\"",
"@php artisan key:generate --ansi"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
]
},
"config": {
"preferred-install": "dist",
"optimize-autoloader": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
================================================
FILE: config/app.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'Laravel'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL', null),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
Laravel\Socialite\SocialiteServiceProvider::class,
Bugsnag\BugsnagLaravel\BugsnagServiceProvider::class,
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\AuthorClientServiceProvider::class,
App\Providers\GistClientServiceProvider::class,
App\Providers\ContentParserServiceProvider::class,
App\Providers\GitHubClientServiceProvider::class,
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Http' => Illuminate\Support\Facades\Http::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
];
================================================
FILE: config/auth.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expire time is the number of minutes that the reset token should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => 10800,
];
================================================
FILE: config/broadcasting.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "ably", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
'ably' => [
'driver' => 'ably',
'key' => env('ABLY_KEY'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
================================================
FILE: config/cache.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
| Supported drivers: "apc", "array", "database", "file",
| "memcached", "redis", "dynamodb", "null"
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
'lock_connection' => null,
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache',
'lock_connection' => 'default',
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'),
];
================================================
FILE: config/cors.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Cross-Origin Resource Sharing (CORS) Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your settings for cross-origin resource sharing
| or "CORS". This determines what cross-origin operations may execute
| in web browsers. You are free to adjust these settings as needed.
|
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
================================================
FILE: config/database.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer body of commands than a typical key-value system
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
],
];
================================================
FILE: config/filesystems.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
'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'),
],
],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
*/
'links' => [
public_path('storage') => storage_path('app/public'),
],
];
================================================
FILE: config/hashing.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon", "argon2id"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 1024,
'threads' => 2,
'time' => 2,
],
];
================================================
FILE: config/logging.php
================================================
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'bugsnag'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => SyslogUdpHandler::class,
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
],
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
'bugsnag' => [
'driver' => 'bugsnag',
],
],
];
================================================
FILE: config/mail.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
================================================
FILE: config/queue.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for every one. Here you may define a default connection.
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
'after_commit' => false,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
'block_for' => 0,
'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'token' => env('GITHUB_TOKEN'),
'redirect' => env('GITHUB_URL'),
],
];
================================================
FILE: config/session.php
================================================
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION', null),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| While using one of the framework's cache driven session backends you may
| list a cache store that should be used for these sessions. This value
| must match with one of the application's configured cache "stores".
|
| Affects: "apc", "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE', null),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_') . '_session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" since this is a secure default value.
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => 'lax',
];
================================================
FILE: config/view.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];
================================================
FILE: contributing.md
================================================
## Contributing
We welcome contributions! We ask you to follow a few guidelines when making a contribution:
- [Follow PSR-2](http://www.php-fig.org/psr/psr-2/)
- Four spaces for indentation
- Alphabetize CSS property names
### Branching
When making a pull request, please code your feature on a feature branch.
```command-line
feature/feature-name
```
When you are ready, tag @mattstauffer for a review. Your code needs to be tested with PHPUnit prior to making the pull
request. To run the PHPUnit suite on your tests run
```command-line
./vendor/bin/phpunit
```
If you are looking for something to contribute, please look at our issues. There you can post ideas, pick up features others have requested, or help another developer in need of some guidance.
Happy coding!
================================================
FILE: database/.gitignore
================================================
*.sqlite
================================================
FILE: database/factories/.gitkeep
================================================
================================================
FILE: database/migrations/.gitkeep
================================================
================================================
FILE: database/migrations/2014_10_12_000000_create_users_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('github_id')->unique();
$table->string('name')->nullable();
$table->string('email')->nullable();
$table->string('avatar');
$table->string('token');
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
}
================================================
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
================================================
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration
{
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index();
$table->string('token')->index();
$table->timestamp('created_at')->nullable();
});
}
public function down()
{
Schema::drop('password_resets');
}
}
================================================
FILE: database/seeders/.gitkeep
================================================
================================================
FILE: database/seeders/DatabaseSeeder.php
================================================
<?php
namespace Database\Seeders;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
// $this->call('UserTableSeeder');
}
}
================================================
FILE: nitpick.json
================================================
{
"ignore": [
"tests/*",
"database/*"
]
}
================================================
FILE: package.json
================================================
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production"
},
"devDependencies": {
"autoprefixer": "^10.2.5",
"autosize": "^4.0.2",
"axios": "^0.21.2",
"browser-sync": "^2.27.11",
"browser-sync-webpack-plugin": "^2.2.2",
"laravel-mix": "^6.0.49",
"less": "^4.1.1",
"less-loader": "^8.0.0",
"moment": "^2.29.4",
"postcss": "^8.4.20",
"postcss-import": "^12.0.1",
"purify-css": "^1.2.5",
"purifycss-webpack": "^0.7.0",
"tailwindcss": "^2.0.3",
"vue": "^2.6.12",
"vue-loader": "^15.10.1",
"vue-template-compiler": "^2.6.11"
},
"prettier": {
"singleQuote": true,
"trailingComma": "es5",
"tabWidth": 4,
"printWidth": 80
}
}
================================================
FILE: phpspec.yml
================================================
suites:
main:
namespace: Gistlog
psr4_prefix: Gistlog
src_path: app
================================================
FILE: phpunit.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true">
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<testsuites>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>
================================================
FILE: public/.htaccess
================================================
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
================================================
FILE: public/css/app.css
================================================
/**
* This injects Tailwind's base styles, which is a combination of
* Normalize.css and some additional base styles.
*
* You can see the styles here:
* https://github.com/tailwindcss/tailwindcss/blob/master/css/preflight.css
*
* If using `postcss-import`, you should import this line from it's own file:
*
* @import "./tailwind-preflight.css";
*
* See: https://github.com/tailwindcss/tailwindcss/issues/53#issuecomment-341413622
*/
/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com
*/
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
/*
Document
========
*/
/**
Use a better box model (opinionated).
*/
*,
::before,
::after {
box-sizing: border-box;
}
/**
Use a more readable tab size (opinionated).
*/
html {
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
}
/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/*
Sections
========
*/
/**
Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/
body {
font-family:
system-ui,
-apple-system, /* Firefox supports this but not yet `system-ui` */
'Segoe UI',
Roboto,
Helvetica,
Arial,
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji';
}
/*
Grouping content
================
*/
/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/
hr {
height: 0; /* 1 */
color: inherit; /* 2 */
}
/*
Text-level semantics
====================
*/
/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
/**
Add the correct font weight in Edge and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
font-family:
ui-monospace,
SFMono-Regular,
Consolas,
'Liberation Mono',
Menlo,
monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/*
Tabular data
============
*/
/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/
table {
text-indent: 0; /* 1 */
border-color: inherit; /* 2 */
}
/*
Forms
=====
*/
/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button;
}
/**
Remove the inner border and padding in Firefox.
*/
::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
Restore the focus styles unset by the previous rule.
*/
:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/
:-moz-ui-invalid {
box-shadow: none;
}
/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/
legend {
padding: 0;
}
/**
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/**
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/*
Interactive
===========
*/
/*
Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}
/**
* Manually forked from SUIT CSS Base: https://github.com/suitcss/base
* A thin layer on top of normalize.css that provides a starting point more
* suitable for web applications.
*/
/**
* Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
margin: 0;
}
button {
background-color: transparent;
background-image: none;
}
/**
* Work around a Firefox/IE bug where the transparent `button` background
* results in a loss of the default `button` focus styles.
*/
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
fieldset {
margin: 0;
padding: 0;
}
ol,
ul {
list-style: none;
margin: 0;
padding: 0;
}
/**
* Tailwind custom reset styles
*/
/**
* 1. Use the user's configured `sans` font-family (with Tailwind's default
* sans-serif font stack as a fallback) as a sane default.
* 2. Use Tailwind's default "normal" line-height so the user isn't forced
* to override it to ensure consistency even when using the default theme.
*/
html {
font-family: Roboto, system-ui, BlinkMacSystemFont, -apple-system, "Segoe UI", Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
line-height: 1.5; /* 2 */
}
/**
* Inherit font-family and line-height from `html` so users can set them as
* a class directly on the `html` element.
*/
body {
font-family: inherit;
line-height: inherit;
}
/**
* 1. Prevent padding and border from affecting element width.
*
* We used to set this in the html element and inherit from
* the parent element for everything else. This caused issues
* in shadow-dom-enhanced elements like <details> where the content
* is wrapped by a div with box-sizing set to `content-box`.
*
* https://github.com/mozdevs/cssremedy/issues/4
*
*
* 2. Allow adding a border to an element by just adding a border-width.
*
* By default, the way the browser specifies that an element should have no
* border is by setting it's border-style to `none` in the user-agent
* stylesheet.
*
* In order to easily add borders to elements by just setting the `border-width`
* property, we change the default border-style for all elements to `solid`, and
* use border-width to hide them instead. This way our `border` utilities only
* need to set the `border-width` property instead of the entire `border`
* shorthand, making our border utilities much more straightforward to compose.
*
* https://github.com/tailwindcss/tailwindcss/pull/116
*/
*,
::before,
::after {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: currentColor; /* 2 */
}
/*
* Ensure horizontal rules are visible by default
*/
hr {
border-top-width: 1px;
}
/**
* Undo the `border-style: none` reset that Normalize applies to images so that
* our `border-{width}` utilities have the expected effect.
*
* The Normalize reset is unnecessary for us since we default the border-width
* to 0 on all elements.
*
* https://github.com/tailwindcss/tailwindcss/issues/362
*/
img {
border-style: solid;
}
textarea {
resize: vertical;
}
input::-moz-placeholder, textarea::-moz-placeholder {
opacity: 1;
color: #9ca3af;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
opacity: 1;
color: #9ca3af;
}
input::placeholder,
textarea::placeholder {
opacity: 1;
color: #9ca3af;
}
button,
[role="button"] {
cursor: pointer;
}
table {
border-collapse: collapse;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit;
}
/**
* Reset links to optimize for opt-in styling instead of
* opt-out.
*/
a {
color: inherit;
text-decoration: inherit;
}
/**
* Reset form element properties that are easy to forget to
* style explicitly so you don't inadvertently introduce
* styles that deviate from your design system. These styles
* supplement a partial reset that is already applied by
* normalize.css.
*/
button,
input,
optgroup,
select,
textarea {
padding: 0;
line-height: inherit;
color: inherit;
}
/**
* Use the configured 'mono' font family for elements that
* are expected to be rendered with a monospace font, falling
* back to the system monospace stack if there is no configured
* 'mono' font family.
*/
pre,
code,
kbd,
samp {
font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
/**
* 1. Make replaced elements `display: block` by default as that's
* the behavior you want almost all of the time. Inspired by
* CSS Remedy, with `svg` added as well.
*
* https://github.com/mozdevs/cssremedy/issues/14
*
* 2. Add `vertical-align: middle` to align replaced elements more
* sensibly by default when overriding `display` by adding a
* utility like `inline`.
*
* This can trigger a poorly considered linting error in some
* tools but is included by design.
*
* https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
display: block; /* 1 */
vertical-align: middle; /* 2 */
}
/**
* Constrain images and videos to the parent width and preserve
* their intrinsic aspect ratio.
*
* https://github.com/mozdevs/cssremedy/issues/14
*/
img,
video {
max-width: 100%;
height: auto;
}
*, ::before, ::after {
border-color: currentColor;
}
/**
* Here you would add any of your custom component classes; stuff that you'd
* want loaded *before* the utilities so that the utilities could still
* override them.
*
* Example:
*
* .btn { ... }
* .form-input { ... }
*
* Or if using a preprocessor or `postcss-import`:
*
* @import "components/buttons";
* @import "components/forms";
*/
.container {
width: 100%;
}
@media (min-width: 640px) {
.container {
max-width: 640px;
}
}
@media (min-width: 768px) {
.container {
max-width: 768px;
}
}
@media (min-width: 1024px) {
.container {
max-width: 1024px;
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px;
}
}
@media (min-width: 1536px) {
.container {
max-width: 1536px;
}
}
/**
* This injects all of Tailwind's utility classes, generated based on your
* config file.
*
* If using `postcss-import`, you should import this line from it's own file:
*
* @import "./tailwind-utilities.css";
*
* See: https://github.com/tailwindcss/tailwindcss/issues/53#issuecomment-341413622
*/
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.not-sr-only {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.focus-within\:sr-only:focus-within {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.focus-within\:not-sr-only:focus-within {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.focus\:sr-only:focus {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.focus\:not-sr-only:focus {
position: static;
width: auto;
height: auto;
padding: 0;
margin: 0;
overflow: visible;
clip: auto;
white-space: normal;
}
.pointer-events-none {
pointer-events: none;
}
.pointer-events-auto {
pointer-events: auto;
}
.visible {
visibility: visible;
}
.invisible {
visibility: hidden;
}
.static {
position: static;
}
.fixed {
position: fixed;
}
.absolute {
position: absolute;
}
.relative {
position: relative;
}
.sticky {
position: sticky;
}
.inset-0 {
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.inset-auto {
top: auto;
right: auto;
bottom: auto;
left: auto;
}
.inset-x-0 {
left: 0;
right: 0;
}
.inset-x-auto {
left: auto;
right: auto;
}
.inset-y-0 {
top: 0;
bottom: 0;
}
.inset-y-auto {
top: auto;
bottom: auto;
}
.top-0 {
top: 0;
}
.top-auto {
top: auto;
}
.right-0 {
right: 0;
}
.right-auto {
right: auto;
}
.bottom-0 {
bottom: 0;
}
.bottom-auto {
bottom: auto;
}
.left-0 {
left: 0;
}
.left-auto {
left: auto;
}
.isolate {
isolation: isolate;
}
.isolation-auto {
isolation: auto;
}
.z-0 {
z-index: 0;
}
.z-10 {
z-index: 10;
}
.z-20 {
z-index: 20;
}
.z-30 {
z-index: 30;
}
.z-40 {
z-index: 40;
}
.z-50 {
z-index: 50;
}
.z-auto {
z-index: auto;
}
.focus-within\:z-0:focus-within {
z-index: 0;
}
.focus-within\:z-10:focus-within {
z-index: 10;
}
.focus-within\:z-20:focus-within {
z-index: 20;
}
.focus-within\:z-30:focus-within {
z-index: 30;
}
.focus-within\:z-40:focus-within {
z-index: 40;
}
.focus-within\:z-50:focus-within {
z-index: 50;
}
.focus-within\:z-auto:focus-within {
z-index: auto;
}
.focus\:z-0:focus {
z-index: 0;
}
.focus\:z-10:focus {
z-index: 10;
}
.focus\:z-20:focus {
z-index: 20;
}
.focus\:z-30:focus {
z-index: 30;
}
.focus\:z-40:focus {
z-index: 40;
}
.focus\:z-50:focus {
z-index: 50;
}
.focus\:z-auto:focus {
z-index: auto;
}
.order-1 {
order: 1;
}
.order-2 {
order: 2;
}
.order-3 {
order: 3;
}
.order-4 {
order: 4;
}
.order-5 {
order: 5;
}
.order-6 {
order: 6;
}
.order-7 {
order: 7;
}
.order-8 {
order: 8;
}
.order-9 {
order: 9;
}
.order-10 {
order: 10;
}
.order-11 {
order: 11;
}
.order-12 {
order: 12;
}
.order-first {
order: -9999;
}
.order-last {
order: 9999;
}
.order-none {
order: 0;
}
.col-auto {
grid-column: auto;
}
.col-span-1 {
grid-column: span 1 / span 1;
}
.col-span-2 {
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.col-span-4 {
grid-column: span 4 / span 4;
}
.col-span-5 {
grid-column: span 5 / span 5;
}
.col-span-6 {
grid-column: span 6 / span 6;
}
.col-span-7 {
grid-column: span 7 / span 7;
}
.col-span-8 {
grid-column: span 8 / span 8;
}
.col-span-9 {
grid-column: span 9 / span 9;
}
.col-span-10 {
grid-column: span 10 / span 10;
}
.col-span-11 {
grid-column: span 11 / span 11;
}
.col-span-12 {
grid-column: span 12 / span 12;
}
.col-span-full {
grid-column: 1 / -1;
}
.col-start-1 {
grid-column-start: 1;
}
.col-start-2 {
grid-column-start: 2;
}
.col-start-3 {
grid-column-start: 3;
}
.col-start-4 {
grid-column-start: 4;
}
.col-start-5 {
grid-column-start: 5;
}
.col-start-6 {
grid-column-start: 6;
}
.col-start-7 {
grid-column-start: 7;
}
.col-start-8 {
grid-column-start: 8;
}
.col-start-9 {
grid-column-start: 9;
}
.col-start-10 {
grid-column-start: 10;
}
.col-start-11 {
grid-column-start: 11;
}
.col-start-12 {
grid-column-start: 12;
}
.col-start-13 {
grid-column-start: 13;
}
.col-start-auto {
grid-column-start: auto;
}
.col-end-1 {
grid-column-end: 1;
}
.col-end-2 {
grid-column-end: 2;
}
.col-end-3 {
grid-column-end: 3;
}
.col-end-4 {
grid-column-end: 4;
}
.col-end-5 {
grid-column-end: 5;
}
.col-end-6 {
grid-column-end: 6;
}
.col-end-7 {
grid-column-end: 7;
}
.col-end-8 {
grid-column-end: 8;
}
.col-end-9 {
grid-column-end: 9;
}
.col-end-10 {
grid-column-end: 10;
}
.col-end-11 {
grid-column-end: 11;
}
.col-end-12 {
grid-column-end: 12;
}
.col-end-13 {
grid-column-end: 13;
}
.col-end-auto {
grid-column-end: auto;
}
.row-auto {
grid-row: auto;
}
.row-span-1 {
grid-row: span 1 / span 1;
}
.row-span-2 {
grid-row: span 2 / span 2;
}
.row-span-3 {
grid-row: span 3 / span 3;
}
.row-span-4 {
grid-row: span 4 / span 4;
}
.row-span-5 {
grid-row: span 5 / span 5;
}
.row-span-6 {
grid-row: span 6 / span 6;
}
.row-span-full {
grid-row: 1 / -1;
}
.row-start-1 {
grid-row-start: 1;
}
.row-start-2 {
grid-row-start: 2;
}
.row-start-3 {
grid-row-start: 3;
}
.row-start-4 {
grid-row-start: 4;
}
.row-start-5 {
grid-row-start: 5;
}
.row-start-6 {
grid-row-start: 6;
}
.row-start-7 {
grid-row-start: 7;
}
.row-start-auto {
grid-row-start: auto;
}
.row-end-1 {
grid-row-end: 1;
}
.row-end-2 {
grid-row-end: 2;
}
.row-end-3 {
grid-row-end: 3;
}
.row-end-4 {
grid-row-end: 4;
}
.row-end-5 {
grid-row-end: 5;
}
.row-end-6 {
grid-row-end: 6;
}
.row-end-7 {
grid-row-end: 7;
}
.row-end-auto {
grid-row-end: auto;
}
.float-right {
float: right;
}
.float-left {
float: left;
}
.float-none {
float: none;
}
.clear-left {
clear: left;
}
.clear-right {
clear: right;
}
.clear-both {
clear: both;
}
.clear-none {
clear: none;
}
.m-0 {
margin: 0px;
}
.m-1 {
margin: 0.25rem;
}
.m-2 {
margin: 0.5rem;
}
.m-3 {
margin: 0.75rem;
}
.m-4 {
margin: 1rem;
}
.m-5 {
margin: 1.25rem;
}
.m-6 {
margin: 1.5rem;
}
.m-7 {
margin: 1.75rem;
}
.m-8 {
margin: 2rem;
}
.m-9 {
margin: 2.25rem;
}
.m-10 {
margin: 2.5rem;
}
.m-11 {
margin: 2.75rem;
}
.m-12 {
margin: 3rem;
}
.m-14 {
margin: 3.5rem;
}
.m-16 {
margin: 4rem;
}
.m-20 {
margin: 5rem;
}
.m-24 {
margin: 6rem;
}
.m-28 {
margin: 7rem;
}
.m-32 {
margin: 8rem;
}
.m-36 {
margin: 9rem;
}
.m-40 {
margin: 10rem;
}
.m-44 {
margin: 11rem;
}
.m-48 {
margin: 12rem;
}
.m-52 {
margin: 13rem;
}
.m-56 {
margin: 14rem;
}
.m-60 {
margin: 15rem;
}
.m-64 {
margin: 16rem;
}
.m-72 {
margin: 18rem;
}
.m-80 {
margin: 20rem;
}
.m-96 {
margin: 24rem;
}
.m-auto {
margin: auto;
}
.m-px {
margin: 1px;
}
.m-0\.5 {
margin: 0.125rem;
}
.m-1\.5 {
margin: 0.375rem;
}
.m-2\.5 {
margin: 0.625rem;
}
.m-3\.5 {
margin: 0.875rem;
}
.-m-0 {
margin: 0px;
}
.-m-1 {
margin: -0.25rem;
}
.-m-2 {
margin: -0.5rem;
}
.-m-3 {
margin: -0.75rem;
}
.-m-4 {
margin: -1rem;
}
.-m-5 {
margin: -1.25rem;
}
.-m-6 {
margin: -1.5rem;
}
.-m-7 {
margin: -1.75rem;
}
.-m-8 {
margin: -2rem;
}
.-m-9 {
margin: -2.25rem;
}
.-m-10 {
margin: -2.5rem;
}
.-m-11 {
margin: -2.75rem;
}
.-m-12 {
margin: -3rem;
}
.-m-14 {
margin: -3.5rem;
}
.-m-16 {
margin: -4rem;
}
.-m-20 {
margin: -5rem;
}
.-m-24 {
margin: -6rem;
}
.-m-28 {
margin: -7rem;
}
.-m-32 {
margin: -8rem;
}
.-m-36 {
margin: -9rem;
}
.-m-40 {
margin: -10rem;
}
.-m-44 {
margin: -11rem;
}
.-m-48 {
margin: -12rem;
}
.-m-52 {
margin: -13rem;
}
.-m-56 {
margin: -14rem;
}
.-m-60 {
margin: -15rem;
}
.-m-64 {
margin: -16rem;
}
.-m-72 {
margin: -18rem;
}
.-m-80 {
margin: -20rem;
}
.-m-96 {
margin: -24rem;
}
.-m-px {
margin: -1px;
}
.-m-0\.5 {
margin: -0.125rem;
}
.-m-1\.5 {
margin: -0.375rem;
}
.-m-2\.5 {
margin: -0.625rem;
}
.-m-3\.5 {
margin: -0.875rem;
}
.mx-0 {
margin-left: 0px;
margin-right: 0px;
}
.mx-1 {
margin-left: 0.25rem;
margin-right: 0.25rem;
}
.mx-2 {
margin-left: 0.5rem;
margin-right: 0.5rem;
}
.mx-3 {
margin-left: 0.75rem;
margin-right: 0.75rem;
}
.mx-4 {
margin-left: 1rem;
margin-right: 1rem;
}
.mx-5 {
margin-left: 1.25rem;
margin-right: 1.25rem;
}
.mx-6 {
margin-left: 1.5rem;
margin-right: 1.5rem;
}
.mx-7 {
margin-left: 1.75rem;
margin-right: 1.75rem;
}
.mx-8 {
margin-left: 2rem;
margin-right: 2rem;
}
.mx-9 {
margin-left: 2.25rem;
margin-right: 2.25rem;
}
.mx-10 {
margin-left: 2.5rem;
margin-right: 2.5rem;
}
.mx-11 {
margin-left: 2.75rem;
margin-right: 2.75rem;
}
.mx-12 {
margin-left: 3rem;
margin-right: 3rem;
}
.mx-14 {
margin-left: 3.5rem;
margin-right: 3.5rem;
}
.mx-16 {
margin-left: 4rem;
margin-right: 4rem;
}
.mx-20 {
margin-left: 5rem;
margin-right: 5rem;
}
.mx-24 {
margin-left: 6rem;
margin-right: 6rem;
}
.mx-28 {
margin-left: 7rem;
margin-right: 7rem;
}
.mx-32 {
margin-left: 8rem;
margin-right: 8rem;
}
.mx-36 {
margin-left: 9rem;
margin-right: 9rem;
}
.mx-40 {
margin-left: 10rem;
margin-right: 10rem;
}
.mx-44 {
margin-left: 11rem;
margin-right: 11rem;
}
.mx-48 {
margin-left: 12rem;
margin-right: 12rem;
}
.mx-52 {
margin-left: 13rem;
margin-right: 13rem;
}
.mx-56 {
margin-left: 14rem;
margin-right: 14rem;
}
.mx-60 {
margin-left: 15rem;
margin-right: 15rem;
}
.mx-64 {
margin-left: 16rem;
margin-right: 16rem;
}
.mx-72 {
margin-left: 18rem;
margin-right: 18rem;
}
.mx-80 {
margin-left: 20rem;
margin-right: 20rem;
}
.mx-96 {
margin-left: 24rem;
margin-right: 24rem;
}
.mx-auto {
margin-left: auto;
margin-right: auto;
}
.mx-px {
margin-left: 1px;
margin-right: 1px;
}
.mx-0\.5 {
margin-left: 0.125rem;
margin-right: 0.125rem;
}
.mx-1\.5 {
margin-left: 0.375rem;
margin-right: 0.375rem;
}
.mx-2\.5 {
margin-left: 0.625rem;
margin-right: 0.625rem;
}
.mx-3\.5 {
margin-left: 0.875rem;
margin-right: 0.875rem;
}
.-mx-0 {
margin-left: 0px;
margin-right: 0px;
}
.-mx-1 {
margin-left: -0.25rem;
margin-right: -0.25rem;
}
.-mx-2 {
margin-left: -0.5rem;
margin-right: -0.5rem;
}
.-mx-3 {
margin-left: -0.75rem;
margin-right: -0.75rem;
}
.-mx-4 {
margin-left: -1rem;
margin-right: -1rem;
}
.-mx-5 {
margin-left: -1.25rem;
margin-right: -1.25rem;
}
.-mx-6 {
margin-left: -1.5rem;
margin-right: -1.5rem;
}
.-mx-7 {
margin-left: -1.75rem;
margin-right: -1.75rem;
}
.-mx-8 {
margin-left: -2rem;
margin-right: -2rem;
}
.-mx-9 {
margin-left: -2.25rem;
margin-right: -2.25rem;
}
.-mx-10 {
margin-left: -2.5rem;
margin-right: -2.5rem;
}
.-mx-11 {
margin-left: -2.75rem;
margin-right: -2.75rem;
}
.-mx-12 {
margin-left: -3rem;
margin-right: -3rem;
}
.-mx-14 {
margin-left: -3.5rem;
margin-right: -3.5rem;
}
.-mx-16 {
margin-left: -4rem;
margin-right: -4rem;
}
.-mx-20 {
margin-left: -5rem;
margin-right: -5rem;
}
.-mx-24 {
margin-left: -6rem;
margin-right: -6rem;
}
.-mx-28 {
margin-left: -7rem;
margin-right: -7rem;
}
.-mx-32 {
margin-left: -8rem;
margin-right: -8rem;
}
.-mx-36 {
margin-left: -9rem;
margin-right: -9rem;
}
.-mx-40 {
margin-left: -10rem;
margin-right: -10rem;
}
.-mx-44 {
margin-left: -11rem;
margin-right: -11rem;
}
.-mx-48 {
margin-left: -12rem;
margin-right: -12rem;
}
.-mx-52 {
margin-left: -13rem;
margin-right: -13rem;
}
.-mx-56 {
margin-left: -14rem;
margin-right: -14rem;
}
.-mx-60 {
margin-left: -15rem;
margin-right: -15rem;
}
.-mx-64 {
margin-left: -16rem;
margin-right: -16rem;
}
.-mx-72 {
margin-left: -18rem;
margin-right: -18rem;
}
.-mx-80 {
margin-left: -20rem;
margin-right: -20rem;
}
.-mx-96 {
margin-left: -24rem;
margin-right: -24rem;
}
.-mx-px {
margin-left: -1px;
margin-right: -1px;
}
.-mx-0\.5 {
margin-left: -0.125rem;
margin-right: -0.125rem;
}
.-mx-1\.5 {
margin-left: -0.375rem;
margin-right: -0.375rem;
}
.-mx-2\.5 {
margin-left: -0.625rem;
margin-right: -0.625rem;
}
.-mx-3\.5 {
margin-left: -0.875rem;
margin-right: -0.875rem;
}
.my-0 {
margin-top: 0px;
margin-bottom: 0px;
}
.my-1 {
margin-top: 0.25rem;
margin-bottom: 0.25rem;
}
.my-2 {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.my-3 {
margin-top: 0.75rem;
margin-bottom: 0.75rem;
}
.my-4 {
margin-top: 1rem;
margin-bottom: 1rem;
}
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-6 {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
.my-7 {
margin-top: 1.75rem;
margin-bottom: 1.75rem;
}
.my-8 {
margin-top: 2rem;
margin-bottom: 2rem;
}
.my-9 {
margin-top: 2.25rem;
margin-bottom: 2.25rem;
}
.my-10 {
margin-top: 2.5rem;
margin-bottom: 2.5rem;
}
.my-11 {
margin-top: 2.75rem;
margin-bottom: 2.75rem;
}
.my-12 {
margin-top: 3rem;
margin-bottom: 3rem;
}
.my-14 {
margin-top: 3.5rem;
margin-bottom: 3.5rem;
}
.my-16 {
margin-top: 4rem;
margin-bottom: 4rem;
}
.my-20 {
margin-top: 5rem;
margin-bottom: 5rem;
}
.my-24 {
margin-top: 6rem;
margin-bottom: 6rem;
}
.my-28 {
margin-top: 7rem;
margin-bottom: 7rem;
}
.my-32 {
margin-top: 8rem;
margin-bottom: 8rem;
}
.my-36 {
margin-top: 9rem;
margin-bottom: 9rem;
}
.my-40 {
margin-top: 10rem;
margin-bottom: 10rem;
}
.my-44 {
margin-top: 11rem;
margin-bottom: 11rem;
}
.my-48 {
margin-top: 12rem;
margin-bottom: 12rem;
}
.my-52 {
margin-top: 13rem;
margin-bottom: 13rem;
}
.my-56 {
margin-top: 14rem;
margin-bottom: 14rem;
}
.my-60 {
margin-top: 15rem;
margin-bottom: 15rem;
}
.my-64 {
margin-top: 16rem;
margin-bottom: 16rem;
}
.my-72 {
margin-top: 18rem;
margin-bottom: 18rem;
}
.my-80 {
margin-top: 20rem;
margin-bottom: 20rem;
}
.my-96 {
margin-top: 24rem;
margin-bottom: 24rem;
}
.my-auto {
margin-top: auto;
margin-bottom: auto;
}
.my-px {
margin-top: 1px;
margin-bottom: 1px;
}
.my-0\.5 {
margin-top: 0.125rem;
margin-bottom: 0.125rem;
}
.my-1\.5 {
margin-top: 0.375rem;
margin-bottom: 0.375rem;
}
.my-2\.5 {
margin-top: 0.625rem;
margin-bottom: 0.625rem;
}
.my-3\.5 {
margin-top: 0.875rem;
margin-bottom: 0.875rem;
}
.-my-0 {
margin-top: 0px;
margin-bottom: 0px;
}
.-my-1 {
margin-top: -0.25rem;
margin-bottom: -0.25rem;
}
.-my-2 {
margin-top: -0.5rem;
margin-bottom: -0.5rem;
}
.-my-3 {
margin-top: -0.75rem;
margin-bottom: -0.75rem;
}
.-my-4 {
margin-top: -1rem;
margin-bottom: -1rem;
}
.-my-5 {
margin-top: -1.25rem;
margin-bottom: -1.25rem;
}
.-my-6 {
margin-top: -1.5rem;
margin-bottom: -1.5rem;
}
.-my-7 {
margin-top: -1.75rem;
margin-bottom: -1.75rem;
}
.-my-8 {
margin-top: -2rem;
margin-bottom: -2rem;
}
.-my-9 {
margin-top: -2.25rem;
margin-bottom: -2.25rem;
}
.-my-10 {
margin-top: -2.5rem;
margin-bottom: -2.5rem;
}
.-my-11 {
margin-top: -2.75rem;
margin-bottom: -2.75rem;
}
.-my-12 {
margin-top: -3rem;
margin-bottom: -3rem;
}
.-my-14 {
margin-top: -3.5rem;
margin-bottom: -3.5rem;
}
.-my-16 {
margin-top: -4rem;
margin-bottom: -4rem;
}
.-my-20 {
margin-top: -5rem;
margin-bottom: -5rem;
}
.-my-24 {
margin-top: -6rem;
margin-bottom: -6rem;
}
.-my-28 {
margin-top: -7rem;
margin-bottom: -7rem;
}
.-my-32 {
margin-top: -8rem;
margin-bottom: -8rem;
}
.-my-36 {
margin-top: -9rem;
margin-bottom: -9rem;
}
.-my-40 {
margin-top: -10rem;
margin-bottom: -10rem;
}
.-my-44 {
margin-top: -11rem;
margin-bottom: -11rem;
}
.-my-48 {
margin-top: -12rem;
margin-bottom: -12rem;
}
.-my-52 {
margin-top: -13rem;
margin-bottom: -13rem;
}
.-my-56 {
margin-top: -14rem;
margin-bottom: -14rem;
}
.-my-60 {
margin-top: -15rem;
margin-bottom: -15rem;
}
.-my-64 {
margin-top: -16rem;
margin-bottom: -16rem;
}
.-my-72 {
margin-top: -18rem;
margin-bottom: -18rem;
}
.-my-80 {
margin-top: -20rem;
margin-bottom: -20rem;
}
.-my-96 {
margin-top: -24rem;
margin-bottom: -24rem;
}
.-my-px {
margin-top: -1px;
margin-bottom: -1px;
}
.-my-0\.5 {
margin-top: -0.125rem;
margin-bottom: -0.125rem;
}
.-my-1\.5 {
margin-top: -0.375rem;
margin-bottom: -0.375rem;
}
.-my-2\.5 {
margin-top: -0.625rem;
margin-bottom: -0.625rem;
}
.-my-3\.5 {
margin-top: -0.875rem;
margin-bottom: -0.875rem;
}
.mt-0 {
margin-top: 0px;
}
.mt-1 {
margin-top: 0.25rem;
}
.mt-2 {
margin-top: 0.5rem;
}
.mt-3 {
margin-top: 0.75rem;
}
.mt-4 {
margin-top: 1rem;
}
.mt-5 {
margin-top: 1.25rem;
}
.mt-6 {
margin-top: 1.5rem;
}
.mt-7 {
margin-top: 1.75rem;
}
.mt-8 {
margin-top: 2rem;
}
.mt-9 {
margin-top: 2.25rem;
}
.mt-10 {
margin-top: 2.5rem;
}
.mt-11 {
margin-top: 2.75rem;
}
.mt-12 {
margin-top: 3rem;
}
.mt-14 {
margin-top: 3.5rem;
}
.mt-16 {
margin-top: 4rem;
}
.mt-20 {
margin-top: 5rem;
}
.mt-24 {
margin-top: 6rem;
}
.mt-28 {
margin-top: 7rem;
}
.mt-32 {
margin-top: 8rem;
}
.mt-36 {
margin-top: 9rem;
}
.mt-40 {
margin-top: 10rem;
}
.mt-44 {
margin-top: 11rem;
}
.mt-48 {
margin-top: 12rem;
}
.mt-52 {
margin-top: 13rem;
}
.mt-56 {
margin-top: 14rem;
}
.mt-60 {
margin-top: 15rem;
}
.mt-64 {
margin-top: 16rem;
}
.mt-72 {
margin-top: 18rem;
}
.mt-80 {
margin-top: 20rem;
}
.mt-96 {
margin-top: 24rem;
}
.mt-auto {
margin-top: auto;
}
.mt-px {
margin-top: 1px;
}
.mt-0\.5 {
margin-top: 0.125rem;
}
.mt-1\.5 {
margin-top: 0.375rem;
}
.mt-2\.5 {
margin-top: 0.625rem;
}
.mt-3\.5 {
margin-top: 0.875rem;
}
.-mt-0 {
margin-top: 0px;
}
.-mt-1 {
margin-top: -0.25rem;
}
.-mt-2 {
margin-top: -0.5rem;
}
.-mt-3 {
margin-top: -0.75rem;
}
.-mt-4 {
margin-top: -1rem;
}
.-mt-5 {
margin-top: -1.25rem;
}
.-mt-6 {
margin-top: -1.5rem;
}
.-mt-7 {
margin-top: -1.75rem;
}
.-mt-8 {
margin-top: -2rem;
}
.-mt-9 {
margin-top: -2.25rem;
}
.-mt-10 {
margin-top: -2.5rem;
}
.-mt-11 {
margin-top: -2.75rem;
}
.-mt-12 {
margin-top: -3rem;
}
.-mt-14 {
margin-top: -3.5rem;
}
.-mt-16 {
margin-top: -4rem;
}
.-mt-20 {
margin-top: -5rem;
}
.-mt-24 {
margin-top: -6rem;
}
.-mt-28 {
margin-top: -7rem;
}
.-mt-32 {
margin-top: -8rem;
}
.-mt-36 {
margin-top: -9rem;
}
.-mt-40 {
margin-top: -10rem;
}
.-mt-44 {
margin-top: -11rem;
}
.-mt-48 {
margin-top: -12rem;
}
.-mt-52 {
margin-top: -13rem;
}
.-mt-56 {
margin-top: -14rem;
}
.-mt-60 {
margin-top: -15rem;
}
.-mt-64 {
margin-top: -16rem;
}
.-mt-72 {
margin-top: -18rem;
}
.-mt-80 {
margin-top: -20rem;
}
.-mt-96 {
margin-top: -24rem;
}
.-mt-px {
margin-top: -1px;
}
.-mt-0\.5 {
margin-top: -0.125rem;
}
.-mt-1\.5 {
margin-top: -0.375rem;
}
.-mt-2\.5 {
margin-top: -0.625rem;
}
.-mt-3\.5 {
margin-top: -0.875rem;
}
.mr-0 {
margin-right: 0px;
}
.mr-1 {
margin-right: 0.25rem;
}
.mr-2 {
margin-right: 0.5rem;
}
.mr-3 {
margin-right: 0.75rem;
}
.mr-4 {
margin-right: 1rem;
}
.mr-5 {
margin-right: 1.25rem;
}
.mr-6 {
margin-right: 1.5rem;
}
.mr-7 {
margin-right: 1.75rem;
}
.mr-8 {
margin-right: 2rem;
}
.mr-9 {
margin-right: 2.25rem;
}
.mr-10 {
margin-right: 2.5rem;
}
.mr-11 {
margin-right: 2.75rem;
}
.mr-12 {
margin-right: 3rem;
}
.mr-14 {
margin-right: 3.5rem;
}
.mr-16 {
margin-right: 4rem;
}
.mr-20 {
margin-right: 5rem;
}
.mr-24 {
margin-right: 6rem;
}
.mr-28 {
margin-right: 7rem;
}
.mr-32 {
margin-right: 8rem;
}
.mr-36 {
margin-right: 9rem;
}
.mr-40 {
margin-right: 10rem;
}
.mr-44 {
margin-right: 11rem;
}
.mr-48 {
margin-right: 12rem;
}
.mr-52 {
margin-right: 13rem;
}
.mr-56 {
margin-right: 14rem;
}
.mr-60 {
margin-right: 15rem;
}
.mr-64 {
margin-right: 16rem;
}
.mr-72 {
margin-right: 18rem;
}
.mr-80 {
margin-right: 20rem;
}
.mr-96 {
margin-right: 24rem;
}
.mr-auto {
margin-right: auto;
}
.mr-px {
margin-right: 1px;
}
.mr-0\.5 {
margin-right: 0.125rem;
}
.mr-1\.5 {
margin-right: 0.375rem;
}
.mr-2\.5 {
margin-right: 0.625rem;
}
.mr-3\.5 {
margin-right: 0.875rem;
}
.-mr-0 {
margin-right: 0px;
}
.-mr-1 {
margin-right: -0.25rem;
}
.-mr-2 {
margin-right: -0.5rem;
}
.-mr-3 {
margin-right: -0.75rem;
}
.-mr-4 {
margin-right: -1rem;
}
.-mr-5 {
margin-right: -1.25rem;
}
.-mr-6 {
margin-right: -1.5rem;
}
.-mr-7 {
margin-right: -1.75rem;
}
.-mr-8 {
margin-right: -2rem;
}
.-mr-9 {
margin-right: -2.25rem;
}
.-mr-10 {
margin-right: -2.5rem;
}
.-mr-11 {
margin-right: -2.75rem;
}
.-mr-12 {
margin-right: -3rem;
}
.-mr-14 {
margin-right: -3.5rem;
}
.-mr-16 {
margin-right: -4rem;
}
.-mr-20 {
margin-right: -5rem;
}
.-mr-24 {
margin-right: -6rem;
}
.-mr-28 {
margin-right: -7rem;
}
.-mr-32 {
margin-right: -8rem;
}
.-mr-36 {
margin-right: -9rem;
}
.-mr-40 {
margin-right: -10rem;
}
.-mr-44 {
margin-right: -11rem;
}
.-mr-48 {
margin-right: -12rem;
}
.-mr-52 {
margin-right: -13rem;
}
.-mr-56 {
margin-right: -14rem;
}
.-mr-60 {
margin-right: -15rem;
}
.-mr-64 {
margin-right: -16rem;
}
.-mr-72 {
margin-right: -18rem;
}
.-mr-80 {
margin-right: -20rem;
}
.-mr-96 {
margin-right: -24rem;
}
.-mr-px {
margin-right: -1px;
}
.-mr-0\.5 {
margin-right: -0.125rem;
}
.-mr-1\.5 {
margin-right: -0.375rem;
}
.-mr-2\.5 {
margin-right: -0.625rem;
}
.-mr-3\.5 {
margin-right: -0.875rem;
}
.mb-0 {
margin-bottom: 0px;
}
.mb-1 {
margin-bottom: 0.25rem;
}
.mb-2 {
margin-bottom: 0.5rem;
}
.mb-3 {
margin-bottom: 0.75rem;
}
.mb-4 {
margin-bottom: 1rem;
}
.mb-5 {
margin-bottom: 1.25rem;
}
.mb-6 {
margin-bottom: 1.5rem;
}
.mb-7 {
margin-bottom: 1.75rem;
}
.mb-8 {
margin-bottom: 2rem;
}
.mb-9 {
margin-bottom: 2.25rem;
}
.mb-10 {
margin-bottom: 2.5rem;
}
.mb-11 {
margin-bottom: 2.75rem;
}
.mb-12 {
margin-bottom: 3rem;
}
.mb-14 {
margin-bottom: 3.5rem;
}
.mb-16 {
margin-bottom: 4rem;
}
.mb-20 {
margin-bottom: 5rem;
}
.mb-24 {
margin-bottom: 6rem;
}
.mb-28 {
margin-bottom: 7rem;
}
.mb-32 {
margin-bottom: 8rem;
}
.mb-36 {
margin-bottom: 9rem;
}
.mb-40 {
margin-bottom: 10rem;
}
.mb-44 {
margin-bottom: 11rem;
}
.mb-48 {
margin-bottom: 12rem;
}
.mb-52 {
margin-bottom: 13rem;
}
.mb-56 {
margin-bottom: 14rem;
}
.mb-60 {
margin-bottom: 15rem;
}
.mb-64 {
margin-bottom: 16rem;
}
.mb-72 {
margin-bottom: 18rem;
}
.mb-80 {
margin-bottom: 20rem;
}
.mb-96 {
margin-bottom: 24rem;
}
.mb-auto {
margin-bottom: auto;
}
.mb-px {
margin-bottom: 1px;
}
.mb-0\.5 {
margin-bottom: 0.125rem;
}
.mb-1\.5 {
margin-bottom: 0.375rem;
}
.mb-2\.5 {
margin-bottom: 0.625rem;
}
.mb-3\.5 {
margin-bottom: 0.875rem;
}
.-mb-0 {
margin-bottom: 0px;
}
.-mb-1 {
margin-bottom: -0.25rem;
}
.-mb-2 {
margin-bottom: -0.5rem;
}
.-mb-3 {
margin-bottom: -0.75rem;
}
.-mb-4 {
margin-bottom: -1rem;
}
.-mb-5 {
margin-bottom: -1.25rem;
}
.-mb-6 {
margin-bottom: -1.5rem;
}
.-mb-7 {
margin-bottom: -1.75rem;
}
.-mb-8 {
margin-bottom: -2rem;
}
.-mb-9 {
margin-bottom: -2.25rem;
}
.-mb-10 {
margin-bottom: -2.5rem;
}
.-mb-11 {
margin-bottom: -2.75rem;
}
.-mb-12 {
margin-bottom: -3rem;
}
.-mb-14 {
margin-bottom: -3.5rem;
}
.-mb-16 {
margin-bottom: -4rem;
}
.-mb-20 {
margin-bottom: -5rem;
}
.-mb-24 {
margin-bottom: -6rem;
}
.-mb-28 {
margin-bottom: -7rem;
}
.-mb-32 {
margin-bottom: -8rem;
}
.-mb-36 {
margin-bottom: -9rem;
}
.-mb-40 {
margin-bottom: -10rem;
}
.-mb-44 {
margin-bottom: -11rem;
}
.-mb-48 {
margin-bottom: -12rem;
}
.-mb-52 {
margin-bottom: -13rem;
}
.-mb-56 {
margin-bottom: -14rem;
}
.-mb-60 {
margin-bottom: -15rem;
}
.-mb-64 {
margin-bottom: -16rem;
}
.-mb-72 {
margin-bottom: -18rem;
}
.-mb-80 {
margin-bottom: -20rem;
}
.-mb-96 {
margin-bottom: -24rem;
}
.-mb-px {
margin-bottom: -1px;
}
.-mb-0\.5 {
margin-bottom: -0.125rem;
}
.-mb-1\.5 {
margin-bottom: -0.375rem;
}
.-mb-2\.5 {
margin-bottom: -0.625rem;
}
.-mb-3\.5 {
margin-bottom: -0.875rem;
}
.ml-0 {
margin-left: 0px;
}
.ml-1 {
margin-left: 0.25rem;
}
.ml-2 {
margin-left: 0.5rem;
}
.ml-3 {
margin-left: 0.75rem;
}
.ml-4 {
margin-left: 1rem;
}
.ml-5 {
margin-left: 1.25rem;
}
.ml-6 {
margin-left: 1.5rem;
}
.ml-7 {
margin-left: 1.75rem;
}
.ml-8 {
margin-left: 2rem;
}
.ml-9 {
margin-left: 2.25rem;
}
.ml-10 {
margin-left: 2.5rem;
}
.ml-11 {
margin-left: 2.75rem;
}
.ml-12 {
margin-left: 3rem;
}
.ml-14 {
margin-left: 3.5rem;
}
.ml-16 {
margin-left: 4rem;
}
.ml-20 {
margin-left: 5rem;
}
.ml-24 {
margin-left: 6rem;
}
.ml-28 {
margin-left: 7rem;
}
.ml-32 {
margin-left: 8rem;
}
.ml-36 {
margin-left: 9rem;
}
.ml-40 {
margin-left: 10rem;
}
.ml-44 {
margin-left: 11rem;
}
.ml-48 {
margin-left: 12rem;
}
.ml-52 {
margin-left: 13rem;
}
.ml-56 {
margin-left: 14rem;
}
.ml-60 {
margin-left: 15rem;
}
.ml-64 {
margin-left: 16rem;
}
.ml-72 {
margin-left: 18rem;
}
.ml-80 {
margin-left: 20rem;
}
.ml-96 {
margin-left: 24rem;
}
.ml-auto {
margin-left: auto;
}
.ml-px {
margin-left: 1px;
}
.ml-0\.5 {
margin-left: 0.125rem;
}
.ml-1\.5 {
margin-left: 0.375rem;
}
.ml-2\.5 {
margin-left: 0.625rem;
}
.ml-3\.5 {
margin-left: 0.875rem;
}
.-ml-0 {
margin-left: 0px;
}
.-ml-1 {
margin-left: -0.25rem;
}
.-ml-2 {
margin-left: -0.5rem;
}
.-ml-3 {
margin-left: -0.75rem;
}
.-ml-4 {
margin-left: -1rem;
}
.-ml-5 {
margin-left: -1.25rem;
}
.-ml-6 {
margin-left: -1.5rem;
}
.-ml-7 {
margin-left: -1.75rem;
}
.-ml-8 {
margin-left: -2rem;
}
.-ml-9 {
margin-left: -2.25rem;
}
.-ml-10 {
margin-left: -2.5rem;
}
.-ml-11 {
margin-left: -2.75rem;
}
.-ml-12 {
margin-left: -3rem;
}
.-ml-14 {
margin-left: -3.5rem;
}
.-ml-16 {
margin-left: -4rem;
}
.-ml-20 {
margin-left: -5rem;
}
.-ml-24 {
margin-left: -6rem;
}
.-ml-28 {
margin-left: -7rem;
}
.-ml-32 {
margin-left: -8rem;
}
.-ml-36 {
margin-left: -9rem;
}
.-ml-40 {
margin-left: -10rem;
}
.-ml-44 {
margin-left: -11rem;
}
.-ml-48 {
margin-left: -12rem;
}
.-ml-52 {
margin-left: -13rem;
}
.-ml-56 {
margin-left: -14rem;
}
.-ml-60 {
margin-left: -15rem;
}
.-ml-64 {
margin-left: -16rem;
}
.-ml-72 {
margin-left: -18rem;
}
.-ml-80 {
margin-left: -20rem;
}
.-ml-96 {
margin-left: -24rem;
}
.-ml-px {
margin-left: -1px;
}
.-ml-0\.5 {
margin-left: -0.125rem;
}
.-ml-1\.5 {
margin-left: -0.375rem;
}
.-ml-2\.5 {
margin-left: -0.625rem;
}
.-ml-3\.5 {
margin-left: -0.875rem;
}
.box-border {
box-sizing: border-box;
}
.box-content {
box-sizing: content-box;
}
.block {
display: block;
}
.inline-block {
display: inline-block;
}
.inline {
display: inline;
}
.flex {
display: flex;
}
.inline-flex {
display: inline-flex;
}
.table {
display: table;
}
.inline-table {
display: inline-table;
}
.table-caption {
display: table-caption;
}
.table-cell {
display: table-cell;
}
.table-column {
display: table-column;
}
.table-column-group {
display: table-column-group;
}
.table-footer-group {
display: table-footer-group;
}
.table-header-group {
display: table-header-group;
}
.table-row-group {
display: table-row-group;
}
.table-row {
display: table-row;
}
.flow-root {
display: flow-root;
}
.grid {
display: grid;
}
.inline-grid {
display: inline-grid;
}
.contents {
display: contents;
}
.list-item {
display: list-item;
}
.hidden {
display: none;
}
.h-0 {
height: 0px;
}
.h-1 {
height: 0.25rem;
}
.h-2 {
height: 0.5rem;
}
.h-3 {
height: 0.75rem;
}
.h-4 {
height: 1rem;
}
.h-5 {
height: 1.25rem;
}
.h-6 {
height: 1.5rem;
}
.h-7 {
height: 1.75rem;
}
.h-8 {
height: 2rem;
}
.h-9 {
height: 2.25rem;
}
.h-10 {
height: 2.5rem;
}
.h-11 {
height: 2.75rem;
}
.h-12 {
height: 3rem;
}
.h-14 {
height: 3.5rem;
}
.h-16 {
height: 4rem;
}
.h-20 {
height: 5rem;
}
.h-24 {
height: 6rem;
}
.h-28 {
height: 7rem;
}
.h-32 {
height: 8rem;
}
.h-36 {
height: 9rem;
}
.h-40 {
height: 10rem;
}
.h-44 {
height: 11rem;
}
.h-48 {
height: 12rem;
}
.h-52 {
height: 13rem;
}
.h-56 {
height: 14rem;
}
.h-60 {
height: 15rem;
}
.h-64 {
height: 16rem;
}
.h-72 {
height: 18rem;
}
.h-80 {
height: 20rem;
}
.h-96 {
height: 24rem;
}
.h-auto {
height: auto;
}
.h-px {
height: 1px;
}
.h-0\.5 {
height: 0.125rem;
}
.h-1\.5 {
height: 0.375rem;
}
.h-2\.5 {
height: 0.625rem;
}
.h-3\.5 {
height: 0.875rem;
}
.h-full {
height: 100%;
}
.h-screen {
height: 100vh;
}
.max-h-full {
max-height: 100%;
}
.max-h-screen {
max-height: 100vh;
}
.min-h-0 {
min-height: 0;
}
.w-0 {
width: 0px;
}
.w-1 {
width: 0.25rem;
}
.w-2 {
width: 0.5rem;
}
.w-3 {
width: 0.75rem;
}
.w-4 {
width: 1rem;
}
.w-5 {
width: 1.25rem;
}
.w-6 {
width: 1.5rem;
}
.w-7 {
width: 1.75rem;
}
.w-8 {
width: 2rem;
}
.w-9 {
width: 2.25rem;
}
.w-10 {
width: 2.5rem;
}
.w-11 {
width: 2.75rem;
}
.w-12 {
width: 3rem;
}
.w-14 {
width: 3.5rem;
}
.w-16 {
width: 4rem;
}
.w-20 {
width: 5rem;
}
.w-24 {
width: 6rem;
}
.w-28 {
width: 7rem;
}
.w-32 {
width: 8rem;
}
.w-36 {
width: 9rem;
}
.w-40 {
width: 10rem;
}
.w-44 {
width: 11rem;
}
.w-48 {
width: 12rem;
}
.w-52 {
width: 13rem;
}
.w-56 {
width: 14rem;
}
.w-60 {
width: 15rem;
}
.w-64 {
width: 16rem;
}
.w-72 {
width: 18rem;
}
.w-80 {
width: 20rem;
}
.w-96 {
width: 24rem;
}
.w-auto {
width: auto;
}
.w-px {
width: 1px;
}
.w-0\.5 {
width: 0.125rem;
}
.w-1\.5 {
width: 0.375rem;
}
.w-2\.5 {
width: 0.625rem;
}
.w-3\.5 {
width: 0.875rem;
}
.w-1\/2 {
width: 50%;
}
.w-1\/3 {
width: 33.333333%;
}
.w-2\/3 {
width: 66.666667%;
}
.w-1\/4 {
width: 25%;
}
.w-2\/4 {
width: 50%;
}
.w-3\/4 {
width: 75%;
}
.w-1\/5 {
width: 20%;
}
.w-2\/5 {
width: 40%;
}
.w-3\/5 {
width: 60%;
}
.w-4\/5 {
width: 80%;
}
.w-1\/6 {
width: 16.666667%;
}
.w-2\/6 {
width: 33.333333%;
}
.w-3\/6 {
width: 50%;
}
.w-4\/6 {
width: 66.666667%;
}
.w-5\/6 {
width: 83.333333%;
}
.w-1\/12 {
width: 8.333333%;
}
.w-2\/12 {
width: 16.666667%;
}
.w-3\/12 {
width: 25%;
}
.w-4\/12 {
width: 33.333333%;
}
.w-5\/12 {
width: 41.666667%;
}
.w-6\/12 {
width: 50%;
}
.w-7\/12 {
width: 58.333333%;
}
.w-8\/12 {
width: 66.666667%;
}
.w-9\/12 {
width: 75%;
}
.w-10\/12 {
width: 83.333333%;
}
.w-11\/12 {
width: 91.666667%;
}
.w-full {
width: 100%;
}
.w-screen {
width: 100vw;
}
.min-w-0 {
min-width: 0;
}
.max-w-xs {
max-width: 20rem;
}
.max-w-sm {
max-width: 24rem;
}
.max-w-md {
max-width: 28rem;
}
.max-w-lg {
max-width: 32rem;
}
.max-w-xl {
max-width: 36rem;
}
.max-w-2xl {
max-width: 42rem;
}
.max-w-3xl {
max-width: 48rem;
}
.max-w-4xl {
max-width: 56rem;
}
.max-w-5xl {
max-width: 64rem;
}
.max-w-6xl {
max-width: 72rem;
}
.max-w-full {
max-width: 100%;
}
.flex-1 {
flex: 1 1 0%;
}
.flex-auto {
flex: 1 1 auto;
}
.flex-initial {
flex: 0 1 auto;
}
.flex-none {
flex: none;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.flex-shrink {
flex-shrink: 1;
}
.flex-grow-0 {
flex-grow: 0;
}
.flex-grow {
flex-grow: 1;
}
.table-auto {
table-layout: auto;
}
.table-fixed {
table-layout: fixed;
}
.border-collapse {
border-collapse: collapse;
}
.border-separate {
border-collapse: separate;
}
.transform {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform-gpu {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform-none {
transform: none;
}
.origin-center {
transform-origin: center;
}
.origin-top {
transform-origin: top;
}
.origin-top-right {
transform-origin: top right;
}
.origin-right {
transform-origin: right;
}
.origin-bottom-right {
transform-origin: bottom right;
}
.origin-bottom {
transform-origin: bottom;
}
.origin-bottom-left {
transform-origin: bottom left;
}
.origin-left {
transform-origin: left;
}
.origin-top-left {
transform-origin: top left;
}
.translate-x-0 {
--tw-translate-x: 0px;
}
.translate-x-1 {
--tw-translate-x: 0.25rem;
}
.translate-x-2 {
--tw-translate-x: 0.5rem;
}
.translate-x-3 {
--tw-translate-x: 0.75rem;
}
.translate-x-4 {
--tw-translate-x: 1rem;
}
.translate-x-5 {
--tw-translate-x: 1.25rem;
}
.translate-x-6 {
--tw-translate-x: 1.5rem;
}
.translate-x-7 {
--tw-translate-x: 1.75rem;
}
.translate-x-8 {
--tw-translate-x: 2rem;
}
.translate-x-9 {
--tw-translate-x: 2.25rem;
}
.translate-x-10 {
--tw-translate-x: 2.5rem;
}
.translate-x-11 {
--tw-translate-x: 2.75rem;
}
.translate-x-12 {
--tw-translate-x: 3rem;
}
.translate-x-14 {
--tw-translate-x: 3.5rem;
}
.translate-x-16 {
--tw-translate-x: 4rem;
}
.translate-x-20 {
--tw-translate-x: 5rem;
}
.translate-x-24 {
--tw-translate-x: 6rem;
}
.translate-x-28 {
--tw-translate-x: 7rem;
}
.translate-x-32 {
--tw-translate-x: 8rem;
}
.translate-x-36 {
--tw-translate-x: 9rem;
}
.translate-x-40 {
--tw-translate-x: 10rem;
}
.translate-x-44 {
--tw-translate-x: 11rem;
}
.translate-x-48 {
--tw-translate-x: 12rem;
}
.translate-x-52 {
--tw-translate-x: 13rem;
}
.translate-x-56 {
--tw-translate-x: 14rem;
}
.translate-x-60 {
--tw-translate-x: 15rem;
}
.translate-x-64 {
--tw-translate-x: 16rem;
}
.translate-x-72 {
--tw-translate-x: 18rem;
}
.translate-x-80 {
--tw-translate-x: 20rem;
}
.translate-x-96 {
--tw-translate-x: 24rem;
}
.translate-x-px {
--tw-translate-x: 1px;
}
.translate-x-0\.5 {
--tw-translate-x: 0.125rem;
}
.translate-x-1\.5 {
--tw-translate-x: 0.375rem;
}
.translate-x-2\.5 {
--tw-translate-x: 0.625rem;
}
.translate-x-3\.5 {
--tw-translate-x: 0.875rem;
}
.-translate-x-0 {
--tw-translate-x: 0px;
}
.-translate-x-1 {
--tw-translate-x: -0.25rem;
}
.-translate-x-2 {
--tw-translate-x: -0.5rem;
}
.-translate-x-3 {
--tw-translate-x: -0.75rem;
}
.-translate-x-4 {
--tw-translate-x: -1rem;
}
.-translate-x-5 {
--tw-translate-x: -1.25rem;
}
.-translate-x-6 {
--tw-translate-x: -1.5rem;
}
.-translate-x-7 {
--tw-translate-x: -1.75rem;
}
.-translate-x-8 {
--tw-translate-x: -2rem;
}
.-translate-x-9 {
--tw-translate-x: -2.25rem;
}
.-translate-x-10 {
--tw-translate-x: -2.5rem;
}
.-translate-x-11 {
--tw-translate-x: -2.75rem;
}
.-translate-x-12 {
--tw-translate-x: -3rem;
}
.-translate-x-14 {
--tw-translate-x: -3.5rem;
}
.-translate-x-16 {
--tw-translate-x: -4rem;
}
.-translate-x-20 {
--tw-translate-x: -5rem;
}
.-translate-x-24 {
--tw-translate-x: -6rem;
}
.-translate-x-28 {
--tw-translate-x: -7rem;
}
.-translate-x-32 {
--tw-translate-x: -8rem;
}
.-translate-x-36 {
--tw-translate-x: -9rem;
}
.-translate-x-40 {
--tw-translate-x: -10rem;
}
.-translate-x-44 {
--tw-translate-x: -11rem;
}
.-translate-x-48 {
--tw-translate-x: -12rem;
}
.-translate-x-52 {
--tw-translate-x: -13rem;
}
.-translate-x-56 {
--tw-translate-x: -14rem;
}
.-translate-x-60 {
--tw-translate-x: -15rem;
}
.-translate-x-64 {
--tw-translate-x: -16rem;
}
.-translate-x-72 {
--tw-translate-x: -18rem;
}
.-translate-x-80 {
--tw-translate-x: -20rem;
}
.-translate-x-96 {
--tw-translate-x: -24rem;
}
.-translate-x-px {
--tw-translate-x: -1px;
}
.-translate-x-0\.5 {
--tw-translate-x: -0.125rem;
}
.-translate-x-1\.5 {
--tw-translate-x: -0.375rem;
}
.-translate-x-2\.5 {
--tw-translate-x: -0.625rem;
}
.-translate-x-3\.5 {
--tw-translate-x: -0.875rem;
}
.translate-x-1\/2 {
--tw-translate-x: 50%;
}
.translate-x-1\/3 {
--tw-translate-x: 33.333333%;
}
.translate-x-2\/3 {
--tw-translate-x: 66.666667%;
}
.translate-x-1\/4 {
--tw-translate-x: 25%;
}
.translate-x-2\/4 {
--tw-translate-x: 50%;
}
.translate-x-3\/4 {
--tw-translate-x: 75%;
}
.translate-x-full {
--tw-translate-x: 100%;
}
.-translate-x-1\/2 {
--tw-translate-x: -50%;
}
.-translate-x-1\/3 {
--tw-translate-x: -33.333333%;
}
.-translate-x-2\/3 {
--tw-translate-x: -66.666667%;
}
.-translate-x-1\/4 {
--tw-translate-x: -25%;
}
.-translate-x-2\/4 {
--tw-translate-x: -50%;
}
.-translate-x-3\/4 {
--tw-translate-x: -75%;
}
.-translate-x-full {
--tw-translate-x: -100%;
}
.translate-y-0 {
--tw-translate-y: 0px;
}
.translate-y-1 {
--tw-translate-y: 0.25rem;
}
.translate-y-2 {
--tw-translate-y: 0.5rem;
}
.translate-y-3 {
--tw-translate-y: 0.75rem;
}
.translate-y-4 {
--tw-translate-y: 1rem;
}
.translate-y-5 {
--tw-translate-y: 1.25rem;
}
.translate-y-6 {
--tw-translate-y: 1.5rem;
}
.translate-y-7 {
--tw-translate-y: 1.75rem;
}
.translate-y-8 {
--tw-translate-y: 2rem;
}
.translate-y-9 {
--tw-translate-y: 2.25rem;
}
.translate-y-10 {
--tw-translate-y: 2.5rem;
}
.translate-y-11 {
--tw-translate-y: 2.75rem;
}
.translate-y-12 {
--tw-translate-y: 3rem;
}
.translate-y-14 {
--tw-translate-y: 3.5rem;
}
.translate-y-16 {
--tw-translate-y: 4rem;
}
.translate-y-20 {
--tw-translate-y: 5rem;
}
.translate-y-24 {
--tw-translate-y: 6rem;
}
.translate-y-28 {
--tw-translate-y: 7rem;
}
.translate-y-32 {
--tw-translate-y: 8rem;
}
.translate-y-36 {
--tw-translate-y: 9rem;
}
.translate-y-40 {
--tw-translate-y: 10rem;
}
.translate-y-44 {
--tw-translate-y: 11rem;
}
.translate-y-48 {
--tw-translate-y: 12rem;
}
.translate-y-52 {
--tw-translate-y: 13rem;
}
.translate-y-56 {
--tw-translate-y: 14rem;
}
.translate-y-60 {
--tw-translate-y: 15rem;
}
.translate-y-64 {
--tw-translate-y: 16rem;
}
.translate-y-72 {
--tw-translate-y: 18rem;
}
.translate-y-80 {
--tw-translate-y: 20rem;
}
.translate-y-96 {
--tw-translate-y: 24rem;
}
.translate-y-px {
--tw-translate-y: 1px;
}
.translate-y-0\.5 {
--tw-translate-y: 0.125rem;
}
.translate-y-1\.5 {
--tw-translate-y: 0.375rem;
}
.translate-y-2\.5 {
--tw-translate-y: 0.625rem;
}
.translate-y-3\.5 {
--tw-translate-y: 0.875rem;
}
.-translate-y-0 {
--tw-translate-y: 0px;
}
.-translate-y-1 {
--tw-translate-y: -0.25rem;
}
.-translate-y-2 {
--tw-translate-y: -0.5rem;
}
.-translate-y-3 {
--tw-translate-y: -0.75rem;
}
.-translate-y-4 {
--tw-translate-y: -1rem;
}
.-translate-y-5 {
--tw-translate-y: -1.25rem;
}
.-translate-y-6 {
--tw-translate-y: -1.5rem;
}
.-translate-y-7 {
--tw-translate-y: -1.75rem;
}
.-translate-y-8 {
--tw-translate-y: -2rem;
}
.-translate-y-9 {
--tw-translate-y: -2.25rem;
}
.-translate-y-10 {
--tw-translate-y: -2.5rem;
}
.-translate-y-11 {
--tw-translate-y: -2.75rem;
}
.-translate-y-12 {
--tw-translate-y: -3rem;
}
.-translate-y-14 {
--tw-translate-y: -3.5rem;
}
.-translate-y-16 {
--tw-translate-y: -4rem;
}
.-translate-y-20 {
--tw-translate-y: -5rem;
}
.-translate-y-24 {
--tw-translate-y: -6rem;
}
.-translate-y-28 {
--tw-translate-y: -7rem;
}
.-translate-y-32 {
--tw-translate-y: -8rem;
}
.-translate-y-36 {
--tw-translate-y: -9rem;
}
.-translate-y-40 {
--tw-translate-y: -10rem;
}
.-translate-y-44 {
--tw-translate-y: -11rem;
}
.-translate-y-48 {
--tw-translate-y: -12rem;
}
.-translate-y-52 {
--tw-translate-y: -13rem;
}
.-translate-y-56 {
--tw-translate-y: -14rem;
}
.-translate-y-60 {
--tw-translate-y: -15rem;
}
.-translate-y-64 {
--tw-translate-y: -16rem;
}
.-translate-y-72 {
--tw-translate-y: -18rem;
}
.-translate-y-80 {
--tw-translate-y: -20rem;
}
.-translate-y-96 {
--tw-translate-y: -24rem;
}
.-translate-y-px {
--tw-translate-y: -1px;
}
.-translate-y-0\.5 {
--tw-translate-y: -0.125rem;
}
.-translate-y-1\.5 {
--tw-translate-y: -0.375rem;
}
.-translate-y-2\.5 {
--tw-translate-y: -0.625rem;
}
.-translate-y-3\.5 {
--tw-translate-y: -0.875rem;
}
.translate-y-1\/2 {
--tw-translate-y: 50%;
}
.translate-y-1\/3 {
--tw-translate-y: 33.333333%;
}
.translate-y-2\/3 {
--tw-translate-y: 66.666667%;
}
.translate-y-1\/4 {
--tw-translate-y: 25%;
}
.translate-y-2\/4 {
--tw-translate-y: 50%;
}
.translate-y-3\/4 {
--tw-translate-y: 75%;
}
.translate-y-full {
--tw-translate-y: 100%;
}
.-translate-y-1\/2 {
--tw-translate-y: -50%;
}
.-translate-y-1\/3 {
--tw-translate-y: -33.333333%;
}
.-translate-y-2\/3 {
--tw-translate-y: -66.666667%;
}
.-translate-y-1\/4 {
--tw-translate-y: -25%;
}
.-translate-y-2\/4 {
--tw-translate-y: -50%;
}
.-translate-y-3\/4 {
--tw-translate-y: -75%;
}
.-translate-y-full {
--tw-translate-y: -100%;
}
.hover\:translate-x-0:hover {
--tw-translate-x: 0px;
}
.hover\:translate-x-1:hover {
--tw-translate-x: 0.25rem;
}
.hover\:translate-x-2:hover {
--tw-translate-x: 0.5rem;
}
.hover\:translate-x-3:hover {
--tw-translate-x: 0.75rem;
}
.hover\:translate-x-4:hover {
--tw-translate-x: 1rem;
}
.hover\:translate-x-5:hover {
--tw-translate-x: 1.25rem;
}
.hover\:translate-x-6:hover {
--tw-translate-x: 1.5rem;
}
.hover\:translate-x-7:hover {
--tw-translate-x: 1.75rem;
}
.hover\:translate-x-8:hover {
--tw-translate-x: 2rem;
}
.hover\:translate-x-9:hover {
--tw-translate-x: 2.25rem;
}
.hover\:translate-x-10:hover {
--tw-translate-x: 2.5rem;
}
.hover\:translate-x-11:hover {
--tw-translate-x: 2.75rem;
}
.hover\:translate-x-12:hover {
--tw-translate-x: 3rem;
}
.hover\:translate-x-14:hover {
--tw-translate-x: 3.5rem;
}
.hover\:translate-x-16:hover {
--tw-translate-x: 4rem;
}
.hover\:translate-x-20:hover {
--tw-translate-x: 5rem;
}
.hover\:translate-x-24:hover {
--tw-translate-x: 6rem;
}
.hover\:translate-x-28:hover {
--tw-translate-x: 7rem;
}
.hover\:translate-x-32:hover {
--tw-translate-x: 8rem;
}
.hover\:translate-x-36:hover {
--tw-translate-x: 9rem;
}
.hover\:translate-x-40:hover {
--tw-translate-x: 10rem;
}
.hover\:translate-x-44:hover {
--tw-translate-x: 11rem;
}
.hover\:translate-x-48:hover {
--tw-translate-x: 12rem;
}
.hover\:translate-x-52:hover {
--tw-translate-x: 13rem;
}
.hover\:translate-x-56:hover {
--tw-translate-x: 14rem;
}
.hover\:translate-x-60:hover {
--tw-translate-x: 15rem;
}
.hover\:translate-x-64:hover {
--tw-translate-x: 16rem;
}
.hover\:translate-x-72:hover {
--tw-translate-x: 18rem;
}
.hover\:translate-x-80:hover {
--tw-translate-x: 20rem;
}
.hover\:translate-x-96:hover {
--tw-translate-x: 24rem;
}
.hover\:translate-x-px:hover {
--tw-translate-x: 1px;
}
.hover\:translate-x-0\.5:hover {
--tw-translate-x: 0.125rem;
}
.hover\:translate-x-1\.5:hover {
--tw-translate-x: 0.375rem;
}
.hover\:translate-x-2\.5:hover {
--tw-translate-x: 0.625rem;
}
.hover\:translate-x-3\.5:hover {
--tw-translate-x: 0.875rem;
}
.hover\:-translate-x-0:hover {
--tw-translate-x: 0px;
}
.hover\:-translate-x-1:hover {
--tw-translate-x: -0.25rem;
}
.hover\:-translate-x-2:hover {
--tw-translate-x: -0.5rem;
}
.hover\:-translate-x-3:hover {
--tw-translate-x: -0.75rem;
}
.hover\:-translate-x-4:hover {
--tw-translate-x: -1rem;
}
.hover\:-translate-x-5:hover {
--tw-translate-x: -1.25rem;
}
.hover\:-translate-x-6:hover {
--tw-translate-x: -1.5rem;
}
.hover\:-translate-x-7:hover {
--tw-translate-x: -1.75rem;
}
.hover\:-translate-x-8:hover {
--tw-translate-x: -2rem;
}
.hover\:-translate-x-9:hover {
--tw-translate-x: -2.25rem;
}
.hover\:-translate-x-10:hover {
--tw-translate-x: -2.5rem;
}
.hover\:-translate-x-11:hover {
--tw-translate-x: -2.75rem;
}
.hover\:-translate-x-12:hover {
--tw-translate-x: -3rem;
}
.hover\:-translate-x-14:hover {
--tw-translate-x: -3.5rem;
}
.hover\:-translate-x-16:hover {
--tw-translate-x: -4rem;
}
.hover\:-translate-x-20:hover {
--tw-translate-x: -5rem;
}
.hover\:-translate-x-24:hover {
--tw-translate-x: -6rem;
}
.hover\:-translate-x-28:hover {
--tw-translate-x: -7rem;
}
.hover\:-translate-x-32:hover {
--tw-translate-x: -8rem;
}
.hover\:-translate-x-36:hover {
--tw-translate-x: -9rem;
}
.hover\:-translate-x-40:hover {
--tw-translate-x: -10rem;
}
.hover\:-translate-x-44:hover {
--tw-translate-x: -11rem;
}
.hover\:-translate-x-48:hover {
--tw-translate-x: -12rem;
}
.hover\:-translate-x-52:hover {
--tw-translate-x: -13rem;
}
.hover\:-translate-x-56:hover {
--tw-translate-x: -14rem;
}
.hover\:-translate-x-60:hover {
--tw-translate-x: -15rem;
}
.hover\:-translate-x-64:hover {
--tw-translate-x: -16rem;
}
.hover\:-translate-x-72:hover {
--tw-translate-x: -18rem;
}
.hover\:-translate-x-80:hover {
--tw-translate-x: -20rem;
}
.hover\:-translate-x-96:hover {
--tw-translate-x: -24rem;
}
.hover\:-translate-x-px:hover {
--tw-translate-x: -1px;
}
.hover\:-translate-x-0\.5:hover {
--tw-translate-x: -0.125rem;
}
.hover\:-translate-x-1\.5:hover {
--tw-translate-x: -0.375rem;
}
.hover\:-translate-x-2\.5:hover {
--tw-translate-x: -0.625rem;
}
.hover\:-translate-x-3\.5:hover {
--tw-translate-x: -0.875rem;
}
.hover\:translate-x-1\/2:hover {
--tw-translate-x: 50%;
}
.hover\:translate-x-1\/3:hover {
--tw-translate-x: 33.333333%;
}
.hover\:translate-x-2\/3:hover {
--tw-translate-x: 66.666667%;
}
.hover\:translate-x-1\/4:hover {
--tw-translate-x: 25%;
}
.hover\:translate-x-2\/4:hover {
--tw-translate-x: 50%;
}
.hover\:translate-x-3\/4:hover {
--tw-translate-x: 75%;
}
.hover\:translate-x-full:hover {
--tw-translate-x: 100%;
}
.hover\:-translate-x-1\/2:hover {
--tw-translate-x: -50%;
}
.hover\:-translate-x-1\/3:hover {
--tw-translate-x: -33.333333%;
}
.hover\:-translate-x-2\/3:hover {
--tw-translate-x: -66.666667%;
}
.hover\:-translate-x-1\/4:hover {
--tw-translate-x: -25%;
}
.hover\:-translate-x-2\/4:hover {
--tw-translate-x: -50%;
}
.hover\:-translate-x-3\/4:hover {
--tw-translate-x: -75%;
}
.hover\:-translate-x-full:hover {
--tw-translate-x: -100%;
}
.hover\:translate-y-0:hover {
--tw-translate-y: 0px;
}
.hover\:translate-y-1:hover {
--tw-translate-y: 0.25rem;
}
.hover\:translate-y-2:hover {
--tw-translate-y: 0.5rem;
}
.hover\:translate-y-3:hover {
--tw-translate-y: 0.75rem;
}
.hover\:translate-y-4:hover {
--tw-translate-y: 1rem;
}
.hover\:translate-y-5:hover {
--tw-translate-y: 1.25rem;
}
.hover\:translate-y-6:hover {
--tw-translate-y: 1.5rem;
}
.hover\:translate-y-7:hover {
--tw-translate-y: 1.75rem;
}
.hover\:translate-y-8:hover {
--tw-translate-y: 2rem;
}
.hover\:translate-y-9:hover {
--tw-translate-y: 2.25rem;
}
.hover\:translate-y-10:hover {
--tw-translate-y: 2.5rem;
}
.hover\:translate-y-11:hover {
--tw-translate-y: 2.75rem;
}
.hover\:translate-y-12:hover {
--tw-translate-y: 3rem;
}
.hover\:translate-y-14:hover {
--tw-translate-y: 3.5rem;
}
.hover\:translate-y-16:hover {
--tw-translate-y: 4rem;
}
.hover\:translate-y-20:hover {
--tw-translate-y: 5rem;
}
.hover\:translate-y-24:hover {
--tw-translate-y: 6rem;
}
.hover\:translate-y-28:hover {
--tw-translate-y: 7rem;
}
.hover\:translate-y-32:hover {
--tw-translate-y: 8rem;
}
.hover\:translate-y-36:hover {
--tw-translate-y: 9rem;
}
.hover\:translate-y-40:hover {
--tw-translate-y: 10rem;
}
.hover\:translate-y-44:hover {
--tw-translate-y: 11rem;
}
.hover\:translate-y-48:hover {
--tw-translate-y: 12rem;
}
.hover\:translate-y-52:hover {
--tw-translate-y: 13rem;
}
.hover\:translate-y-56:hover {
--tw-translate-y: 14rem;
}
.hover\:translate-y-60:hover {
--tw-translate-y: 15rem;
}
.hover\:translate-y-64:hover {
--tw-translate-y: 16rem;
}
.hover\:translate-y-72:hover {
--tw-translate-y: 18rem;
}
.hover\:translate-y-80:hover {
--tw-translate-y: 20rem;
}
.hover\:translate-y-96:hover {
--tw-translate-y: 24rem;
}
.hover\:translate-y-px:hover {
--tw-translate-y: 1px;
}
.hover\:translate-y-0\.5:hover {
--tw-translate-y: 0.125rem;
}
.hover\:translate-y-1\.5:hover {
--tw-translate-y: 0.375rem;
}
.hover\:translate-y-2\.5:hover {
--tw-translate-y: 0.625rem;
}
.hover\:translate-y-3\.5:hover {
--tw-translate-y: 0.875rem;
}
.hover\:-translate-y-0:hover {
--tw-translate-y: 0px;
}
.hover\:-translate-y-1:hover {
--tw-translate-y: -0.25rem;
}
.hover\:-translate-y-2:hover {
--tw-translate-y: -0.5rem;
}
.hover\:-translate-y-3:hover {
--tw-translate-y: -0.75rem;
}
.hover\:-translate-y-4:hover {
--tw-translate-y: -1rem;
}
.hover\:-translate-y-5:hover {
--tw-translate-y: -1.25rem;
}
.hover\:-translate-y-6:hover {
--tw-translate-y: -1.5rem;
}
.hover\:-translate-y-7:hover {
--tw-translate-y: -1.75rem;
}
.hover\:-translate-y-8:hover {
--tw-translate-y: -2rem;
}
.hover\:-translate-y-9:hover {
--tw-translate-y: -2.25rem;
}
.hover\:-translate-y-10:hover {
--tw-translate-y: -2.5rem;
}
.hover\:-translate-y-11:hover {
--tw-translate-y: -2.75rem;
}
.hover\:-translate-y-12:hover {
--tw-translate-y: -3rem;
}
.hover\:-translate-y-14:hover {
--tw-translate-y: -3.5rem;
}
.hover\:-translate-y-16:hover {
--tw-translate-y: -4rem;
}
.hover\:-translate-y-20:hover {
--tw-translate-y: -5rem;
}
.hover\:-translate-y-24:hover {
--tw-translate-y: -6rem;
}
.hover\:-translate-y-28:hover {
--tw-translate-y: -7rem;
}
.hover\:-translate-y-32:hover {
--tw-translate-y: -8rem;
}
.hover\:-translate-y-36:hover {
--tw-translate-y: -9rem;
}
.hover\:-translate-y-40:hover {
--tw-translate-y: -10rem;
}
.hover\:-translate-y-44:hover {
--tw-translate-y: -11rem;
}
.hover\:-translate-y-48:hover {
--tw-translate-y: -12rem;
}
.hover\:-translate-y-52:hover {
--tw-translate-y: -13rem;
}
.hover\:-translate-y-56:hover {
--tw-translate-y: -14rem;
}
.hover\:-translate-y-60:hover {
--tw-translate-y: -15rem;
}
.hover\:-translate-y-64:hover {
--tw-translate-y: -16rem;
}
.hover\:-translate-y-72:hover {
--tw-translate-y: -18rem;
}
.hover\:-translate-y-80:hover {
--tw-translate-y: -20rem;
}
.hover\:-translate-y-96:hover {
--tw-translate-y: -24rem;
}
.hover\:-translate-y-px:hover {
--tw-translate-y: -1px;
}
.hover\:-translate-y-0\.5:hover {
--tw-translate-y: -0.125rem;
}
.hover\:-translate-y-1\.5:hover {
--tw-translate-y: -0.375rem;
}
.hover\:-translate-y-2\.5:hover {
--tw-translate-y: -0.625rem;
}
.hover\:-translate-y-3\.5:hover {
--tw-translate-y: -0.875rem;
}
.hover\:translate-y-1\/2:hover {
--tw-translate-y: 50%;
}
.hover\:translate-y-1\/3:hover {
--tw-translate-y: 33.333333%;
}
.hover\:translate-y-2\/3:hover {
--tw-translate-y: 66.666667%;
}
.hover\:translate-y-1\/4:hover {
--tw-translate-y: 25%;
}
.hover\:translate-y-2\/4:hover {
--tw-translate-y: 50%;
}
.hover\:translate-y-3\/4:hover {
--tw-translate-y: 75%;
}
.hover\:translate-y-full:hover {
--tw-translate-y: 100%;
}
.hover\:-translate-y-1\/2:hover {
--tw-translate-y: -50%;
}
.hover\:-translate-y-1\/3:hover {
--tw-translate-y: -33.333333%;
}
.hover\:-translate-y-2\/3:hover {
--tw-translate-y: -66.666667%;
}
.hover\:-translate-y-1\/4:hover {
--tw-translate-y: -25%;
}
.hover\:-translate-y-2\/4:hover {
--tw-translate-y: -50%;
}
.hover\:-translate-y-3\/4:hover {
--tw-translate-y: -75%;
}
.hover\:-translate-y-full:hover {
--tw-translate-y: -100%;
}
.focus\:translate-x-0:focus {
--tw-translate-x: 0px;
}
.focus\:translate-x-1:focus {
--tw-translate-x: 0.25rem;
}
.focus\:translate-x-2:focus {
--tw-translate-x: 0.5rem;
}
.focus\:translate-x-3:focus {
--tw-translate-x: 0.75rem;
}
.focus\:translate-x-4:focus {
--tw-translate-x: 1rem;
}
.focus\:translate-x-5:focus {
--tw-translate-x: 1.25rem;
}
.focus\:translate-x-6:focus {
--tw-translate-x: 1.5rem;
}
.focus\:translate-x-7:focus {
--tw-translate-x: 1.75rem;
}
.focus\:translate-x-8:focus {
--tw-translate-x: 2rem;
}
.focus\:translate-x-9:focus {
--tw-translate-x: 2.25rem;
}
.focus\:translate-x-10:focus {
--tw-translate-x: 2.5rem;
}
.focus\:translate-x-11:focus {
--tw-translate-x: 2.75rem;
}
.focus\:translate-x-12:focus {
--tw-translate-x: 3rem;
}
.focus\:translate-x-14:focus {
--tw-translate-x: 3.5rem;
}
.focus\:translate-x-16:focus {
--tw-translate-x: 4rem;
}
.focus\:translate-x-20:focus {
--tw-translate-x: 5rem;
}
.focus\:translate-x-24:focus {
--tw-translate-x: 6rem;
}
.focus\:translate-x-28:focus {
--tw-translate-x: 7rem;
}
.focus\:translate-x-32:focus {
--tw-translate-x: 8rem;
}
.focus\:translate-x-36:focus {
--tw-translate-x: 9rem;
}
.focus\:translate-x-40:focus {
--tw-translate-x: 10rem;
}
.focus\:translate-x-44:focus {
--tw-translate-x: 11rem;
}
.focus\:translate-x-48:focus {
--tw-translate-x: 12rem;
}
.focus\:translate-x-52:focus {
--tw-translate-x: 13rem;
}
.focus\:translate-x-56:focus {
--tw-translate-x: 14rem;
}
.focus\:translate-x-60:focus {
--tw-translate-x: 15rem;
}
.focus\:translate-x-64:focus {
--tw-translate-x: 16rem;
}
.focus\:translate-x-72:focus {
--tw-translate-x: 18rem;
}
.focus\:translate-x-80:focus {
--tw-translate-x: 20rem;
}
.focus\:translate-x-96:focus {
--tw-translate-x: 24rem;
}
.focus\:translate-x-px:focus {
--tw-translate-x: 1px;
}
.focus\:translate-x-0\.5:focus {
--tw-translate-x: 0.125rem;
}
.focus\:translate-x-1\.5:focus {
--tw-translate-x: 0.375rem;
}
.focus\:translate-x-2\.5:focus {
--tw-translate-x: 0.625rem;
}
.focus\:translate-x-3\.5:focus {
--tw-translate-x: 0.875rem;
}
.focus\:-translate-x-0:focus {
--tw-translate-x: 0px;
}
.focus\:-translate-x-1:focus {
--tw-translate-x: -0.25rem;
}
.focus\:-translate-x-2:focus {
--tw-translate-x: -0.5rem;
}
.focus\:-translate-x-3:focus {
--tw-translate-x: -0.75rem;
}
.focus\:-translate-x-4:focus {
--tw-translate-x: -1rem;
}
.focus\:-translate-x-5:focus {
--tw-translate-x: -1.25rem;
}
.focus\:-translate-x-6:focus {
--tw-translate-x: -1.5rem;
}
.focus\:-translate-x-7:focus {
--tw-translate-x: -1.75rem;
}
.focus\:-translate-x-8:focus {
--tw-translate-x: -2rem;
}
.focus\:-translate-x-9:focus {
--tw-translate-x: -2.25rem;
}
.focus\:-translate-x-10:focus {
--tw-translate-x: -2.5rem;
}
.focus\:-translate-x-11:focus {
--tw-translate-x: -2.75rem;
}
.focus\:-translate-x-12:focus {
--tw-translate-x: -3rem;
}
.focus\:-translate-x-14:focus {
--tw-translate-x: -3.5rem;
}
.focus\:-translate-x-16:focus {
--tw-translate-x: -4rem;
}
.focus\:-translate-x-20:focus {
--tw-translate-x: -5rem;
}
.focus\:-translate-x-24:focus {
--tw-translate-x: -6rem;
}
.focus\:-translate-x-28:focus {
--tw-translate-x: -7rem;
}
.focus\:-translate-x-32:focus {
--tw-translate-x: -8rem;
}
.focus\:-translate-x-36:focus {
--tw-translate-x: -9rem;
}
.focus\:-translate-x-40:focus {
--tw-translate-x: -10rem;
}
.focus\:-translate-x-44:focus {
--tw-translate-x: -11rem;
}
.focus\:-translate-x-48:focus {
--tw-translate-x: -12rem;
}
.focus\:-translate-x-52:focus {
--tw-translate-x: -13rem;
}
.focus\:-translate-x-56:focus {
--tw-translate-x: -14rem;
}
.focus\:-translate-x-60:focus {
--tw-translate-x: -15rem;
}
.focus\:-translate-x-64:focus {
--tw-translate-x: -16rem;
}
.focus\:-translate-x-72:focus {
--tw-translate-x: -18rem;
}
.focus\:-translate-x-80:focus {
--tw-translate-x: -20rem;
}
.focus\:-translate-x-96:focus {
--tw-translate-x: -24rem;
}
.focus\:-translate-x-px:focus {
--tw-translate-x: -1px;
}
.focus\:-translate-x-0\.5:focus {
--tw-translate-x: -0.125rem;
}
.focus\:-translate-x-1\.5:focus {
--tw-translate-x: -0.375rem;
}
.focus\:-translate-x-2\.5:focus {
--tw-translate-x: -0.625rem;
}
.focus\:-translate-x-3\.5:focus {
--tw-translate-x: -0.875rem;
}
.focus\:translate-x-1\/2:focus {
--tw-translate-x: 50%;
}
.focus\:translate-x-1\/3:focus {
--tw-translate-x: 33.333333%;
}
.focus\:translate-x-2\/3:focus {
--tw-translate-x: 66.666667%;
}
.focus\:translate-x-1\/4:focus {
--tw-translate-x: 25%;
}
.focus\:translate-x-2\/4:focus {
--tw-translate-x: 50%;
}
.focus\:translate-x-3\/4:focus {
--tw-translate-x: 75%;
}
.focus\:translate-x-full:focus {
--tw-translate-x: 100%;
}
.focus\:-translate-x-1\/2:focus {
--tw-translate-x: -50%;
}
.focus\:-translate-x-1\/3:focus {
--tw-translate-x: -33.333333%;
}
.focus\:-translate-x-2\/3:focus {
--tw-translate-x: -66.666667%;
}
.focus\:-translate-x-1\/4:focus {
--tw-translate-x: -25%;
}
.focus\:-translate-x-2\/4:focus {
--tw-translate-x: -50%;
}
.focus\:-translate-x-3\/4:focus {
--tw-translate-x: -75%;
}
.focus\:-translate-x-full:focus {
--tw-translate-x: -100%;
}
.focus\:translate-y-0:focus {
--tw-translate-y: 0px;
}
.focus\:translate-y-1:focus {
--tw-translate-y: 0.25rem;
}
.focus\:translate-y-2:focus {
--tw-translate-y: 0.5rem;
}
.focus\:translate-y-3:focus {
--tw-translate-y: 0.75rem;
}
.focus\:translate-y-4:focus {
--tw-translate-y: 1rem;
}
.focus\:translate-y-5:focus {
--tw-translate-y: 1.25rem;
}
.focus\:translate-y-6:focus {
--tw-translate-y: 1.5rem;
}
.focus\:translate-y-7:focus {
--tw-translate-y: 1.75rem;
}
.focus\:translate-y-8:focus {
--tw-translate-y: 2rem;
}
.focus\:translate-y-9:focus {
--tw-translate-y: 2.25rem;
}
.focus\:translate-y-10:focus {
--tw-translate-y: 2.5rem;
}
.focus\:translate-y-11:focus {
--tw-translate-y: 2.75rem;
}
.focus\:translate-y-12:focus {
--tw-translate-y: 3rem;
}
.focus\:translate-y-14:focus {
--tw-translate-y: 3.5rem;
}
.focus\:translate-y-16:focus {
--tw-translate-y: 4rem;
}
.focus\:translate-y-20:focus {
--tw-translate-y: 5rem;
}
.focus\:translate-y-24:focus {
--tw-translate-y: 6rem;
}
.focus\:translate-y-28:focus {
--tw-translate-y: 7rem;
}
.focus\:translate-y-32:focus {
--tw-translate-y: 8rem;
}
.focus\:translate-y-36:focus {
--tw-translate-y: 9rem;
}
.focus\:translate-y-40:focus {
--tw-translate-y: 10rem;
}
.focus\:translate-y-44:focus {
--tw-translate-y: 11rem;
}
.focus\:translate-y-48:focus {
--tw-translate-y: 12rem;
}
.focus\:translate-y-52:focus {
--tw-translate-y: 13rem;
}
.focus\:translate-y-56:focus {
--tw-translate-y: 14rem;
}
.focus\:translate-y-60:focus {
--tw-translate-y: 15rem;
}
.focus\:translate-y-64:focus {
--tw-translate-y: 16rem;
}
.focus\:translate-y-72:focus {
--tw-translate-y: 18rem;
}
.focus\:translate-y-80:focus {
--tw-translate-y: 20rem;
}
.focus\:translate-y-96:focus {
--tw-translate-y: 24rem;
}
.focus\:translate-y-px:focus {
--tw-translate-y: 1px;
}
.focus\:translate-y-0\.5:focus {
--tw-translate-y: 0.125rem;
}
.focus\:translate-y-1\.5:focus {
--tw-translate-y: 0.375rem;
}
.focus\:translate-y-2\.5:focus {
--tw-translate-y: 0.625rem;
}
.focus\:translate-y-3\.5:focus {
--tw-translate-y: 0.875rem;
}
.focus\:-translate-y-0:focus {
--tw-translate-y: 0px;
}
.focus\:-translate-y-1:focus {
--tw-translate-y: -0.25rem;
}
.focus\:-translate-y-2:focus {
--tw-translate-y: -0.5rem;
}
.focus\:-translate-y-3:focus {
--tw-translate-y: -0.75rem;
}
.focus\:-translate-y-4:focus {
--tw-translate-y: -1rem;
}
.focus\:-translate-y-5:focus {
--tw-translate-y: -1.25rem;
}
.focus\:-translate-y-6:focus {
--tw-translate-y: -1.5rem;
}
.focus\:-translate-y-7:focus {
--tw-translate-y: -1.75rem;
}
.focus\:-translate-y-8:focus {
--tw-translate-y: -2rem;
}
.focus\:-translate-y-9:focus {
--tw-translate-y: -2.25rem;
}
.focus\:-translate-y-10:focus {
--tw-translate-y: -2.5rem;
}
.focus\:-translate-y-11:focus {
--tw-translate-y: -2.75rem;
}
.focus\:-translate-y-12:focus {
--tw-translate-y: -3rem;
}
.focus\:-translate-y-14:focus {
--tw-translate-y: -3.5rem;
}
.focus\:-translate-y-16:focus {
--tw-translate-y: -4rem;
}
.focus\:-translate-y-20:focus {
--tw-translate-y: -5rem;
}
.focus\:-translate-y-24:focus {
--tw-translate-y: -6rem;
}
.focus\:-translate-y-28:focus {
--tw-translate-y: -7rem;
}
.focus\:-translate-y-32:focus {
--tw-translate-y: -8rem;
}
.focus\:-translate-y-36:focus {
--tw-translate-y: -9rem;
}
.focus\:-translate-y-40:focus {
--tw-translate-y: -10rem;
}
.focus\:-translate-y-44:focus {
--tw-translate-y: -11rem;
}
.focus\:-translate-y-48:focus {
--tw-translate-y: -12rem;
}
.focus\:-translate-y-52:focus {
--tw-translate-y: -13rem;
}
.focus\:-translate-y-56:focus {
--tw-translate-y: -14rem;
}
.focus\:-translate-y-60:focus {
--tw-translate-y: -15rem;
}
.focus\:-translate-y-64:focus {
--tw-translate-y: -16rem;
}
.focus\:-translate-y-72:focus {
--tw-translate-y: -18rem;
}
.focus\:-translate-y-80:focus {
--tw-translate-y: -20rem;
}
.focus\:-translate-y-96:focus {
--tw-translate-y: -24rem;
}
.focus\:-translate-y-px:focus {
--tw-translate-y: -1px;
}
.focus\:-translate-y-0\.5:focus {
--tw-translate-y: -0.125rem;
}
.focus\:-translate-y-1\.5:focus {
--tw-translate-y: -0.375rem;
}
.focus\:-translate-y-2\.5:focus {
--tw-translate-y: -0.625rem;
}
.focus\:-translate-y-3\.5:focus {
--tw-translate-y: -0.875rem;
}
.focus\:translate-y-1\/2:focus {
--tw-translate-y: 50%;
}
.focus\:translate-y-1\/3:focus {
--tw-translate-y: 33.333333%;
}
.focus\:translate-y-2\/3:focus {
--tw-translate-y: 66.666667%;
}
.focus\:translate-y-1\/4:focus {
--tw-translate-y: 25%;
}
.focus\:translate-y-2\/4:focus {
--tw-translate-y: 50%;
}
.focus\:translate-y-3\/4:focus {
--tw-translate-y: 75%;
}
.focus\:translate-y-full:focus {
--tw-translate-y: 100%;
}
.focus\:-translate-y-1\/2:focus {
--tw-translate-y: -50%;
}
.focus\:-translate-y-1\/3:focus {
--tw-translate-y: -33.333333%;
}
.focus\:-translate-y-2\/3:focus {
--tw-translate-y: -66.666667%;
}
.focus\:-translate-y-1\/4:focus {
--tw-translate-y: -25%;
}
.focus\:-translate-y-2\/4:focus {
--tw-translate-y: -50%;
}
.focus\:-translate-y-3\/4:focus {
--tw-translate-y: -75%;
}
.focus\:-translate-y-full:focus {
--tw-translate-y: -100%;
}
.rotate-0 {
--tw-rotate: 0deg;
}
.rotate-1 {
--tw-rotate: 1deg;
}
.rotate-2 {
--tw-rotate: 2deg;
}
.rotate-3 {
--tw-rotate: 3deg;
}
.rotate-6 {
--tw-rotate: 6deg;
}
.rotate-12 {
--tw-rotate: 12deg;
}
.rotate-45 {
--tw-rotate: 45deg;
}
.rotate-90 {
--tw-rotate: 90deg;
}
.rotate-180 {
--tw-rotate: 180deg;
}
.-rotate-180 {
--tw-rotate: -180deg;
}
.-rotate-90 {
--tw-rotate: -90deg;
}
.-rotate-45 {
--tw-rotate: -45deg;
}
.-rotate-12 {
--tw-rotate: -12deg;
}
.-rotate-6 {
--tw-rotate: -6deg;
}
.-rotate-3 {
--tw-rotate: -3deg;
}
.-rotate-2 {
--tw-rotate: -2deg;
}
.-rotate-1 {
--tw-rotate: -1deg;
}
.hover\:rotate-0:hover {
--tw-rotate: 0deg;
}
.hover\:rotate-1:hover {
--tw-rotate: 1deg;
}
.hover\:rotate-2:hover {
--tw-rotate: 2deg;
}
.hover\:rotate-3:hover {
--tw-rotate: 3deg;
}
.hover\:rotate-6:hover {
--tw-rotate: 6deg;
}
.hover\:rotate-12:hover {
--tw-rotate: 12deg;
}
.hover\:rotate-45:hover {
--tw-rotate: 45deg;
}
.hover\:rotate-90:hover {
--tw-rotate: 90deg;
}
.hover\:rotate-180:hover {
--tw-rotate: 180deg;
}
.hover\:-rotate-180:hover {
--tw-rotate: -180deg;
}
.hover\:-rotate-90:hover {
--tw-rotate: -90deg;
}
.hover\:-rotate-45:hover {
--tw-rotate: -45deg;
}
.hover\:-rotate-12:hover {
--tw-rotate: -12deg;
}
.hover\:-rotate-6:hover {
--tw-rotate: -6deg;
}
.hover\:-rotate-3:hover {
--tw-rotate: -3deg;
}
.hover\:-rotate-2:hover {
--tw-rotate: -2deg;
}
.hover\:-rotate-1:hover {
--tw-rotate: -1deg;
}
.focus\:rotate-0:focus {
--tw-rotate: 0deg;
}
.focus\:rotate-1:focus {
--tw-rotate: 1deg;
}
.focus\:rotate-2:focus {
--tw-rotate: 2deg;
}
.focus\:rotate-3:focus {
--tw-rotate: 3deg;
}
.focus\:rotate-6:focus {
--tw-rotate: 6deg;
}
.focus\:rotate-12:focus {
--tw-rotate: 12deg;
}
.focus\:rotate-45:focus {
--tw-rotate: 45deg;
}
.focus\:rotate-90:focus {
--tw-rotate: 90deg;
}
.focus\:rotate-180:focus {
--tw-rotate: 180deg;
}
.focus\:-rotate-180:focus {
--tw-rotate: -180deg;
}
.focus\:-rotate-90:focus {
--tw-rotate: -90deg;
}
.focus\:-rotate-45:focus {
--tw-rotate: -45deg;
}
.focus\:-rotate-12:focus {
--tw-rotate: -12deg;
}
.focus\:-rotate-6:focus {
--tw-rotate: -6deg;
}
.focus\:-rotate-3:focus {
--tw-rotate: -3deg;
}
.focus\:-rotate-2:focus {
--tw-rotate: -2deg;
}
.focus\:-rotate-1:focus {
--tw-rotate: -1deg;
}
.skew-x-0 {
--tw-skew-x: 0deg;
}
.skew-x-1 {
--tw-skew-x: 1deg;
}
.skew-x-2 {
--tw-skew-x: 2deg;
}
.skew-x-3 {
--tw-skew-x: 3deg;
}
.skew-x-6 {
--tw-skew-x: 6deg;
}
.skew-x-12 {
--tw-skew-x: 12deg;
}
.-skew-x-12 {
--tw-skew-x: -12deg;
}
.-skew-x-6 {
--tw-skew-x: -6deg;
}
.-skew-x-3 {
--tw-skew-x: -3deg;
}
.-skew-x-2 {
--tw-skew-x: -2deg;
}
.-skew-x-1 {
--tw-skew-x: -1deg;
}
.skew-y-0 {
--tw-skew-y: 0deg;
}
.skew-y-1 {
--tw-skew-y: 1deg;
}
.skew-y-2 {
--tw-skew-y: 2deg;
}
.skew-y-3 {
--tw-skew-y: 3deg;
}
.skew-y-6 {
--tw-skew-y: 6deg;
}
.skew-y-12 {
--tw-skew-y: 12deg;
}
.-skew-y-12 {
--tw-skew-y: -12deg;
}
.-skew-y-6 {
--tw-skew-y: -6deg;
}
.-skew-y-3 {
--tw-skew-y: -3deg;
}
.-skew-y-2 {
--tw-skew-y: -2deg;
}
gitextract_6z79ejbg/ ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── lint.yml │ └── run-tests.yml ├── .gitignore ├── .phpcs.xml.dist ├── .travis.yml ├── app/ │ ├── Authors/ │ │ ├── Author.php │ │ ├── AuthorClient.php │ │ └── AuthorRepository.php │ ├── CachesGitHubResponses.php │ ├── Console/ │ │ ├── Commands/ │ │ │ └── Inspire.php │ │ └── Kernel.php │ ├── ContentParser/ │ │ ├── ContentParser.php │ │ ├── ContentParserFacade.php │ │ ├── GitHubMarkdownTransformer.php │ │ ├── MarkdownTransformer.php │ │ └── Transformer.php │ ├── Exceptions/ │ │ ├── GistNotFoundException.php │ │ └── Handler.php │ ├── Gists/ │ │ ├── Comment.php │ │ ├── File.php │ │ ├── FileCollection.php │ │ ├── GistClient.php │ │ ├── GistConfig.php │ │ ├── Gistlog.php │ │ └── GistlogRepository.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Auth/ │ │ │ │ ├── AuthController.php │ │ │ │ ├── ConfirmPasswordController.php │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ └── ResetPasswordController.php │ │ │ ├── AuthorsController.php │ │ │ ├── AuthorsRssController.php │ │ │ ├── Controller.php │ │ │ ├── GistCommentsController.php │ │ │ ├── GistsController.php │ │ │ └── HomeController.php │ │ ├── Kernel.php │ │ └── Middleware/ │ │ ├── Authenticate.php │ │ ├── EncryptCookies.php │ │ ├── PreventRequestsDuringMaintenance.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ ├── Jobs/ │ │ └── Command.php │ ├── Listeners/ │ │ ├── Commands/ │ │ │ └── .gitkeep │ │ └── Events/ │ │ └── .gitkeep │ ├── Models/ │ │ └── User.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── AuthorClientServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── ConfigServiceProvider.php │ │ ├── ContentParserServiceProvider.php │ │ ├── EventServiceProvider.php │ │ ├── GistClientServiceProvider.php │ │ ├── GitHubClientServiceProvider.php │ │ └── RouteServiceProvider.php │ └── Services/ │ └── Registrar.php ├── artisan ├── bin/ │ └── setup.sh ├── bootstrap/ │ ├── app.php │ └── cache/ │ └── .gitignore ├── composer.json ├── config/ │ ├── app.php │ ├── auth.php │ ├── broadcasting.php │ ├── cache.php │ ├── cors.php │ ├── database.php │ ├── filesystems.php │ ├── hashing.php │ ├── logging.php │ ├── mail.php │ ├── queue.php │ ├── services.php │ ├── session.php │ └── view.php ├── contributing.md ├── database/ │ ├── .gitignore │ ├── factories/ │ │ └── .gitkeep │ ├── migrations/ │ │ ├── .gitkeep │ │ ├── 2014_10_12_000000_create_users_table.php │ │ └── 2014_10_12_100000_create_password_resets_table.php │ └── seeders/ │ ├── .gitkeep │ └── DatabaseSeeder.php ├── nitpick.json ├── package.json ├── phpspec.yml ├── phpunit.xml ├── public/ │ ├── .htaccess │ ├── css/ │ │ ├── app.css │ │ └── landing.css │ ├── index.php │ ├── js/ │ │ ├── app.js │ │ └── commentForm.js │ ├── mix-manifest.json │ └── robots.txt ├── readme.md ├── resources/ │ ├── js/ │ │ ├── app.js │ │ ├── bootstrap.js │ │ └── components/ │ │ ├── GistAuthModal.vue │ │ ├── GistComment.vue │ │ ├── GistComments.vue │ │ ├── GistStar.vue │ │ └── HomePageTabs.vue │ ├── lang/ │ │ └── en/ │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php │ ├── less/ │ │ ├── app.less │ │ ├── github.less │ │ ├── landing.less │ │ └── tailwind.less │ └── views/ │ ├── authors/ │ │ ├── feed.blade.php │ │ └── show.blade.php │ ├── components/ │ │ └── alert.blade.php │ ├── create.blade.php │ ├── errors/ │ │ ├── 404.blade.php │ │ └── 503.blade.php │ ├── gistlogs/ │ │ ├── comment_form.blade.php │ │ └── show.blade.php │ ├── landing.blade.php │ ├── layouts/ │ │ ├── app.blade.php │ │ ├── error.blade.php │ │ └── rss.blade.php │ ├── login.blade.php │ ├── partials/ │ │ └── flash-messages.blade.php │ └── vendor/ │ └── .gitkeep ├── routes/ │ ├── api.php │ ├── channels.php │ ├── console.php │ └── web.php ├── server.php ├── storage/ │ ├── .gitignore │ ├── app/ │ │ └── .gitignore │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ └── logs/ │ └── .gitignore ├── tailwind.config.js ├── tests/ │ ├── BrowserKitTestCase.php │ ├── CreatesApplication.php │ ├── Feature/ │ │ ├── AuthTest.php │ │ ├── AuthorClientTest.php │ │ ├── AuthorPageTest.php │ │ ├── CommentTest.php │ │ ├── ContentParserTest.php │ │ ├── FileTest.php │ │ ├── GistClientTest.php │ │ ├── GistConfigTest.php │ │ ├── GistlogRepositoryTest.php │ │ ├── GistlogTest.php │ │ └── GitHubClientTest.php │ ├── FixtureGistClient.php │ ├── GistFixtureHelpers.php │ ├── SpacePadTransformer.php │ ├── TestCase.php │ ├── TrimTransformer.php │ └── fixtures/ │ └── gists/ │ ├── 002ed429c7c21ab89300/ │ │ └── comments.json │ ├── 002ed429c7c21ab89300.json │ ├── 272f372732bf4d69bd0f.json │ ├── 2c2769b21e512eabdd72.json │ ├── 8f5ea4d44dbc5ccb77a3.json │ ├── 9e5ea4d44dbc5ccb77b4.json │ ├── aac58f02ec1aaaad7f88.json │ ├── aac5edd61c183dd26392.json │ └── bb5ea4d44dbc5ccb77s7.json ├── travis.php.ini └── webpack.mix.js
SYMBOL INDEX (1473 symbols across 74 files)
FILE: app/Authors/Author.php
class Author (line 8) | class Author
method fromGitHub (line 36) | public static function fromGitHub($gitHubUser, $gitHubGists = [])
method getAnonymous (line 54) | public static function getAnonymous()
method hasGists (line 72) | public function hasGists()
FILE: app/Authors/AuthorClient.php
class AuthorClient (line 14) | class AuthorClient
method __construct (line 28) | public function __construct(GitHubClient $github, GistClient $gistClient)
method getGitHubClient (line 34) | public function getGitHubClient(): GitHubClient
method getGistClient (line 39) | public function getGistClient(): GistClient
method getAuthor (line 44) | public function getAuthor(string $authorSlug): array
method getAuthorGists (line 55) | public function getAuthorGists(string $username): array
method getAuthorPublishableGists (line 62) | public function getAuthorPublishableGists(string $username): array
method gistIsDraft (line 77) | private function gistIsDraft(array $gist): bool
method gistIsGistlogPublished (line 88) | private function gistIsGistlogPublished(array $gist): bool
FILE: app/Authors/AuthorRepository.php
class AuthorRepository (line 5) | class AuthorRepository
method __construct (line 12) | public function __construct(AuthorClient $authorClient)
method findByUsername (line 21) | public function findByUsername($username)
FILE: app/CachesGitHubResponses.php
type CachesGitHubResponses (line 5) | trait CachesGitHubResponses
method cacheKey (line 14) | public static function cacheKey($method, $data = null)
FILE: app/Console/Commands/Inspire.php
class Inspire (line 8) | class Inspire extends Command
method handle (line 29) | public function handle()
FILE: app/Console/Kernel.php
class Kernel (line 8) | class Kernel extends ConsoleKernel
method schedule (line 25) | protected function schedule(Schedule $schedule)
method commands (line 36) | protected function commands()
FILE: app/ContentParser/ContentParser.php
class ContentParser (line 5) | class ContentParser
method push (line 9) | public function push(Transformer $transformer)
method transform (line 14) | public function transform($content)
FILE: app/ContentParser/ContentParserFacade.php
class ContentParserFacade (line 7) | class ContentParserFacade extends Facade
method getFacadeAccessor (line 9) | protected static function getFacadeAccessor()
FILE: app/ContentParser/GitHubMarkdownTransformer.php
class GitHubMarkdownTransformer (line 8) | class GitHubMarkdownTransformer implements Transformer
method __construct (line 12) | public function __construct(GitHubClient $github)
method transform (line 17) | public function transform($content)
FILE: app/ContentParser/MarkdownTransformer.php
class MarkdownTransformer (line 7) | class MarkdownTransformer implements Transformer
method transform (line 9) | public function transform($content)
FILE: app/ContentParser/Transformer.php
type Transformer (line 5) | interface Transformer
method transform (line 7) | public function transform($content);
FILE: app/Exceptions/GistNotFoundException.php
class GistNotFoundException (line 7) | class GistNotFoundException extends Exception
method __construct (line 11) | public function __construct($gistId, $message)
FILE: app/Exceptions/Handler.php
class Handler (line 9) | class Handler extends ExceptionHandler
method register (line 36) | public function register()
FILE: app/Gists/Comment.php
class Comment (line 9) | class Comment
method fromGitHub (line 30) | public static function fromGitHub($gistId, $githubComment)
method renderHtml (line 47) | public function renderHtml()
method link (line 54) | public function link()
method cacheKey (line 59) | public function cacheKey()
FILE: app/Gists/File.php
class File (line 7) | class File implements Arrayable
method fromGitHub (line 25) | public static function fromGitHub($rawFile)
method multipleFromGitHub (line 43) | public static function multipleFromGitHub($rawFiles)
method toArray (line 53) | public function toArray()
FILE: app/Gists/FileCollection.php
class FileCollection (line 8) | class FileCollection extends Collection
method __construct (line 10) | public function __construct($files)
method getPostFile (line 23) | public function getPostFile(): File
method getAdditionalFiles (line 36) | public function getAdditionalFiles(): self
FILE: app/Gists/GistClient.php
class GistClient (line 16) | class GistClient
method __construct (line 25) | public function __construct(GitHubClient $github)
method getGitHubClient (line 30) | public function getGitHubClient(): GitHubClient
method getGist (line 38) | public function getGist($gistId): array
method getGistComments (line 51) | public function getGistComments($gistId): array
method postGistComment (line 62) | public function postGistComment($gistId, string $comment): array
method starGist (line 70) | public function starGist($gistId)
method unstarGist (line 84) | public function unstarGist($gistId)
method isStarredForUser (line 96) | public function isStarredForUser($gistId): bool
method starCount (line 114) | public function starCount($gistId)
FILE: app/Gists/GistConfig.php
class GistConfig (line 12) | class GistConfig implements ArrayAccess
method fromGitHub (line 34) | public static function fromGitHub($githubGist): self
method offsetExists (line 77) | public function offsetExists($setting): bool
method offsetGet (line 82) | public function offsetGet($setting)
method offsetSet (line 87) | public function offsetSet($setting, $value)
method offsetUnset (line 92) | public function offsetUnset($setting)
FILE: app/Gists/Gistlog.php
class Gistlog (line 11) | class Gistlog
method fromGitHub (line 40) | public static function fromGitHub($githubGist): Gistlog
method renderHtml (line 72) | public function renderHtml(): string
method hasPublishedOnDate (line 81) | public function hasPublishedOnDate(): bool
method isPublic (line 86) | public function isPublic(): bool
method isSecret (line 94) | public function isSecret()
method isAnonymous (line 102) | public function isAnonymous()
method formattedPublishedOnDate (line 107) | public function formattedPublishedOnDate()
method getPreview (line 112) | public function getPreview()
method showFiles (line 127) | public function showFiles()
method localUrl (line 132) | public function localUrl()
method renderMarkdown (line 140) | private function renderMarkdown()
FILE: app/Gists/GistlogRepository.php
class GistlogRepository (line 5) | class GistlogRepository
method __construct (line 12) | public function __construct(GistClient $gistClient)
method findById (line 21) | public function findById($id)
method findByUrl (line 32) | public function findByUrl($url)
method extractIdFromUrl (line 41) | private function extractIdFromUrl($url)
FILE: app/Http/Controllers/Auth/AuthController.php
class AuthController (line 13) | class AuthController extends Controller
method __construct (line 20) | public function __construct()
method redirectToProvider (line 30) | public function redirectToProvider()
method handleProviderCallback (line 44) | public function handleProviderCallback()
method findOrCreateUser (line 59) | private function findOrCreateUser($user)
method getLogin (line 74) | public function getLogin()
method getLogout (line 79) | public function getLogout()
FILE: app/Http/Controllers/Auth/ConfirmPasswordController.php
class ConfirmPasswordController (line 9) | class ConfirmPasswordController extends Controller
method __construct (line 35) | public function __construct()
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
class ForgotPasswordController (line 8) | class ForgotPasswordController extends Controller
FILE: app/Http/Controllers/Auth/ResetPasswordController.php
class ResetPasswordController (line 9) | class ResetPasswordController extends Controller
FILE: app/Http/Controllers/AuthorsController.php
class AuthorsController (line 9) | class AuthorsController extends Controller
method __construct (line 16) | public function __construct(AuthorRepository $repository)
method show (line 21) | public function show($username)
FILE: app/Http/Controllers/AuthorsRssController.php
class AuthorsRssController (line 7) | class AuthorsRssController extends Controller
method __construct (line 14) | public function __construct(AuthorRepository $repository)
method show (line 19) | public function show($username)
FILE: app/Http/Controllers/Controller.php
class Controller (line 9) | class Controller extends BaseController
FILE: app/Http/Controllers/GistCommentsController.php
class GistCommentsController (line 11) | class GistCommentsController extends Controller
method __construct (line 18) | public function __construct(GistClient $gistClient)
method jsonIndex (line 23) | public function jsonIndex($username, $gistId)
method store (line 36) | public function store(Request $request, GistClient $client, $gistId)
FILE: app/Http/Controllers/GistsController.php
class GistsController (line 15) | class GistsController extends Controller
method __construct (line 19) | public function __construct(GistlogRepository $repository)
method storeAndRedirect (line 24) | public function storeAndRedirect(Request $request)
method show (line 46) | public function show($username, $gistId, GistClient $gistClient)
method star (line 67) | protected function star(GistClient $client, $gistId)
method unstar (line 82) | protected function unstar(GistClient $client, $gistId)
method starCount (line 97) | public function starCount(GistClient $client, $gistId)
FILE: app/Http/Controllers/HomeController.php
class HomeController (line 5) | class HomeController extends Controller
method index (line 7) | public function index()
method createForm (line 12) | public function createForm()
FILE: app/Http/Kernel.php
class Kernel (line 7) | class Kernel extends HttpKernel
FILE: app/Http/Middleware/Authenticate.php
class Authenticate (line 7) | class Authenticate extends Middleware
method redirectTo (line 15) | protected function redirectTo($request)
FILE: app/Http/Middleware/EncryptCookies.php
class EncryptCookies (line 7) | class EncryptCookies extends Middleware
FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
class PreventRequestsDuringMaintenance (line 7) | class PreventRequestsDuringMaintenance extends Middleware
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
class RedirectIfAuthenticated (line 10) | class RedirectIfAuthenticated
method handle (line 20) | public function handle(Request $request, Closure $next, ...$guards)
FILE: app/Http/Middleware/TrimStrings.php
class TrimStrings (line 7) | class TrimStrings extends Middleware
FILE: app/Http/Middleware/TrustHosts.php
class TrustHosts (line 7) | class TrustHosts extends Middleware
method hosts (line 14) | public function hosts()
FILE: app/Http/Middleware/TrustProxies.php
class TrustProxies (line 8) | class TrustProxies extends Middleware
FILE: app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken (line 7) | class VerifyCsrfToken extends Middleware
FILE: app/Jobs/Command.php
class Command (line 5) | abstract class Command
FILE: app/Models/User.php
class User (line 8) | class User extends Authenticatable
FILE: app/Providers/AppServiceProvider.php
class AppServiceProvider (line 7) | class AppServiceProvider extends ServiceProvider
method boot (line 9) | public function boot()
method register (line 14) | public function register()
FILE: app/Providers/AuthServiceProvider.php
class AuthServiceProvider (line 7) | class AuthServiceProvider extends ServiceProvider
method boot (line 23) | public function boot()
FILE: app/Providers/AuthorClientServiceProvider.php
class AuthorClientServiceProvider (line 10) | class AuthorClientServiceProvider extends ServiceProvider
method register (line 12) | public function register()
FILE: app/Providers/BroadcastServiceProvider.php
class BroadcastServiceProvider (line 8) | class BroadcastServiceProvider extends ServiceProvider
method boot (line 15) | public function boot()
FILE: app/Providers/ConfigServiceProvider.php
class ConfigServiceProvider (line 7) | class ConfigServiceProvider extends ServiceProvider
method register (line 18) | public function register()
FILE: app/Providers/ContentParserServiceProvider.php
class ContentParserServiceProvider (line 9) | class ContentParserServiceProvider extends ServiceProvider
method register (line 16) | public function register()
FILE: app/Providers/EventServiceProvider.php
class EventServiceProvider (line 7) | class EventServiceProvider extends ServiceProvider
method boot (line 25) | public function boot()
FILE: app/Providers/GistClientServiceProvider.php
class GistClientServiceProvider (line 9) | class GistClientServiceProvider extends ServiceProvider
method register (line 11) | public function register()
FILE: app/Providers/GitHubClientServiceProvider.php
class GitHubClientServiceProvider (line 8) | class GitHubClientServiceProvider extends ServiceProvider
method register (line 10) | public function register()
FILE: app/Providers/RouteServiceProvider.php
class RouteServiceProvider (line 11) | class RouteServiceProvider extends ServiceProvider
method boot (line 36) | public function boot()
method configureRateLimiting (line 55) | protected function configureRateLimiting()
FILE: app/Services/Registrar.php
class Registrar (line 10) | class Registrar implements RegistrarContract
method validator (line 18) | public function validator(array $data)
method create (line 33) | public function create(array $data)
FILE: database/migrations/2014_10_12_000000_create_users_table.php
class CreateUsersTable (line 7) | class CreateUsersTable extends Migration
method up (line 9) | public function up()
method down (line 25) | public function down()
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
class CreatePasswordResetsTable (line 7) | class CreatePasswordResetsTable extends Migration
method up (line 9) | public function up()
method down (line 18) | public function down()
FILE: database/seeders/DatabaseSeeder.php
class DatabaseSeeder (line 8) | class DatabaseSeeder extends Seeder
method run (line 15) | public function run()
FILE: public/js/app.js
function assign (line 77) | function assign(ta) {
function destroy (line 251) | function destroy(ta) {
function update (line 258) | function update(ta) {
function createInstance (line 528) | function createInstance(defaultConfig) {
function Cancel (line 589) | function Cancel(message) {
function CancelToken (line 621) | function CancelToken(executor) {
function Axios (line 708) | function Axios(instanceConfig) {
function InterceptorManager (line 805) | function InterceptorManager() {
function throwIfCancellationRequested (line 934) | function throwIfCancellationRequested(config) {
function getMergedValue (line 1095) | function getMergedValue(target, source) {
function mergeDeepProperties (line 1106) | function mergeDeepProperties(prop) {
function setContentTypeIfUnset (line 1242) | function setContentTypeIfUnset(headers, value) {
function getDefaultAdapter (line 1248) | function getDefaultAdapter() {
function encode (line 1368) | function encode(val) {
function resolveURL (line 1601) | function resolveURL(url) {
function isArray (line 1801) | function isArray(val) {
function isUndefined (line 1811) | function isUndefined(val) {
function isBuffer (line 1821) | function isBuffer(val) {
function isArrayBuffer (line 1832) | function isArrayBuffer(val) {
function isFormData (line 1842) | function isFormData(val) {
function isArrayBufferView (line 1852) | function isArrayBufferView(val) {
function isString (line 1868) | function isString(val) {
function isNumber (line 1878) | function isNumber(val) {
function isObject (line 1888) | function isObject(val) {
function isPlainObject (line 1898) | function isPlainObject(val) {
function isDate (line 1913) | function isDate(val) {
function isFile (line 1923) | function isFile(val) {
function isBlob (line 1933) | function isBlob(val) {
function isFunction (line 1943) | function isFunction(val) {
function isStream (line 1953) | function isStream(val) {
function isURLSearchParams (line 1963) | function isURLSearchParams(val) {
function trim (line 1973) | function trim(str) {
function isStandardBrowserEnv (line 1992) | function isStandardBrowserEnv() {
function forEach (line 2016) | function forEach(obj, fn) {
function merge (line 2060) | function merge(/* obj1, obj2, obj3, ... */) {
function extend (line 2088) | function extend(a, b, thisArg) {
function stripBOM (line 2105) | function stripBOM(content) {
function asyncGeneratorStep (line 2333) | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, ar...
function _asyncToGenerator (line 2335) | function _asyncToGenerator(fn) { return function () { var self = this, a...
function apply (line 3255) | function apply(func, thisArg, args) {
function arrayAggregator (line 3275) | function arrayAggregator(array, setter, iteratee, accumulator) {
function arrayEach (line 3295) | function arrayEach(array, iteratee) {
function arrayEachRight (line 3316) | function arrayEachRight(array, iteratee) {
function arrayEvery (line 3337) | function arrayEvery(array, predicate) {
function arrayFilter (line 3358) | function arrayFilter(array, predicate) {
function arrayIncludes (line 3382) | function arrayIncludes(array, value) {
function arrayIncludesWith (line 3396) | function arrayIncludesWith(array, value, comparator) {
function arrayMap (line 3417) | function arrayMap(array, iteratee) {
function arrayPush (line 3436) | function arrayPush(array, values) {
function arrayReduce (line 3459) | function arrayReduce(array, iteratee, accumulator, initAccum) {
function arrayReduceRight (line 3484) | function arrayReduceRight(array, iteratee, accumulator, initAccum) {
function arraySome (line 3505) | function arraySome(array, predicate) {
function asciiToArray (line 3533) | function asciiToArray(string) {
function asciiWords (line 3544) | function asciiWords(string) {
function baseFindKey (line 3559) | function baseFindKey(collection, predicate, eachFunc) {
function baseFindIndex (line 3581) | function baseFindIndex(array, predicate, fromIndex, fromRight) {
function baseIndexOf (line 3602) | function baseIndexOf(array, value, fromIndex) {
function baseIndexOfWith (line 3618) | function baseIndexOfWith(array, value, fromIndex, comparator) {
function baseIsNaN (line 3637) | function baseIsNaN(value) {
function baseMean (line 3650) | function baseMean(array, iteratee) {
function baseProperty (line 3662) | function baseProperty(key) {
function basePropertyOf (line 3675) | function basePropertyOf(object) {
function baseReduce (line 3694) | function baseReduce(collection, iteratee, accumulator, initAccum, eachFu...
function baseSortBy (line 3713) | function baseSortBy(array, comparer) {
function baseSum (line 3732) | function baseSum(array, iteratee) {
function baseTimes (line 3755) | function baseTimes(n, iteratee) {
function baseToPairs (line 3774) | function baseToPairs(object, props) {
function baseTrim (line 3787) | function baseTrim(string) {
function baseUnary (line 3800) | function baseUnary(func) {
function baseValues (line 3816) | function baseValues(object, props) {
function cacheHas (line 3830) | function cacheHas(cache, key) {
function charsStartIndex (line 3843) | function charsStartIndex(strSymbols, chrSymbols) {
function charsEndIndex (line 3860) | function charsEndIndex(strSymbols, chrSymbols) {
function countHolders (line 3875) | function countHolders(array, placeholder) {
function escapeStringChar (line 3913) | function escapeStringChar(chr) {
function getValue (line 3925) | function getValue(object, key) {
function hasUnicode (line 3936) | function hasUnicode(string) {
function hasUnicodeWord (line 3947) | function hasUnicodeWord(string) {
function iteratorToArray (line 3958) | function iteratorToArray(iterator) {
function mapToArray (line 3975) | function mapToArray(map) {
function overArg (line 3993) | function overArg(func, transform) {
function replaceHolders (line 4008) | function replaceHolders(array, placeholder) {
function setToArray (line 4031) | function setToArray(set) {
function setToPairs (line 4048) | function setToPairs(set) {
function strictIndexOf (line 4068) | function strictIndexOf(array, value, fromIndex) {
function strictLastIndexOf (line 4090) | function strictLastIndexOf(array, value, fromIndex) {
function stringSize (line 4107) | function stringSize(string) {
function stringToArray (line 4120) | function stringToArray(string) {
function trimmedEndIndex (line 4134) | function trimmedEndIndex(string) {
function unicodeSize (line 4157) | function unicodeSize(string) {
function unicodeToArray (line 4172) | function unicodeToArray(string) {
function unicodeWords (line 4183) | function unicodeWords(string) {
function lodash (line 4460) | function lodash(value) {
function object (line 4481) | function object() {}
function baseLodash (line 4501) | function baseLodash() {
function LodashWrapper (line 4512) | function LodashWrapper(value, chainAll) {
function LazyWrapper (line 4597) | function LazyWrapper(value) {
function lazyClone (line 4615) | function lazyClone() {
function lazyReverse (line 4634) | function lazyReverse() {
function lazyValue (line 4654) | function lazyValue() {
function Hash (line 4716) | function Hash(entries) {
function hashClear (line 4734) | function hashClear() {
function hashDelete (line 4749) | function hashDelete(key) {
function hashGet (line 4764) | function hashGet(key) {
function hashHas (line 4782) | function hashHas(key) {
function hashSet (line 4797) | function hashSet(key, value) {
function ListCache (line 4820) | function ListCache(entries) {
function listCacheClear (line 4838) | function listCacheClear() {
function listCacheDelete (line 4852) | function listCacheDelete(key) {
function listCacheGet (line 4878) | function listCacheGet(key) {
function listCacheHas (line 4894) | function listCacheHas(key) {
function listCacheSet (line 4908) | function listCacheSet(key, value) {
function MapCache (line 4937) | function MapCache(entries) {
function mapCacheClear (line 4955) | function mapCacheClear() {
function mapCacheDelete (line 4973) | function mapCacheDelete(key) {
function mapCacheGet (line 4988) | function mapCacheGet(key) {
function mapCacheHas (line 5001) | function mapCacheHas(key) {
function mapCacheSet (line 5015) | function mapCacheSet(key, value) {
function SetCache (line 5041) | function SetCache(values) {
function setCacheAdd (line 5061) | function setCacheAdd(value) {
function setCacheHas (line 5075) | function setCacheHas(value) {
function Stack (line 5092) | function Stack(entries) {
function stackClear (line 5104) | function stackClear() {
function stackDelete (line 5118) | function stackDelete(key) {
function stackGet (line 5135) | function stackGet(key) {
function stackHas (line 5148) | function stackHas(key) {
function stackSet (line 5162) | function stackSet(key, value) {
function arrayLikeKeys (line 5195) | function arrayLikeKeys(value, inherited) {
function arraySample (line 5229) | function arraySample(array) {
function arraySampleSize (line 5242) | function arraySampleSize(array, n) {
function arrayShuffle (line 5253) | function arrayShuffle(array) {
function assignMergeValue (line 5266) | function assignMergeValue(object, key, value) {
function assignValue (line 5283) | function assignValue(object, key, value) {
function assocIndexOf (line 5299) | function assocIndexOf(array, key) {
function baseAggregator (line 5320) | function baseAggregator(collection, setter, iteratee, accumulator) {
function baseAssign (line 5336) | function baseAssign(object, source) {
function baseAssignIn (line 5349) | function baseAssignIn(object, source) {
function baseAssignValue (line 5362) | function baseAssignValue(object, key, value) {
function baseAt (line 5383) | function baseAt(object, paths) {
function baseClamp (line 5404) | function baseClamp(number, lower, upper) {
function baseClone (line 5432) | function baseClone(value, bitmask, customizer, key, object, stack) {
function baseConforms (line 5515) | function baseConforms(source) {
function baseConformsTo (line 5530) | function baseConformsTo(object, source, props) {
function baseDelay (line 5558) | function baseDelay(func, wait, args) {
function baseDifference (line 5576) | function baseDifference(array, values, iteratee, comparator) {
function baseEvery (line 5650) | function baseEvery(collection, predicate) {
function baseExtremum (line 5669) | function baseExtremum(array, iteratee, comparator) {
function baseFill (line 5698) | function baseFill(array, value, start, end) {
function baseFilter (line 5724) | function baseFilter(collection, predicate) {
function baseFlatten (line 5745) | function baseFlatten(array, depth, predicate, isStrict, result) {
function baseForOwn (line 5801) | function baseForOwn(object, iteratee) {
function baseForOwnRight (line 5813) | function baseForOwnRight(object, iteratee) {
function baseFunctions (line 5826) | function baseFunctions(object, props) {
function baseGet (line 5840) | function baseGet(object, path) {
function baseGetAllKeys (line 5863) | function baseGetAllKeys(object, keysFunc, symbolsFunc) {
function baseGetTag (line 5875) | function baseGetTag(value) {
function baseGt (line 5893) | function baseGt(value, other) {
function baseHas (line 5905) | function baseHas(object, key) {
function baseHasIn (line 5917) | function baseHasIn(object, key) {
function baseInRange (line 5930) | function baseInRange(number, start, end) {
function baseIntersection (line 5944) | function baseIntersection(arrays, iteratee, comparator) {
function baseInverter (line 6008) | function baseInverter(object, setter, iteratee, accumulator) {
function baseInvoke (line 6025) | function baseInvoke(object, path, args) {
function baseIsArguments (line 6039) | function baseIsArguments(value) {
function baseIsArrayBuffer (line 6050) | function baseIsArrayBuffer(value) {
function baseIsDate (line 6061) | function baseIsDate(value) {
function baseIsEqual (line 6079) | function baseIsEqual(value, other, bitmask, customizer, stack) {
function baseIsEqualDeep (line 6103) | function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, ...
function baseIsMap (line 6155) | function baseIsMap(value) {
function baseIsMatch (line 6169) | function baseIsMatch(object, source, matchData, customizer) {
function baseIsNative (line 6221) | function baseIsNative(value) {
function baseIsRegExp (line 6236) | function baseIsRegExp(value) {
function baseIsSet (line 6247) | function baseIsSet(value) {
function baseIsTypedArray (line 6258) | function baseIsTypedArray(value) {
function baseIteratee (line 6270) | function baseIteratee(value) {
function baseKeys (line 6294) | function baseKeys(object) {
function baseKeysIn (line 6314) | function baseKeysIn(object) {
function baseLt (line 6338) | function baseLt(value, other) {
function baseMap (line 6350) | function baseMap(collection, iteratee) {
function baseMatches (line 6367) | function baseMatches(source) {
function baseMatchesProperty (line 6385) | function baseMatchesProperty(path, srcValue) {
function baseMerge (line 6408) | function baseMerge(object, source, srcIndex, customizer, stack) {
function baseMergeDeep (line 6445) | function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customi...
function baseNth (line 6515) | function baseNth(array, n) {
function baseOrderBy (line 6533) | function baseOrderBy(collection, iteratees, orders) {
function basePick (line 6571) | function basePick(object, paths) {
function basePickBy (line 6586) | function basePickBy(object, paths, predicate) {
function basePropertyDeep (line 6609) | function basePropertyDeep(path) {
function basePullAll (line 6626) | function basePullAll(array, values, iteratee, comparator) {
function basePullAt (line 6662) | function basePullAt(array, indexes) {
function baseRandom (line 6689) | function baseRandom(lower, upper) {
function baseRange (line 6704) | function baseRange(start, end, step, fromRight) {
function baseRepeat (line 6724) | function baseRepeat(string, n) {
function baseRest (line 6752) | function baseRest(func, start) {
function baseSample (line 6763) | function baseSample(collection) {
function baseSampleSize (line 6775) | function baseSampleSize(collection, n) {
function baseSet (line 6790) | function baseSet(object, path, value, customizer) {
function baseShuffle (line 6861) | function baseShuffle(collection) {
function baseSlice (line 6874) | function baseSlice(array, start, end) {
function baseSome (line 6904) | function baseSome(collection, predicate) {
function baseSortedIndex (line 6926) | function baseSortedIndex(array, value, retHighest) {
function baseSortedIndexBy (line 6960) | function baseSortedIndexBy(array, value, iteratee, retHighest) {
function baseSortedUniq (line 7012) | function baseSortedUniq(array, iteratee) {
function baseToNumber (line 7038) | function baseToNumber(value) {
function baseToString (line 7056) | function baseToString(value) {
function baseUniq (line 7081) | function baseUniq(array, iteratee, comparator) {
function baseUnset (line 7141) | function baseUnset(object, path) {
function baseUpdate (line 7157) | function baseUpdate(object, path, updater, customizer) {
function baseWhile (line 7172) | function baseWhile(array, predicate, isDrop, fromRight) {
function baseWrapperValue (line 7194) | function baseWrapperValue(value, actions) {
function baseXor (line 7214) | function baseXor(arrays, iteratee, comparator) {
function baseZipObject (line 7244) | function baseZipObject(props, values, assignFunc) {
function castArrayLikeObject (line 7264) | function castArrayLikeObject(value) {
function castFunction (line 7275) | function castFunction(value) {
function castPath (line 7287) | function castPath(value, object) {
function castSlice (line 7314) | function castSlice(array, start, end) {
function cloneBuffer (line 7338) | function cloneBuffer(buffer, isDeep) {
function cloneArrayBuffer (line 7356) | function cloneArrayBuffer(arrayBuffer) {
function cloneDataView (line 7370) | function cloneDataView(dataView, isDeep) {
function cloneRegExp (line 7382) | function cloneRegExp(regexp) {
function cloneSymbol (line 7395) | function cloneSymbol(symbol) {
function cloneTypedArray (line 7407) | function cloneTypedArray(typedArray, isDeep) {
function compareAscending (line 7420) | function compareAscending(value, other) {
function compareMultiple (line 7464) | function compareMultiple(object, other, orders) {
function composeArgs (line 7502) | function composeArgs(args, partials, holders, isCurried) {
function composeArgsRight (line 7537) | function composeArgsRight(args, partials, holders, isCurried) {
function copyArray (line 7571) | function copyArray(source, array) {
function copyObject (line 7592) | function copyObject(source, props, object, customizer) {
function copySymbols (line 7626) | function copySymbols(source, object) {
function copySymbolsIn (line 7638) | function copySymbolsIn(source, object) {
function createAggregator (line 7650) | function createAggregator(setter, initializer) {
function createAssigner (line 7666) | function createAssigner(assigner) {
function createBaseEach (line 7700) | function createBaseEach(eachFunc, fromRight) {
function createBaseFor (line 7728) | function createBaseFor(fromRight) {
function createBind (line 7755) | function createBind(func, bitmask, thisArg) {
function createCaseFirst (line 7773) | function createCaseFirst(methodName) {
function createCompounder (line 7800) | function createCompounder(callback) {
function createCtor (line 7814) | function createCtor(Ctor) {
function createCurry (line 7848) | function createCurry(func, bitmask, arity) {
function createFind (line 7883) | function createFind(findIndexFunc) {
function createFlow (line 7903) | function createFlow(fromRight) {
function createHybrid (line 7976) | function createHybrid(func, bitmask, thisArg, partials, holders, partial...
function createInverter (line 8038) | function createInverter(setter, toIteratee) {
function createMathOperation (line 8052) | function createMathOperation(operator, defaultValue) {
function createOver (line 8085) | function createOver(arrayFunc) {
function createPadding (line 8106) | function createPadding(length, chars) {
function createPartial (line 8131) | function createPartial(func, bitmask, thisArg, partials) {
function createRange (line 8161) | function createRange(fromRight) {
function createRelationalOperation (line 8186) | function createRelationalOperation(operator) {
function createRecurry (line 8213) | function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, pa...
function createRound (line 8246) | function createRound(methodName) {
function createToPairs (line 8282) | function createToPairs(keysFunc) {
function createWrap (line 8320) | function createWrap(func, bitmask, thisArg, partials, holders, argPos, a...
function customDefaultsAssignIn (line 8387) | function customDefaultsAssignIn(objValue, srcValue, key, object) {
function customDefaultsMerge (line 8409) | function customDefaultsMerge(objValue, srcValue, key, object, source, st...
function customOmitClone (line 8428) | function customOmitClone(value) {
function equalArrays (line 8445) | function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
function equalByTag (line 8524) | function equalByTag(object, other, tag, bitmask, customizer, equalFunc, ...
function equalObjects (line 8602) | function equalObjects(object, other, bitmask, customizer, equalFunc, sta...
function flatRest (line 8674) | function flatRest(func) {
function getAllKeys (line 8685) | function getAllKeys(object) {
function getAllKeysIn (line 8697) | function getAllKeysIn(object) {
function getFuncName (line 8719) | function getFuncName(func) {
function getHolder (line 8741) | function getHolder(func) {
function getIteratee (line 8757) | function getIteratee() {
function getMapData (line 8771) | function getMapData(map, key) {
function getMatchData (line 8785) | function getMatchData(object) {
function getNative (line 8806) | function getNative(object, key) {
function getRawTag (line 8818) | function getRawTag(value) {
function getView (line 8914) | function getView(start, end, transforms) {
function getWrapDetails (line 8939) | function getWrapDetails(source) {
function hasPath (line 8953) | function hasPath(object, path, hasFunc) {
function initCloneArray (line 8982) | function initCloneArray(array) {
function initCloneObject (line 9001) | function initCloneObject(object) {
function initCloneByTag (line 9019) | function initCloneByTag(object, tag, isDeep) {
function insertWrapDetails (line 9063) | function insertWrapDetails(source, details) {
function isFlattenable (line 9081) | function isFlattenable(value) {
function isIndex (line 9094) | function isIndex(value, length) {
function isIterateeCall (line 9114) | function isIterateeCall(value, index, object) {
function isKey (line 9136) | function isKey(value, object) {
function isKeyable (line 9156) | function isKeyable(value) {
function isLaziable (line 9171) | function isLaziable(func) {
function isMasked (line 9192) | function isMasked(func) {
function isPrototype (line 9212) | function isPrototype(value) {
function isStrictComparable (line 9227) | function isStrictComparable(value) {
function matchesStrictComparable (line 9240) | function matchesStrictComparable(key, srcValue) {
function memoizeCapped (line 9258) | function memoizeCapped(func) {
function mergeData (line 9286) | function mergeData(data, source) {
function nativeKeysIn (line 9350) | function nativeKeysIn(object) {
function objectToString (line 9367) | function objectToString(value) {
function overRest (line 9380) | function overRest(func, start, transform) {
function parent (line 9409) | function parent(object, path) {
function reorder (line 9423) | function reorder(array, indexes) {
function safeGet (line 9443) | function safeGet(object, key) {
function setWrapToString (line 9503) | function setWrapToString(wrapper, reference, bitmask) {
function shortOut (line 9517) | function shortOut(func) {
function shuffleSelf (line 9545) | function shuffleSelf(array, size) {
function toKey (line 9587) | function toKey(value) {
function toSource (line 9602) | function toSource(func) {
function updateWrapDetails (line 9622) | function updateWrapDetails(details, bitmask) {
function wrapperClone (line 9639) | function wrapperClone(wrapper) {
function chunk (line 9673) | function chunk(array, size, guard) {
function compact (line 9708) | function compact(array) {
function concat (line 9745) | function concat() {
function drop (line 9881) | function drop(array, n, guard) {
function dropRight (line 9915) | function dropRight(array, n, guard) {
function dropRightWhile (line 9960) | function dropRightWhile(array, predicate) {
function dropWhile (line 10001) | function dropWhile(array, predicate) {
function fill (line 10036) | function fill(array, value, start, end) {
function findIndex (line 10083) | function findIndex(array, predicate, fromIndex) {
function findLastIndex (line 10130) | function findLastIndex(array, predicate, fromIndex) {
function flatten (line 10159) | function flatten(array) {
function flattenDeep (line 10178) | function flattenDeep(array) {
function flattenDepth (line 10203) | function flattenDepth(array, depth) {
function fromPairs (line 10227) | function fromPairs(pairs) {
function head (line 10257) | function head(array) {
function indexOf (line 10284) | function indexOf(array, value, fromIndex) {
function initial (line 10310) | function initial(array) {
function join (line 10425) | function join(array, separator) {
function last (line 10443) | function last(array) {
function lastIndexOf (line 10469) | function lastIndexOf(array, value, fromIndex) {
function nth (line 10505) | function nth(array, n) {
function pullAll (line 10554) | function pullAll(array, values) {
function pullAllBy (line 10583) | function pullAllBy(array, values, iteratee) {
function pullAllWith (line 10612) | function pullAllWith(array, values, comparator) {
function remove (line 10681) | function remove(array, predicate) {
function reverse (line 10725) | function reverse(array) {
function slice (line 10745) | function slice(array, start, end) {
function sortedIndex (line 10778) | function sortedIndex(array, value) {
function sortedIndexBy (line 10807) | function sortedIndexBy(array, value, iteratee) {
function sortedIndexOf (line 10827) | function sortedIndexOf(array, value) {
function sortedLastIndex (line 10856) | function sortedLastIndex(array, value) {
function sortedLastIndexBy (line 10885) | function sortedLastIndexBy(array, value, iteratee) {
function sortedLastIndexOf (line 10905) | function sortedLastIndexOf(array, value) {
function sortedUniq (line 10931) | function sortedUniq(array) {
function sortedUniqBy (line 10953) | function sortedUniqBy(array, iteratee) {
function tail (line 10973) | function tail(array) {
function take (line 11003) | function take(array, n, guard) {
function takeRight (line 11036) | function takeRight(array, n, guard) {
function takeRightWhile (line 11081) | function takeRightWhile(array, predicate) {
function takeWhile (line 11122) | function takeWhile(array, predicate) {
function uniq (line 11224) | function uniq(array) {
function uniqBy (line 11251) | function uniqBy(array, iteratee) {
function uniqWith (line 11275) | function uniqWith(array, comparator) {
function unzip (line 11299) | function unzip(array) {
function unzipWith (line 11336) | function unzipWith(array, iteratee) {
function zipObject (line 11489) | function zipObject(props, values) {
function zipObjectDeep (line 11508) | function zipObjectDeep(props, values) {
function chain (line 11571) | function chain(value) {
function tap (line 11600) | function tap(value, interceptor) {
function thru (line 11628) | function thru(value, interceptor) {
function wrapperChain (line 11699) | function wrapperChain() {
function wrapperCommit (line 11729) | function wrapperCommit() {
function wrapperNext (line 11755) | function wrapperNext() {
function wrapperToIterator (line 11783) | function wrapperToIterator() {
function wrapperPlant (line 11811) | function wrapperPlant(value) {
function wrapperReverse (line 11851) | function wrapperReverse() {
function wrapperValue (line 11883) | function wrapperValue() {
function every (line 11960) | function every(collection, predicate, guard) {
function filter (line 12009) | function filter(collection, predicate) {
function flatMap (line 12094) | function flatMap(collection, iteratee) {
function flatMapDeep (line 12118) | function flatMapDeep(collection, iteratee) {
function flatMapDepth (line 12143) | function flatMapDepth(collection, iteratee, depth) {
function forEach (line 12178) | function forEach(collection, iteratee) {
function forEachRight (line 12203) | function forEachRight(collection, iteratee) {
function includes (line 12269) | function includes(collection, value, fromIndex, guard) {
function map (line 12390) | function map(collection, iteratee) {
function orderBy (line 12424) | function orderBy(collection, iteratees, orders, guard) {
function reduce (line 12515) | function reduce(collection, iteratee, accumulator) {
function reduceRight (line 12544) | function reduceRight(collection, iteratee, accumulator) {
function reject (line 12585) | function reject(collection, predicate) {
function sample (line 12604) | function sample(collection) {
function sampleSize (line 12629) | function sampleSize(collection, n, guard) {
function shuffle (line 12654) | function shuffle(collection) {
function size (line 12680) | function size(collection) {
function some (line 12730) | function some(collection, predicate, guard) {
function after (line 12828) | function after(n, func) {
function ary (line 12857) | function ary(func, n, guard) {
function before (line 12880) | function before(n, func) {
function curry (line 13036) | function curry(func, arity, guard) {
function curryRight (line 13081) | function curryRight(func, arity, guard) {
function debounce (line 13142) | function debounce(func, wait, options) {
function flip (line 13330) | function flip(func) {
function memoize (line 13378) | function memoize(func, resolver) {
function negate (line 13421) | function negate(predicate) {
function once (line 13455) | function once(func) {
function rest (line 13633) | function rest(func, start) {
function spread (line 13675) | function spread(func, start) {
function throttle (line 13735) | function throttle(func, wait, options) {
function unary (line 13768) | function unary(func) {
function wrap (line 13794) | function wrap(value, wrapper) {
function castArray (line 13833) | function castArray() {
function clone (line 13867) | function clone(value) {
function cloneWith (line 13902) | function cloneWith(value, customizer) {
function cloneDeep (line 13925) | function cloneDeep(value) {
function cloneDeepWith (line 13957) | function cloneDeepWith(value, customizer) {
function conformsTo (line 13986) | function conformsTo(object, source) {
function eq (line 14022) | function eq(value, other) {
function isArrayLike (line 14170) | function isArrayLike(value) {
function isArrayLikeObject (line 14199) | function isArrayLikeObject(value) {
function isBoolean (line 14220) | function isBoolean(value) {
function isElement (line 14280) | function isElement(value) {
function isEmpty (line 14317) | function isEmpty(value) {
function isEqual (line 14369) | function isEqual(value, other) {
function isEqualWith (line 14405) | function isEqualWith(value, other, customizer) {
function isError (line 14429) | function isError(value) {
function isFinite (line 14464) | function isFinite(value) {
function isFunction (line 14485) | function isFunction(value) {
function isInteger (line 14521) | function isInteger(value) {
function isLength (line 14551) | function isLength(value) {
function isObject (line 14581) | function isObject(value) {
function isObjectLike (line 14610) | function isObjectLike(value) {
function isMatch (line 14661) | function isMatch(object, source) {
function isMatchWith (line 14697) | function isMatchWith(object, source, customizer) {
function isNaN (line 14730) | function isNaN(value) {
function isNative (line 14763) | function isNative(value) {
function isNull (line 14787) | function isNull(value) {
function isNil (line 14811) | function isNil(value) {
function isNumber (line 14841) | function isNumber(value) {
function isPlainObject (line 14874) | function isPlainObject(value) {
function isSafeInteger (line 14933) | function isSafeInteger(value) {
function isString (line 14973) | function isString(value) {
function isSymbol (line 14995) | function isSymbol(value) {
function isUndefined (line 15036) | function isUndefined(value) {
function isWeakMap (line 15057) | function isWeakMap(value) {
function isWeakSet (line 15078) | function isWeakSet(value) {
function toArray (line 15157) | function toArray(value) {
function toFinite (line 15196) | function toFinite(value) {
function toInteger (line 15234) | function toInteger(value) {
function toLength (line 15268) | function toLength(value) {
function toNumber (line 15295) | function toNumber(value) {
function toPlainObject (line 15340) | function toPlainObject(value) {
function toSafeInteger (line 15368) | function toSafeInteger(value) {
function toString (line 15395) | function toString(value) {
function create (line 15598) | function create(prototype, properties) {
function findKey (line 15714) | function findKey(object, predicate) {
function findLastKey (line 15753) | function findLastKey(object, predicate) {
function forIn (line 15785) | function forIn(object, iteratee) {
function forInRight (line 15817) | function forInRight(object, iteratee) {
function forOwn (line 15851) | function forOwn(object, iteratee) {
function forOwnRight (line 15881) | function forOwnRight(object, iteratee) {
function functions (line 15908) | function functions(object) {
function functionsIn (line 15935) | function functionsIn(object) {
function get (line 15964) | function get(object, path, defaultValue) {
function has (line 15996) | function has(object, path) {
function hasIn (line 16026) | function hasIn(object, path) {
function keys (line 16144) | function keys(object) {
function keysIn (line 16171) | function keysIn(object) {
function mapKeys (line 16196) | function mapKeys(object, iteratee) {
function mapValues (line 16234) | function mapValues(object, iteratee) {
function omitBy (line 16376) | function omitBy(object, predicate) {
function pickBy (line 16419) | function pickBy(object, predicate) {
function result (line 16461) | function result(object, path, defaultValue) {
function set (line 16511) | function set(object, path, value) {
function setWith (line 16539) | function setWith(object, path, value, customizer) {
function transform (line 16626) | function transform(object, iteratee, accumulator) {
function unset (line 16676) | function unset(object, path) {
function update (line 16707) | function update(object, path, updater) {
function updateWith (line 16735) | function updateWith(object, path, updater, customizer) {
function values (line 16766) | function values(object) {
function valuesIn (line 16794) | function valuesIn(object) {
function clamp (line 16819) | function clamp(number, lower, upper) {
function inRange (line 16873) | function inRange(number, start, end) {
function random (line 16916) | function random(lower, upper, floating) {
function capitalize (line 16997) | function capitalize(string) {
function deburr (line 17019) | function deburr(string) {
function endsWith (line 17047) | function endsWith(string, target, position) {
function escape (line 17089) | function escape(string) {
function escapeRegExp (line 17111) | function escapeRegExp(string) {
function pad (line 17209) | function pad(string, length, chars) {
function padEnd (line 17248) | function padEnd(string, length, chars) {
function padStart (line 17281) | function padStart(string, length, chars) {
function parseInt (line 17315) | function parseInt(string, radix, guard) {
function repeat (line 17346) | function repeat(string, n, guard) {
function replace (line 17374) | function replace() {
function split (line 17425) | function split(string, separator, limit) {
function startsWith (line 17494) | function startsWith(string, target, position) {
function template (line 17608) | function template(string, options, guard) {
function toLower (line 17746) | function toLower(value) {
function toUpper (line 17771) | function toUpper(value) {
function trim (line 17797) | function trim(string, chars, guard) {
function trimEnd (line 17832) | function trimEnd(string, chars, guard) {
function trimStart (line 17865) | function trimStart(string, chars, guard) {
function truncate (line 17916) | function truncate(string, options) {
function unescape (line 17991) | function unescape(string) {
function words (line 18060) | function words(string, pattern, guard) {
function cond (line 18165) | function cond(pairs) {
function conforms (line 18211) | function conforms(source) {
function constant (line 18234) | function constant(value) {
function defaultTo (line 18260) | function defaultTo(value, defaultValue) {
function identity (line 18327) | function identity(value) {
function iteratee (line 18373) | function iteratee(func) {
function matches (line 18412) | function matches(source) {
function matchesProperty (line 18449) | function matchesProperty(path, srcValue) {
function mixin (line 18548) | function mixin(object, source, options) {
function noConflict (line 18597) | function noConflict() {
function noop (line 18616) | function noop() {
function nthArg (line 18640) | function nthArg(n) {
function property (line 18752) | function property(path) {
function propertyOf (line 18777) | function propertyOf(object) {
function stubArray (line 18882) | function stubArray() {
function stubFalse (line 18899) | function stubFalse() {
function stubObject (line 18921) | function stubObject() {
function stubString (line 18938) | function stubString() {
function stubTrue (line 18955) | function stubTrue() {
function times (line 18978) | function times(n, iteratee) {
function toPath (line 19013) | function toPath(value) {
function uniqueId (line 19037) | function uniqueId(prefix) {
function max (line 19146) | function max(array) {
function maxBy (line 19175) | function maxBy(array, iteratee) {
function mean (line 19195) | function mean(array) {
function meanBy (line 19222) | function meanBy(array, iteratee) {
function min (line 19244) | function min(array) {
function minBy (line 19273) | function minBy(array, iteratee) {
function sum (line 19354) | function sum(array) {
function sumBy (line 19383) | function sumBy(array, iteratee) {
function plural (line 21147) | function plural(word, num) {
function relativeTimeWithPlural (line 21155) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function relativeTimeWithMutation (line 21906) | function relativeTimeWithMutation(number, withoutSuffix, key) {
function specialMutationForYears (line 21914) | function specialMutationForYears(number) {
function lastNumber (line 21926) | function lastNumber(number) {
function mutation (line 21932) | function mutation(text, number) {
function softMutation (line 21938) | function softMutation(text) {
function translate (line 22091) | function translate(number, withoutSuffix, key) {
function plural (line 22396) | function plural(n) {
function translate (line 22399) | function translate(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 22836) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 22931) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 23028) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function isFunction (line 23232) | function isFunction(input) {
function processRelativeTime (line 24629) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function translate (line 24951) | function translate(number, withoutSuffix, key, isFuture) {
function verbalNumber (line 24988) | function verbalNumber(number, isFuture) {
function processRelativeTime (line 25948) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 26091) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function translate (line 26670) | function translate(number, withoutSuffix, key) {
function translate (line 26847) | function translate(number, withoutSuffix, key, isFuture) {
function week (line 26881) | function week(isFuture) {
function plural (line 27186) | function plural(n) {
function translate (line 27194) | function translate(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 28624) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processFutureTime (line 28634) | function processFutureTime(string) {
function processPastTime (line 28641) | function processPastTime(string) {
function eifelerRegelAppliesToNumber (line 28655) | function eifelerRegelAppliesToNumber(number) {
function translateSeconds (line 28874) | function translateSeconds(number, withoutSuffix, key, isFuture) {
function translateSingular (line 28881) | function translateSingular(number, withoutSuffix, key, isFuture) {
function special (line 28888) | function special(number) {
function forms (line 28891) | function forms(key) {
function translate (line 28894) | function translate(number, withoutSuffix, key, isFuture) {
function format (line 29020) | function format(forms, number, withoutSuffix) {
function relativeTimeWithPlural (line 29030) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function relativeTimeWithSingular (line 29033) | function relativeTimeWithSingular(number, withoutSuffix, key) {
function relativeSeconds (line 29036) | function relativeSeconds(number, withoutSuffix) {
function translate (line 29534) | function translate(number, withoutSuffix, key, isFuture) {
function relativeTimeMr (line 29678) | function relativeTimeMr(number, withoutSuffix, string, isFuture) {
function plural (line 31050) | function plural(n) {
function translate (line 31053) | function translate(number, withoutSuffix, key) {
function relativeTimeWithPlural (line 31347) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function plural (line 31441) | function plural(word, num) {
function relativeTimeWithPlural (line 31449) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function plural (line 31932) | function plural(n) {
function translate (line 31935) | function translate(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 32090) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function translateFuture (line 33643) | function translateFuture(output) {
function translatePast (line 33656) | function translatePast(output) {
function translate (line 33669) | function translate(number, withoutSuffix, string, isFuture) {
function numberAsNoun (line 33687) | function numberAsNoun(number) {
function processRelativeTime (line 33972) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function plural (line 34292) | function plural(word, num) {
function relativeTimeWithPlural (line 34300) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function weekdaysCaseReplace (line 34317) | function weekdaysCaseReplace(m, format) {
function processHoursFunction (line 34347) | function processHoursFunction(str) {
function webpackContext (line 35735) | function webpackContext(req) {
function webpackContextResolve (line 35739) | function webpackContextResolve(req) {
function hooks (line 35776) | function hooks() {
function setHookCallback (line 35782) | function setHookCallback(callback) {
function isArray (line 35786) | function isArray(input) {
function isObject (line 35793) | function isObject(input) {
function hasOwnProp (line 35802) | function hasOwnProp(a, b) {
function isObjectEmpty (line 35806) | function isObjectEmpty(obj) {
function isUndefined (line 35820) | function isUndefined(input) {
function isNumber (line 35824) | function isNumber(input) {
function isDate (line 35831) | function isDate(input) {
function map (line 35838) | function map(arr, fn) {
function extend (line 35847) | function extend(a, b) {
function createUTC (line 35865) | function createUTC(input, format, locale, strict) {
function defaultParsingFlags (line 35869) | function defaultParsingFlags() {
function getParsingFlags (line 35891) | function getParsingFlags(m) {
function isValid (line 35917) | function isValid(m) {
function createInvalid (line 35953) | function createInvalid(flags) {
function copyConfig (line 35969) | function copyConfig(to, from) {
function Moment (line 36017) | function Moment(config) {
function isMoment (line 36032) | function isMoment(obj) {
function warn (line 36038) | function warn(msg) {
function deprecate (line 36048) | function deprecate(msg, fn) {
function deprecateSimple (line 36090) | function deprecateSimple(name, msg) {
function isFunction (line 36103) | function isFunction(input) {
function set (line 36110) | function set(config) {
function mergeConfigs (line 36133) | function mergeConfigs(parentConfig, childConfig) {
function Locale (line 36162) | function Locale(config) {
function calendar (line 36194) | function calendar(key, mom, now) {
function zeroFill (line 36199) | function zeroFill(number, targetLength, forceSign) {
function addFormatToken (line 36219) | function addFormatToken(token, padded, ordinal, callback) {
function removeFormattingTokens (line 36244) | function removeFormattingTokens(input) {
function makeFormatFunction (line 36251) | function makeFormatFunction(format) {
function formatMoment (line 36277) | function formatMoment(m, format) {
function expandFormat (line 36289) | function expandFormat(format, locale) {
function longDateFormat (line 36318) | function longDateFormat(key) {
function invalidDate (line 36346) | function invalidDate() {
function ordinal (line 36353) | function ordinal(number) {
function relativeTime (line 36376) | function relativeTime(number, withoutSuffix, string, isFuture) {
function pastFuture (line 36383) | function pastFuture(diff, output) {
function addUnitAlias (line 36390) | function addUnitAlias(unit, shorthand) {
function normalizeUnits (line 36395) | function normalizeUnits(units) {
function normalizeObjectUnits (line 36401) | function normalizeObjectUnits(inputObject) {
function addUnitPriority (line 36420) | function addUnitPriority(unit, priority) {
function getPrioritizedUnits (line 36424) | function getPrioritizedUnits(unitsObj) {
function isLeapYear (line 36438) | function isLeapYear(year) {
function absFloor (line 36442) | function absFloor(number) {
function toInt (line 36451) | function toInt(argumentForCoercion) {
function makeGetSet (line 36462) | function makeGetSet(unit, keepTime) {
function get (line 36474) | function get(mom, unit) {
function set$1 (line 36480) | function set$1(mom, unit, value) {
function stringGet (line 36502) | function stringGet(units) {
function stringSet (line 36510) | function stringSet(units, value) {
function addRegexToken (line 36550) | function addRegexToken(token, regex, strictRegex) {
function getParseRegexForToken (line 36558) | function getParseRegexForToken(token, config) {
function unescapeFormat (line 36567) | function unescapeFormat(s) {
function regexEscape (line 36583) | function regexEscape(s) {
function addParseToken (line 36589) | function addParseToken(token, callback) {
function addWeekParseToken (line 36605) | function addWeekParseToken(token, callback) {
function addTimeToArrayFromToken (line 36612) | function addTimeToArrayFromToken(token, input, config) {
function mod (line 36628) | function mod(n, x) {
function daysInMonth (line 36649) | function daysInMonth(year, month) {
function localeMonths (line 36721) | function localeMonths(m, format) {
function localeMonthsShort (line 36736) | function localeMonthsShort(m, format) {
function handleStrictParse (line 36749) | function handleStrictParse(monthName, format, strict) {
function localeMonthsParse (line 36796) | function localeMonthsParse(monthName, format, strict) {
function setMonth (line 36851) | function setMonth(mom, value) {
function getSetMonth (line 36876) | function getSetMonth(value) {
function getDaysInMonth (line 36886) | function getDaysInMonth() {
function monthsShortRegex (line 36890) | function monthsShortRegex(isStrict) {
function monthsRegex (line 36910) | function monthsRegex(isStrict) {
function computeMonthsParse (line 36930) | function computeMonthsParse() {
function daysInYear (line 37018) | function daysInYear(year) {
function getIsLeapYear (line 37032) | function getIsLeapYear() {
function createDate (line 37036) | function createDate(y, m, d, h, M, s, ms) {
function createUTCDate (line 37054) | function createUTCDate(y) {
function firstWeekOffset (line 37073) | function firstWeekOffset(year, dow, doy) {
function dayOfYearFromWeeks (line 37083) | function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
function weekOfYear (line 37107) | function weekOfYear(mom, dow, doy) {
function weeksInYear (line 37130) | function weeksInYear(year, dow, doy) {
function localeWeek (line 37171) | function localeWeek(mom) {
function localeFirstDayOfWeek (line 37180) | function localeFirstDayOfWeek() {
function localeFirstDayOfYear (line 37184) | function localeFirstDayOfYear() {
function getSetWeek (line 37190) | function getSetWeek(input) {
function getSetISOWeek (line 37195) | function getSetISOWeek(input) {
function parseWeekday (line 37261) | function parseWeekday(input, locale) {
function parseIsoWeekday (line 37278) | function parseIsoWeekday(input, locale) {
function shiftWeekdays (line 37286) | function shiftWeekdays(ws, n) {
function localeWeekdays (line 37299) | function localeWeekdays(m, format) {
function localeWeekdaysShort (line 37314) | function localeWeekdaysShort(m) {
function localeWeekdaysMin (line 37322) | function localeWeekdaysMin(m) {
function handleStrictParse$1 (line 37330) | function handleStrictParse$1(weekdayName, format, strict) {
function localeWeekdaysParse (line 37403) | function localeWeekdaysParse(weekdayName, format, strict) {
function getSetDayOfWeek (line 37472) | function getSetDayOfWeek(input) {
function getSetLocaleDayOfWeek (line 37485) | function getSetLocaleDayOfWeek(input) {
function getSetISODayOfWeek (line 37493) | function getSetISODayOfWeek(input) {
function weekdaysRegex (line 37510) | function weekdaysRegex(isStrict) {
function weekdaysShortRegex (line 37530) | function weekdaysShortRegex(isStrict) {
function weekdaysMinRegex (line 37550) | function weekdaysMinRegex(isStrict) {
function computeWeekdaysParse (line 37570) | function computeWeekdaysParse() {
function hFormat (line 37624) | function hFormat() {
function kFormat (line 37628) | function kFormat() {
function meridiem (line 37662) | function meridiem(token, lowercase) {
function matchMeridiem (line 37684) | function matchMeridiem(isStrict, locale) {
function localeIsPM (line 37744) | function localeIsPM(input) {
function localeMeridiem (line 37757) | function localeMeridiem(hours, minutes, isLower) {
function commonPrefix (line 37790) | function commonPrefix(arr1, arr2) {
function normalizeLocale (line 37801) | function normalizeLocale(key) {
function chooseLocale (line 37808) | function chooseLocale(names) {
function loadLocale (line 37840) | function loadLocale(name) {
function getSetGlobalLocale (line 37867) | function getSetGlobalLocale(key, values) {
function defineLocale (line 37892) | function defineLocale(name, config) {
function updateLocale (line 37946) | function updateLocale(name, config) {
function getLocale (line 37992) | function getLocale(key) {
function listLocales (line 38015) | function listLocales() {
function checkOverflow (line 38019) | function checkOverflow(m) {
function configFromISO (line 38112) | function configFromISO(config) {
function extractFromRFC2822Strings (line 38168) | function extractFromRFC2822Strings(
function untruncateYear (line 38191) | function untruncateYear(yearStr) {
function preprocessRFC2822 (line 38201) | function preprocessRFC2822(s) {
function checkWeekday (line 38210) | function checkWeekday(weekdayStr, parsedInput, config) {
function calculateOffset (line 38228) | function calculateOffset(obsOffset, militaryOffset, numOffset) {
function configFromRFC2822 (line 38243) | function configFromRFC2822(config) {
function configFromString (line 38272) | function configFromString(config) {
function defaults (line 38311) | function defaults(a, b, c) {
function currentDateArray (line 38321) | function currentDateArray(config) {
function configFromArray (line 38338) | function configFromArray(config) {
function dayOfYearFromWeekInfo (line 38427) | function dayOfYearFromWeekInfo(config) {
function configFromStringAndFormat (line 38495) | function configFromStringAndFormat(config) {
function meridiemFixWrap (line 38584) | function meridiemFixWrap(locale, hour, meridiem) {
function configFromStringAndArray (line 38610) | function configFromStringAndArray(config) {
function configFromObject (line 38670) | function configFromObject(config) {
function createFromConfig (line 38687) | function createFromConfig(config) {
function prepareConfig (line 38698) | function prepareConfig(config) {
function configFromInput (line 38731) | function configFromInput(config) {
function createLocalOrUTC (line 38754) | function createLocalOrUTC(input, format, locale, strict, isUTC) {
function createLocal (line 38785) | function createLocal(input, format, locale, strict) {
function pickBy (line 38817) | function pickBy(fn, moments) {
function min (line 38835) | function min() {
function max (line 38841) | function max() {
function isDurationValid (line 38863) | function isDurationValid(m) {
function isValid$1 (line 38893) | function isValid$1() {
function createInvalid$1 (line 38897) | function createInvalid$1() {
function Duration (line 38901) | function Duration(duration) {
function isDuration (line 38936) | function isDuration(obj) {
function absRound (line 38940) | function absRound(number) {
function compareArrays (line 38949) | function compareArrays(array1, array2, dontConvert) {
function offset (line 38967) | function offset(token, separator) {
function offsetFromString (line 39003) | function offsetFromString(matcher, string) {
function cloneWithOffset (line 39021) | function cloneWithOffset(input, model) {
function getDateOffset (line 39038) | function getDateOffset(m) {
function getSetOffset (line 39062) | function getSetOffset(input, keepLocalTime, keepMinutes) {
function getSetZone (line 39105) | function getSetZone(input, keepLocalTime) {
function setOffsetToUTC (line 39119) | function setOffsetToUTC(keepLocalTime) {
function setOffsetToLocal (line 39123) | function setOffsetToLocal(keepLocalTime) {
function setOffsetToParsedOffset (line 39135) | function setOffsetToParsedOffset() {
function hasAlignedHourOffset (line 39149) | function hasAlignedHourOffset(input) {
function isDaylightSavingTime (line 39158) | function isDaylightSavingTime() {
function isDaylightSavingTimeShifted (line 39165) | function isDaylightSavingTimeShifted() {
function isLocal (line 39187) | function isLocal() {
function isUtcOffset (line 39191) | function isUtcOffset() {
function isUtc (line 39195) | function isUtc() {
function createDuration (line 39206) | function createDuration(input, key) {
function parseIso (line 39281) | function parseIso(inp, sign) {
function positiveMomentsDifference (line 39290) | function positiveMomentsDifference(base, other) {
function momentsDifference (line 39304) | function momentsDifference(base, other) {
function createAdder (line 39323) | function createAdder(direction, name) {
function addSubtract (line 39348) | function addSubtract(mom, duration, isAdding, updateOffset) {
function isString (line 39377) | function isString(input) {
function isMomentInput (line 39382) | function isMomentInput(input) {
function isMomentInputObject (line 39395) | function isMomentInputObject(input) {
function isNumberOrStringArray (line 39435) | function isNumberOrStringArray(input) {
function isCalendarSpec (line 39447) | function isCalendarSpec(input) {
function getCalendarFormat (line 39469) | function getCalendarFormat(myMoment, now) {
function calendar$1 (line 39486) | function calendar$1(time, formats) {
function clone (line 39516) | function clone() {
function isAfter (line 39520) | function isAfter(input, units) {
function isBefore (line 39533) | function isBefore(input, units) {
function isBetween (line 39546) | function isBetween(from, to, units, inclusivity) {
function isSame (line 39563) | function isSame(input, units) {
function isSameOrAfter (line 39581) | function isSameOrAfter(input, units) {
function isSameOrBefore (line 39585) | function isSameOrBefore(input, units) {
function diff (line 39589) | function diff(input, units, asFloat) {
function monthDiff (line 39638) | function monthDiff(a, b) {
function toString (line 39668) | function toString() {
function toISOString (line 39672) | function toISOString(keepOffset) {
function inspect (line 39708) | function inspect() {
function format (line 39730) | function format(inputString) {
function from (line 39740) | function from(time, withoutSuffix) {
function fromNow (line 39753) | function fromNow(withoutSuffix) {
function to (line 39757) | function to(time, withoutSuffix) {
function toNow (line 39770) | function toNow(withoutSuffix) {
function locale (line 39777) | function locale(key) {
function localeData (line 39802) | function localeData() {
function mod$1 (line 39812) | function mod$1(dividend, divisor) {
function localStartOfDate (line 39816) | function localStartOfDate(y, m, d) {
function utcStartOfDate (line 39826) | function utcStartOfDate(y, m, d) {
function startOf (line 39836) | function startOf(units) {
function endOf (line 39899) | function endOf(units) {
function valueOf (line 39968) | function valueOf() {
function unix (line 39972) | function unix() {
function toDate (line 39976) | function toDate() {
function toArray (line 39980) | function toArray() {
function toObject (line 39993) | function toObject() {
function toJSON (line 40006) | function toJSON() {
function isValid$2 (line 40011) | function isValid$2() {
function parsingFlags (line 40015) | function parsingFlags() {
function invalidAt (line 40019) | function invalidAt() {
function creationData (line 40023) | function creationData() {
function localeEras (line 40084) | function localeEras(m, format) {
function localeErasParse (line 40112) | function localeErasParse(eraName, format, strict) {
function localeErasConvertYear (line 40154) | function localeErasConvertYear(era, year) {
function getEraName (line 40163) | function getEraName() {
function getEraNarrow (line 40183) | function getEraNarrow() {
function getEraAbbr (line 40203) | function getEraAbbr() {
function getEraYear (line 40223) | function getEraYear() {
function erasNameRegex (line 40249) | function erasNameRegex(isStrict) {
function erasAbbrRegex (line 40256) | function erasAbbrRegex(isStrict) {
function erasNarrowRegex (line 40263) | function erasNarrowRegex(isStrict) {
function matchEraAbbr (line 40270) | function matchEraAbbr(isStrict, locale) {
function matchEraName (line 40274) | function matchEraName(isStrict, locale) {
function matchEraNarrow (line 40278) | function matchEraNarrow(isStrict, locale) {
function matchEraYearOrdinal (line 40282) | function matchEraYearOrdinal(isStrict, locale) {
function computeErasParse (line 40286) | function computeErasParse() {
function addWeekYearFormatToken (line 40324) | function addWeekYearFormatToken(token, getter) {
function getSetWeekYear (line 40369) | function getSetWeekYear(input) {
function getSetISOWeekYear (line 40380) | function getSetISOWeekYear(input) {
function getISOWeeksInYear (line 40391) | function getISOWeeksInYear() {
function getISOWeeksInISOWeekYear (line 40395) | function getISOWeeksInISOWeekYear() {
function getWeeksInYear (line 40399) | function getWeeksInYear() {
function getWeeksInWeekYear (line 40404) | function getWeeksInWeekYear() {
function getSetWeekYearHelper (line 40409) | function getSetWeekYearHelper(input, week, weekday, dow, doy) {
function setWeekAll (line 40422) | function setWeekAll(weekYear, week, weekday, dow, doy) {
function getSetQuarter (line 40453) | function getSetQuarter(input) {
function getSetDayOfYear (line 40513) | function getSetDayOfYear(input) {
function parseMs (line 40614) | function parseMs(input, array) {
function getZoneAbbr (line 40631) | function getZoneAbbr() {
function getZoneName (line 40635) | function getZoneName() {
function createUnix (line 40743) | function createUnix(input) {
function createInZone (line 40747) | function createInZone() {
function preParsePostFormat (line 40751) | function preParsePostFormat(string) {
function get$1 (line 40794) | function get$1(format, index, field, setter) {
function listMonthsImpl (line 40800) | function listMonthsImpl(format, index, field) {
function listWeekdaysImpl (line 40828) | function listWeekdaysImpl(localeSorted, format, index, field) {
function listMonths (line 40864) | function listMonths(format, index) {
function listMonthsShort (line 40868) | function listMonthsShort(format, index) {
function listWeekdays (line 40872) | function listWeekdays(localeSorted, format, index) {
function listWeekdaysShort (line 40876) | function listWeekdaysShort(localeSorted, format, index) {
function listWeekdaysMin (line 40880) | function listWeekdaysMin(localeSorted, format, index) {
function abs (line 40933) | function abs() {
function addSubtract$1 (line 40950) | function addSubtract$1(duration, input, value, direction) {
function add$1 (line 40961) | function add$1(input, value) {
function subtract$1 (line 40966) | function subtract$1(input, value) {
function absCeil (line 40970) | function absCeil(number) {
function bubble (line 40978) | function bubble() {
function daysToMonths (line 41033) | function daysToMonths(days) {
function monthsToDays (line 41039) | function monthsToDays(months) {
function as (line 41044) | function as(units) {
function valueOf$1 (line 41089) | function valueOf$1() {
function makeAs (line 41101) | function makeAs(alias) {
function clone$1 (line 41117) | function clone$1() {
function get$2 (line 41121) | function get$2(units) {
function makeGetter (line 41126) | function makeGetter(name) {
function weeks (line 41140) | function weeks() {
function substituteTimeAgo (line 41156) | function substituteTimeAgo(string, number, withoutSuffix, isFuture, loca...
function relativeTime$1 (line 41160) | function relativeTime$1(posNegDuration, withoutSuffix, thresholds, local...
function getSetRelativeTimeRounding (line 41197) | function getSetRelativeTimeRounding(roundingFunction) {
function getSetRelativeTimeThreshold (line 41209) | function getSetRelativeTimeThreshold(threshold, limit) {
function humanize (line 41223) | function humanize(argWithSuffix, argThresholds) {
function sign (line 41259) | function sign(x) {
function toISOString$1 (line 41263) | function toISOString$1() {
function defaultSetTimout (line 41453) | function defaultSetTimout() {
function defaultClearTimeout (line 41456) | function defaultClearTimeout () {
function runTimeout (line 41479) | function runTimeout(fun) {
function runClearTimeout (line 41504) | function runClearTimeout(marker) {
function cleanUpNextTick (line 41536) | function cleanUpNextTick() {
function drainQueue (line 41551) | function drainQueue() {
function Item (line 41589) | function Item(fun, array) {
function noop (line 41603) | function noop() {}
function define (line 41654) | function define(obj, key, value) {
function wrap (line 41672) | function wrap(innerFn, outerFn, self, tryLocsList) {
function tryCatch (line 41696) | function tryCatch(fn, obj, arg) {
function Generator (line 41717) | function Generator() {}
function GeneratorFunction (line 41718) | function GeneratorFunction() {}
function GeneratorFunctionPrototype (line 41719) | function GeneratorFunctionPrototype() {}
function defineIteratorMethods (line 41750) | function defineIteratorMethods(prototype) {
function AsyncIterator (line 41787) | function AsyncIterator(generator, PromiseImpl) {
function makeInvokeMethod (line 41878) | function makeInvokeMethod(innerFn, self, context) {
function maybeInvokeDelegate (line 41960) | function maybeInvokeDelegate(delegate, context) {
function pushTryEntry (line 42058) | function pushTryEntry(locs) {
function resetTryEntry (line 42073) | function resetTryEntry(entry) {
function Context (line 42080) | function Context(tryLocsList) {
function values (line 42116) | function values(iterable) {
function doneResult (line 42152) | function doneResult() {
function handle (line 42203) | function handle(loc, caught) {
function normalizeComponent (line 43301) | function normalizeComponent (
function addStylesClient (line 43481) | function addStylesClient (parentId, list, _isProduction, _options) {
function addStylesToDom (line 43515) | function addStylesToDom (styles /* Array<StyleObject> */) {
function createStyleElement (line 43540) | function createStyleElement () {
function addStyle (line 43547) | function addStyle (obj /* StyleObjectPart */) {
function applyToSingletonTag (line 43606) | function applyToSingletonTag (styleElement, index, remove, obj) {
function applyToTag (line 43623) | function applyToTag (styleElement, obj) {
function listToStyles (line 43671) | function listToStyles (parentId, list) {
function isUndef (line 43720) | function isUndef (v) {
function isDef (line 43724) | function isDef (v) {
function isTrue (line 43728) | function isTrue (v) {
function isFalse (line 43732) | function isFalse (v) {
function isPrimitive (line 43739) | function isPrimitive (value) {
function isObject (line 43754) | function isObject (obj) {
function toRawType (line 43763) | function toRawType (value) {
function isPlainObject (line 43771) | function isPlainObject (obj) {
function isRegExp (line 43775) | function isRegExp (v) {
function isValidArrayIndex (line 43782) | function isValidArrayIndex (val) {
function isPromise (line 43787) | function isPromise (val) {
function toString (line 43798) | function toString (val) {
function toNumber (line 43810) | function toNumber (val) {
function makeMap (line 43819) | function makeMap (
function remove (line 43846) | function remove (arr, item) {
function hasOwn (line 43859) | function hasOwn (obj, key) {
function cached (line 43866) | function cached (fn) {
function polyfillBind (line 43906) | function polyfillBind (fn, ctx) {
function nativeBind (line 43920) | function nativeBind (fn, ctx) {
function toArray (line 43931) | function toArray (list, start) {
function extend (line 43944) | function extend (to, _from) {
function toObject (line 43954) | function toObject (arr) {
function noop (line 43971) | function noop (a, b, c) {}
function genStaticKeys (line 43988) | function genStaticKeys (modules) {
function looseEqual (line 43998) | function looseEqual (a, b) {
function looseIndexOf (line 44038) | function looseIndexOf (arr, val) {
function once (line 44048) | function once (fn) {
function isReserved (line 44191) | function isReserved (str) {
function def (line 44199) | function def (obj, key, val, enumerable) {
function parsePath (line 44212) | function parsePath (path) {
function isNative (line 44283) | function isNative (Ctor) {
function Set (line 44299) | function Set () {
function pushTarget (line 44457) | function pushTarget (target) {
function popTarget (line 44462) | function popTarget () {
function createTextVNode (line 44523) | function createTextVNode (val) {
function cloneVNode (line 44531) | function cloneVNode (vnode) {
function toggleObserving (line 44614) | function toggleObserving (value) {
function protoAugment (line 44668) | function protoAugment (target, src) {
function copyAugment (line 44679) | function copyAugment (target, src, keys) {
function observe (line 44691) | function observe (value, asRootData) {
function defineReactive$$1 (line 44716) | function defineReactive$$1 (
function set (line 44782) | function set (target, key, val) {
function del (line 44817) | function del (target, key) {
function dependArray (line 44849) | function dependArray (value) {
function mergeData (line 44886) | function mergeData (to, from) {
function mergeDataOrFn (line 44916) | function mergeDataOrFn (
function mergeHook (line 44983) | function mergeHook (
function dedupeHooks (line 44999) | function dedupeHooks (hooks) {
function mergeAssets (line 45020) | function mergeAssets (
function checkComponents (line 45110) | function checkComponents (options) {
function validateComponentName (line 45116) | function validateComponentName (name) {
function normalizeProps (line 45135) | function normalizeProps (options, vm) {
function normalizeInject (line 45172) | function normalizeInject (options, vm) {
function normalizeDirectives (line 45199) | function normalizeDirectives (options) {
function assertObjectType (line 45211) | function assertObjectType (name, value, vm) {
function mergeOptions (line 45225) | function mergeOptions (
function resolveAsset (line 45279) | function resolveAsset (
function validateProp (line 45311) | function validateProp (
function getPropDefaultValue (line 45355) | function getPropDefaultValue (vm, prop, key) {
function assertProp (line 45388) | function assertProp (
function assertType (line 45439) | function assertType (value, type) {
function getType (line 45467) | function getType (fn) {
function isSameType (line 45472) | function isSameType (a, b) {
function getTypeIndex (line 45476) | function getTypeIndex (type, expectedTypes) {
function getInvalidTypeMessage (line 45488) | function getInvalidTypeMessage (name, value, expectedTypes) {
function styleValue (line 45509) | function styleValue (value, type) {
function isExplicable (line 45519) | function isExplicable (value) {
function isBoolean (line 45524) | function isBoolean () {
function handleError (line 45533) | function handleError (err, vm, info) {
function invokeWithErrorHandling (line 45560) | function invokeWithErrorHandling (
function globalHandleError (line 45582) | function globalHandleError (err, vm, info) {
function logError (line 45597) | function logError (err, vm, info) {
function flushCallbacks (line 45616) | function flushCallbacks () {
function nextTick (line 45690) | function nextTick (cb, ctx) {
function traverse (line 45837) | function traverse (val) {
function _traverse (line 45842) | function _traverse (val, seen) {
function createFnInvoker (line 45882) | function createFnInvoker (fns, vm) {
function updateListeners (line 45901) | function updateListeners (
function mergeVNodeHook (line 45942) | function mergeVNodeHook (def, hookKey, hook) {
function extractPropsFromVNodeData (line 45977) | function extractPropsFromVNodeData (
function checkProp (line 46018) | function checkProp (
function simpleNormalizeChildren (line 46057) | function simpleNormalizeChildren (children) {
function normalizeChildren (line 46070) | function normalizeChildren (children) {
function isTextNode (line 46078) | function isTextNode (node) {
function normalizeArrayChildren (line 46082) | function normalizeArrayChildren (children, nestedIndex) {
function initProvide (line 46132) | function initProvide (vm) {
function initInjections (line 46141) | function initInjections (vm) {
function resolveInject (line 46162) | function resolveInject (inject, vm) {
function resolveSlots (line 46205) | function resolveSlots (
function isWhitespace (line 46245) | function isWhitespace (node) {
function normalizeScopedSlots (line 46251) | function normalizeScopedSlots (
function normalizeScopedSlot (line 46301) | function normalizeScopedSlot(normalSlots, key, fn) {
function proxyNormalSlot (line 46326) | function proxyNormalSlot(slots, key) {
function renderList (line 46335) | function renderList (
function renderSlot (line 46380) | function renderSlot (
function resolveFilter (line 46417) | function resolveFilter (id) {
function isKeyNotMatch (line 46423) | function isKeyNotMatch (expect, actual) {
function checkKeyCodes (line 46436) | function checkKeyCodes (
function bindObjectProps (line 46458) | function bindObjectProps (
function renderStatic (line 46514) | function renderStatic (
function markOnce (line 46539) | function markOnce (
function markStatic (line 46548) | function markStatic (
function markStaticNode (line 46564) | function markStaticNode (node, key, isOnce) {
function bindObjectListeners (line 46572) | function bindObjectListeners (data, value) {
function resolveScopedSlots (line 46593) | function resolveScopedSlots (
function bindDynamicKeys (line 46621) | function bindDynamicKeys (baseObj, values) {
function prependModifier (line 46640) | function prependModifier (value, symbol) {
function installRenderHelpers (line 46646) | function installRenderHelpers (target) {
function FunctionalRenderContext (line 46668) | function FunctionalRenderContext (
function createFunctionalComponent (line 46744) | function createFunctionalComponent (
function cloneAndMarkFunctionalResult (line 46785) | function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, ...
function mergeProps (line 46801) | function mergeProps (to, from) {
function createComponent (line 46882) | function createComponent (
function createComponentInstanceForVnode (line 46981) | function createComponentInstanceForVnode (
function installComponentHooks (line 46999) | function installComponentHooks (data) {
function mergeHook$1 (line 47011) | function mergeHook$1 (f1, f2) {
function transformModel (line 47023) | function transformModel (options, data) {
function createElement (line 47050) | function createElement (
function _createElement (line 47069) | function _createElement (
function applyNS (line 47160) | function applyNS (vnode, ns, force) {
function registerDeepBindings (line 47181) | function registerDeepBindings (data) {
function initRender (line 47192) | function initRender (vm) {
function renderMixin (line 47226) | function renderMixin (Vue) {
function ensureCtor (line 47300) | function ensureCtor (comp, base) {
function createAsyncPlaceholder (line 47312) | function createAsyncPlaceholder (
function resolveAsyncComponent (line 47325) | function resolveAsyncComponent (
function isAsyncPlaceholder (line 47451) | function isAsyncPlaceholder (node) {
function getFirstComponentChild (line 47457) | function getFirstComponentChild (children) {
function initEvents (line 47472) | function initEvents (vm) {
function add (line 47484) | function add (event, fn) {
function remove$1 (line 47488) | function remove$1 (event, fn) {
function createOnceHandler (line 47492) | function createOnceHandler (event, fn) {
function updateComponentListeners (line 47502) | function updateComponentListeners (
function eventsMixin (line 47512) | function eventsMixin (Vue) {
function setActiveInstance (line 47610) | function setActiveInstance(vm) {
function initLifecycle (line 47618) | function initLifecycle (vm) {
function lifecycleMixin (line 47644) | function lifecycleMixin (Vue) {
function mountComponent (line 47727) | function mountComponent (
function updateChildComponent (line 47801) | function updateChildComponent (
function isInInactiveTree (line 47881) | function isInInactiveTree (vm) {
function activateChildComponent (line 47888) | function activateChildComponent (vm, direct) {
function deactivateChildComponent (line 47906) | function deactivateChildComponent (vm, direct) {
function callHook (line 47922) | function callHook (vm, hook) {
function resetSchedulerState (line 47953) | function resetSchedulerState () {
function flushSchedulerQueue (line 47996) | function flushSchedulerQueue () {
function callUpdatedHooks (line 48055) | function callUpdatedHooks (queue) {
function queueActivatedComponent (line 48070) | function queueActivatedComponent (vm) {
function callActivatedHooks (line 48077) | function callActivatedHooks (queue) {
function queueWatcher (line 48089) | function queueWatcher (watcher) {
function proxy (line 48336) | function proxy (target, sourceKey, key) {
function initState (line 48346) | function initState (vm) {
function initProps (line 48362) | function initProps (vm, propsOptions) {
function initData (line 48410) | function initData (vm) {
function getData (line 48452) | function getData (data, vm) {
function initComputed (line 48467) | function initComputed (vm, computed) {
function defineComputed (line 48508) | function defineComputed (
function createComputedGetter (line 48539) | function createComputedGetter (key) {
function createGetterInvoker (line 48554) | function createGetterInvoker(fn) {
function initMethods (line 48560) | function initMethods (vm, methods) {
function initWatch (line 48588) | function initWatch (vm, watch) {
function createWatcher (line 48601) | function createWatcher (
function stateMixin (line 48617) | function stateMixin (Vue) {
function initMixin (line 48672) | function initMixin (Vue) {
function initInternalComponent (line 48729) | function initInternalComponent (vm, options) {
function resolveConstructorOptions (line 48748) | function resolveConstructorOptions (Ctor) {
function resolveModifiedOptions (line 48772) | function resolveModifiedOptions (Ctor) {
function Vue (line 48785) | function Vue (options) {
function initUse (line 48802) | function initUse (Vue) {
function initMixin$1 (line 48824) | function initMixin$1 (Vue) {
function initExtend (line 48833) | function initExtend (Vue) {
function initProps$1 (line 48909) | function initProps$1 (Comp) {
function initComputed$1 (line 48916) | function initComputed$1 (Comp) {
function initAssetRegisters (line 48925) | function initAssetRegisters (Vue) {
function getComponentName (line 48959) | function getComponentName (opts) {
function matches (line 48963) | function matches (pattern, name) {
function pruneCache (line 48975) | function pruneCache (keepAliveInstance, filter) {
function pruneCacheEntry (line 48990) | function pruneCacheEntry (
function initGlobalAPI (line 49091) | function initGlobalAPI (Vue) {
function genClassForVnode (line 49216) | function genClassForVnode (vnode) {
function mergeClassData (line 49234) | function mergeClassData (child, parent) {
function renderClass (line 49243) | function renderClass (
function concat (line 49254) | function concat (a, b) {
function stringifyClass (line 49258) | function stringifyClass (value) {
function stringifyArray (line 49272) | function stringifyArray (value) {
function stringifyObject (line 49284) | function stringifyObject (value) {
function getTagNamespace (line 49331) | function getTagNamespace (tag) {
function isUnknownElement (line 49343) | function isUnknownElement (tag) {
function query (line 49375) | function query (el) {
function createElement$1 (line 49392) | function createElement$1 (tagName, vnode) {
function createElementNS (line 49404) | function createElementNS (namespace, tagName) {
function createTextNode (line 49408) | function createTextNode (text) {
function createComment (line 49412) | function createComment (text) {
function insertBefore (line 49416) | function insertBefore (parentNode, newNode, referenceNode) {
function removeChild (line 49420) | function removeChild (node, child) {
function appendChild (line 49424) | function appendChild (node, child) {
function parentNode (line 49428) | function parentNode (node) {
function nextSibling (line 49432) | function nextSibling (node) {
function tagName (line 49436) | function tagName (node) {
function setTextContent (line 49440) | function setTextContent (node, text) {
function setStyleScope (line 49444) | function setStyleScope (node, scopeId) {
function registerRef (line 49480) | function registerRef (vnode, isRemoval) {
function sameVnode (line 49523) | function sameVnode (a, b) {
function sameInputType (line 49540) | function sameInputType (a, b) {
function createKeyToOldIdx (line 49548) | function createKeyToOldIdx (children, beginIdx, endIdx) {
function createPatchFunction (line 49558) | function createPatchFunction (backend) {
function updateDirectives (line 50288) | function updateDirectives (oldVnode, vnode) {
function _update (line 50294) | function _update (oldVnode, vnode) {
function normalizeDirectives$1 (line 50357) | function normalizeDirectives$1 (
function getRawDirName (line 50380) | function getRawDirName (dir) {
function callHook$1 (line 50384) | function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
function updateAttrs (line 50402) | function updateAttrs (oldVnode, vnode) {
function setAttr (line 50443) | function setAttr (el, key, value) {
function baseSetAttr (line 50472) | function baseSetAttr (el, key, value) {
function updateClass (line 50504) | function updateClass (oldVnode, vnode) {
function parseFilters (line 50544) | function parseFilters (exp) {
function wrapFilter (line 50626) | function wrapFilter (exp, filter) {
function baseWarn (line 50643) | function baseWarn (msg, range) {
function pluckModuleFunction (line 50648) | function pluckModuleFunction (
function addProp (line 50657) | function addProp (el, name, value, range, dynamic) {
function addAttr (line 50662) | function addAttr (el, name, value, range, dynamic) {
function addRawAttr (line 50671) | function addRawAttr (el, name, value, range) {
function addDirective (line 50676) | function addDirective (
function prependModifierMarker (line 50697) | function prependModifierMarker (symbol, name, dynamic) {
function addHandler (line 50703) | function addHandler (
function getRawBindingAttr (line 50786) | function getRawBindingAttr (
function getBindingAttr (line 50795) | function getBindingAttr (
function getAndRemoveAttr (line 50817) | function getAndRemoveAttr (
function getAndRemoveAttrByRegex (line 50838) | function getAndRemoveAttrByRegex (
function rangeSetItem (line 50852) | function rangeSetItem (
function genComponentModel (line 50872) | function genComponentModel (
function genAssignmentCode (line 50904) | function genAssignmentCode (
function parseModel (line 50935) | function parseModel (val) {
function next (line 50975) | function next () {
function eof (line 50979) | function eof () {
function isStringStart (line 50983) | function isStringStart (chr) {
function parseBracket (line 50987) | function parseBracket (chr) {
function parseString (line 51005) | function parseString (chr) {
function model (line 51024) | function model (
function genCheckboxModel (line 51077) | function genCheckboxModel (
function genRadioModel (line 51108) | function genRadioModel (
function genSelect (line 51120) | function genSelect (
function genDefaultModel (line 51137) | function genDefaultModel (
function normalizeEvents (line 51196) | function normalizeEvents (on) {
function createOnceHandler$1 (line 51215) | function createOnceHandler$1 (event, handler, capture) {
function add$1 (line 51230) | function add$1 (
function remove$2 (line 51275) | function remove$2 (
function updateDOMListeners (line 51288) | function updateDOMListeners (oldVnode, vnode) {
function updateDOMProps (line 51309) | function updateDOMProps (oldVnode, vnode) {
function shouldUpdateValue (line 51382) | function shouldUpdateValue (elm, checkVal) {
function isNotInFocusAndDirty (line 51390) | function isNotInFocusAndDirty (elm, checkVal) {
function isDirtyWithModifiers (line 51400) | function isDirtyWithModifiers (elm, newVal) {
function normalizeStyleData (line 51435) | function normalizeStyleData (data) {
function normalizeStyleBinding (line 51445) | function normalizeStyleBinding (bindingStyle) {
function getStyle (line 51459) | function getStyle (vnode, checkChild) {
function updateStyle (line 51532) | function updateStyle (oldVnode, vnode) {
function addClass (line 51588) | function addClass (el, cls) {
function removeClass (line 51613) | function removeClass (el, cls) {
function resolveTransition (line 51646) | function resolveTransition (def$$1) {
function nextFrame (line 51706) | function nextFrame (fn) {
function addTransitionClass (line 51712) | function addTransitionClass (el, cls) {
function removeTransitionClass (line 51720) | function removeTransitionClass (el, cls) {
function whenTransitionEnds (line 51727) | function whenTransitionEnds (
function getTransitionInfo (line 51760) | function getTransitionInfo (el, expectedType) {
function getTimeout (line 51810) | function getTimeout (delays, durations) {
function toMs (line 51825) | function toMs (s) {
function enter (line 51831) | function enter (vnode, toggleDisplay) {
function leave (line 51982) | function leave (vnode, rm) {
function checkDuration (line 52087) | function checkDuration (val, name, vnode) {
function isValidDuration (line 52103) | function isValidDuration (val) {
function getHookArgumentsLength (line 52113) | function getHookArgumentsLength (fn) {
function _enter (line 52130) | function _enter (_, vnode) {
function setSelected (line 52235) | function setSelected (el, binding, vm) {
function actuallySetSelected (line 52245) | function actuallySetSelected (el, binding, vm) {
function hasNoMatchingOption (line 52278) | function hasNoMatchingOption (value, options) {
function getValue (line 52282) | function getValue (option) {
function onCompositionStart (line 52288) | function onCompositionStart (e) {
function onCompositionEnd (line 52292) | function onCompositionEnd (e) {
function trigger (line 52299) | function trigger (el, type) {
function locateNode (line 52308) | function locateNode (vnode) {
function getRealChild (line 52396) | function getRealChild (vnode) {
function extractTransitionData (line 52405) | function extractTransitionData (comp) {
function placeholder (line 52421) | function placeholder (h, rawChild) {
function hasParentTransition (line 52429) | function hasParentTransition (vnode) {
function isSameChild (line 52437) | function isSameChild (child, oldChild) {
function callPendingCbs (line 52705) | function callPendingCbs (c) {
function recordPosition (line 52716) | function recordPosition (c) {
function applyTranslation (line 52720) | function applyTranslation (c) {
function parseText (line 52805) | function parseText (
function transformNode (line 52842) | function transformNode (el, options) {
function genData (line 52866) | function genData (el) {
function transformNode$1 (line 52885) | function transformNode$1 (el, options) {
function genData$1 (line 52911) | function genData$1 (el) {
function decodeAttr (line 53000) | function decodeAttr (value, shouldDecodeNewlines) {
function parseHTML (line 53005) | function parseHTML (html, options) {
function createASTElement (line 53294) | function createASTElement (
function parse (line 53313) | function parse (
function processPre (line 53636) | function processPre (el) {
function processRawAttrs (line 53642) | function processRawAttrs (el) {
function processElement (line 53663) | function processElement (
function processKey (line 53688) | function processKey (el) {
function processRef (line 53715) | function processRef (el) {
function processFor (line 53723) | function processFor (el) {
function parseFor (line 53740) | function parseFor (exp) {
function processIf (line 53759) | function processIf (el) {
function processIfConditions (line 53778) | function processIfConditions (el, parent) {
function findPrevElement (line 53794) | function findPrevElement (children) {
function addIfCondition (line 53812) | function addIfCondition (el, condition) {
function processOnce (line 53819) | function processOnce (el) {
function processSlotContent (line 53828) | function processSlotContent (el) {
function getSlotName (line 53947) | function getSlotName (binding) {
function processSlotOutlet (line 53967) | function processSlotOutlet (el) {
function processComponent (line 53981) | function processComponent (el) {
function processAttrs (line 53991) | function processAttrs (el) {
function checkInFor (line 54125) | function checkInFor (el) {
function parseModifiers (line 54136) | function parseModifiers (name) {
function makeAttrsMap (line 54145) | function makeAttrsMap (attrs) {
function isTextTag (line 54160) | function isTextTag (el) {
function isForbiddenTag (line 54164) | function isForbiddenTag (el) {
function guardIESVGBug (line 54178) | function guardIESVGBug (attrs) {
function checkForAliasModel (line 54190) | function checkForAliasModel (el, value) {
function preTransformNode (line 54209) | function preTransformNode (el, options) {
function cloneASTElement (line 54271) | function cloneASTElement (el) {
function text (line 54287) | function text (el, dir) {
function html (line 54295) | function html (el, dir) {
function optimize (line 54340) | function optimize (root, options) {
function genStaticKeys$1 (line 54350) | function genStaticKeys$1 (keys) {
function markStatic$1 (line 54357) | function markStatic$1 (node) {
function markStaticRoots (line 54389) | function markStaticRoots (node, isInFor) {
function isStatic (line 54419) | function isStatic (node) {
function isDirectChildOfTemplateFor (line 54436) | function isDirectChildOfTemplateFor (node) {
function genHandlers (line 54503) | function genHandlers (
function genHandler (line 54526) | function genHandler (handler) {
function genKeyFilter (line 54585) | function genKeyFilter (keys) {
function genFilterCode (line 54595) | function genFilterCode (key) {
function on (line 54614) | function on (el, dir) {
function bind$1 (line 54623) | function bind$1 (el, dir) {
function generate (line 54658) | function generate (
function genElement (line 54670) | function genElement (el, state) {
function genStatic (line 54710) | function genStatic (el, state) {
function genOnce (line 54725) | function genOnce (el, state) {
function genIf (line 54752) | function genIf (
function genIfConditions (line 54762) | function genIfConditions (
function genFor (line 54789) | function genFor (
function genData$2 (line 54822) | function genData$2 (el, state) {
function genDirectives (line 54906) | function genDirectives (el, state) {
function genInlineTemplate (line 54931) | function genInlineTemplate (el, state) {
function genScopedSlots (line 54947) | function genScopedSlots (
function hash (line 55001) | function hash(str) {
function containsSlotChild (line 55010) | function containsSlotChild (el) {
function genScopedSlot (line 55020) | function genScopedSlot (
function genChildren (line 55045) | function genChildren (
function getNormalizationType (line 55078) | function getNormalizationType (
function needsNormalization (line 55101) | function needsNormalization (el) {
function genNode (line 55105) | function genNode (node, state) {
function genText (line 55115) | function genText (text) {
function genComment (line 55121) | function genComment (comment) {
function genSlot (line 55125) | function genSlot (el, state) {
function genComponent (line 55151) | function genComponent (
function genProps (line 55160) | function genProps (props) {
function transformSpecialNewlines (line 55181) | function transformSpecialNewlines (text) {
function detectErrors (line 55208) | function detectErrors (ast, warn) {
function checkNode (line 55214) | function checkNode (node, warn) {
function checkEvent (line 55243) | function checkEvent (exp, text, warn, range) {
function checkFor (line 55256) | function checkFor (node, text, warn, range) {
function checkIdentifier (line 55263) | function checkIdentifier (
function checkExpression (line 55279) | function checkExpression (exp, text, warn, range) {
function checkFunctionParameterExpression (line 55301) | function checkFunctionParameterExpression (exp, text, warn, range) {
function generateCodeFrame (line 55318) | function generateCodeFrame (
function repeat$1 (line 55355) | function repeat$1 (str, n) {
function createFunction (line 55372) | function createFunction (code, errors) {
function createCompileToFunctionFn (line 55381) | function createCompileToFunctionFn (compile) {
function createCompilerCreator (line 55483) | function createCompilerCreator (baseCompile) {
function getShouldDecode (line 55584) | function getShouldDecode (href) {
function getOuterHTML (line 55676) | function getOuterHTML (el) {
function webpackContext (line 55708) | function webpackContext(req) {
function webpackContextResolve (line 55712) | function webpackContextResolve(req) {
function __webpack_require__ (line 55735) | function __webpack_require__(moduleId) {
FILE: tests/BrowserKitTestCase.php
class BrowserKitTestCase (line 5) | class BrowserKitTestCase extends BaseTestCase
method createApplication (line 9) | public function createApplication()
FILE: tests/CreatesApplication.php
type CreatesApplication (line 8) | trait CreatesApplication
method createApplication (line 15) | public function createApplication()
FILE: tests/Feature/AuthTest.php
class AuthTest (line 8) | class AuthTest extends TestCase
method guests_cannot_do_super_secret_stuff (line 13) | public function guests_cannot_do_super_secret_stuff()
FILE: tests/Feature/AuthorClientTest.php
class AuthorClientTest (line 5) | class AuthorClientTest extends BrowserKitTestCase
method it_authenticates_with_github_and_returns_5000_rate_limit (line 11) | public function it_authenticates_with_github_and_returns_5000_rate_lim...
FILE: tests/Feature/AuthorPageTest.php
class AuthorPageTest (line 11) | class AuthorPageTest extends TestCase
method setUp (line 15) | public function setUp(): void
method a_user_can_visit_the_author_page_and_also_see_a_bio (line 23) | public function a_user_can_visit_the_author_page_and_also_see_a_bio()
method if_a_user_does_not_set_a_bio_it_hides_the_view (line 53) | function if_a_user_does_not_set_a_bio_it_hides_the_view()
method createAuthor (line 75) | public function createAuthor($authorArray = [])
method createGist (line 89) | public function createGist($gistArray = [])
FILE: tests/Feature/CommentTest.php
class CommentTest (line 5) | class CommentTest extends BrowserKitTestCase
method it_can_be_created_from_github_api_data (line 10) | public function it_can_be_created_from_github_api_data()
method can_get_absolute_url_to_gist_comment_on_github (line 23) | public function can_get_absolute_url_to_gist_comment_on_github()
FILE: tests/Feature/ContentParserTest.php
class ContentParserTest (line 5) | class ContentParserTest extends BrowserKitTestCase
method it_runs_transformers_in_order (line 8) | public function it_runs_transformers_in_order()
FILE: tests/Feature/FileTest.php
class FileTest (line 5) | class FileTest extends BrowserKitTestCase
method it_can_be_created_from_github_api_data (line 10) | public function it_can_be_created_from_github_api_data()
method it_loads_multiple_files (line 25) | public function it_loads_multiple_files()
FILE: tests/Feature/GistClientTest.php
class GistClientTest (line 5) | class GistClientTest extends BrowserKitTestCase
method it_authenticates_with_github_and_returns_5000_rate_limit (line 11) | public function it_authenticates_with_github_and_returns_5000_rate_lim...
FILE: tests/Feature/GistConfigTest.php
class GistConfigTest (line 5) | class GistConfigTest extends BrowserKitTestCase
method it_can_be_created_from_github_api_data (line 10) | public function it_can_be_created_from_github_api_data()
method it_returns_default_values_when_no_gistlog_yml_is_present (line 23) | public function it_returns_default_values_when_no_gistlog_yml_is_prese...
method it_returns_default_values_when_gistlog_yml_does_not_provide_them (line 36) | public function it_returns_default_values_when_gistlog_yml_does_not_pr...
method it_returns_a_null_value_when_a_date_value_is_invalid (line 49) | public function it_returns_a_null_value_when_a_date_value_is_invalid()
FILE: tests/Feature/GistlogRepositoryTest.php
class GistlogRepositoryTest (line 5) | class GistlogRepositoryTest extends BrowserKitTestCase
method it_can_retrieve_a_gist_by_id (line 10) | public function it_can_retrieve_a_gist_by_id()
method it_can_retrieve_gists_by_url (line 21) | public function it_can_retrieve_gists_by_url()
method it_can_retrieve_gists_by_url_with_a_trailing_slash (line 34) | public function it_can_retrieve_gists_by_url_with_a_trailing_slash()
FILE: tests/Feature/GistlogTest.php
class GistlogTest (line 5) | class GistlogTest extends BrowserKitTestCase
method it_can_be_created_from_github_api_data (line 10) | public function it_can_be_created_from_github_api_data()
method secret_gists_are_not_public (line 27) | public function secret_gists_are_not_public()
method public_gists_are_public (line 38) | public function public_gists_are_public()
method secret_gists_are_secret (line 49) | public function secret_gists_are_secret()
method public_gists_are_not_secret (line 60) | public function public_gists_are_not_secret()
method code_only_posts_render_in_a_code_block (line 71) | public function code_only_posts_render_in_a_code_block()
method it_finds_the_first_markdown_file_and_uses_it_as_the_post (line 81) | public function it_finds_the_first_markdown_file_and_uses_it_as_the_po...
method it_loads_files (line 91) | public function it_loads_files()
method it_has_additional_files_but_doesnt_show_them (line 104) | public function it_has_additional_files_but_doesnt_show_them()
method it_accepts_anonymous_gists (line 113) | public function it_accepts_anonymous_gists()
FILE: tests/Feature/GitHubClientTest.php
class GitHubClientTest (line 5) | class GitHubClientTest extends BrowserKitTestCase
method it_authenticates_with_github_and_returns_5000_rate_limit (line 11) | public function it_authenticates_with_github_and_returns_5000_rate_lim...
FILE: tests/FixtureGistClient.php
class FixtureGistClient (line 5) | class FixtureGistClient extends GistClient
method __construct (line 9) | public function __construct()
method getGist (line 13) | public function getGist($gistId): array
method getGistComments (line 18) | public function getGistComments($gistId): array
FILE: tests/GistFixtureHelpers.php
type GistFixtureHelpers (line 3) | trait GistFixtureHelpers
method loadFixture (line 5) | private function loadFixture($path)
FILE: tests/SpacePadTransformer.php
class SpacePadTransformer (line 5) | class SpacePadTransformer implements Transformer
method transform (line 7) | public function transform($content)
FILE: tests/TestCase.php
class TestCase (line 8) | abstract class TestCase extends BaseTestCase
FILE: tests/TrimTransformer.php
class TrimTransformer (line 5) | class TrimTransformer implements Transformer
method transform (line 7) | public function transform($content)
Copy disabled (too large)
Download .json
Condensed preview — 172 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,252K chars).
[
{
"path": ".gitattributes",
"chars": 12,
"preview": "* text=auto\n"
},
{
"path": ".github/workflows/lint.yml",
"chars": 1458,
"preview": "name: Lint\n\non:\n push:\n branches: [ main ]\n pull_request:\n\njobs:\n phpcs:\n name: PHPCS\n\n ru"
},
{
"path": ".github/workflows/run-tests.yml",
"chars": 890,
"preview": "name: Run Tests\n\non:\n pull_request:\n push:\n branches: [ main ]\n\njobs:\n test:\n name: Run PHPUnit Tests\n runs-"
},
{
"path": ".gitignore",
"chars": 63,
"preview": "/node_modules\n/vendor\n.env\n.phpunit.result.cache\n.php_cs.cache\n"
},
{
"path": ".phpcs.xml.dist",
"chars": 215,
"preview": "<?xml version=\"1.0\"?>\n<ruleset>\n <file>app</file>\n <file>config</file>\n <file>database</file>\n <file>resourc"
},
{
"path": ".travis.yml",
"chars": 188,
"preview": "\nlanguage: php\n\nphp:\n - 7.4\n\nenv:\n - TRAVIS=true\n\nbefore_script:\n - phpenv config-add travis.php.ini\n - composer ins"
},
{
"path": "app/Authors/Author.php",
"chars": 1670,
"preview": "<?php\n\nnamespace App\\Authors;\n\nuse App\\Gists\\Gistlog;\nuse Illuminate\\Support\\Arr;\n\nclass Author\n{\n public const ANONY"
},
{
"path": "app/Authors/AuthorClient.php",
"chars": 2399,
"preview": "<?php\n\nnamespace App\\Authors;\n\nuse App\\CachesGitHubResponses;\nuse App\\Gists\\GistClient;\nuse Exception;\nuse Github\\Client"
},
{
"path": "app/Authors/AuthorRepository.php",
"chars": 555,
"preview": "<?php\n\nnamespace App\\Authors;\n\nclass AuthorRepository\n{\n /**\n * @var AuthorClient\n */\n private $authorClie"
},
{
"path": "app/CachesGitHubResponses.php",
"chars": 347,
"preview": "<?php\n\nnamespace App;\n\ntrait CachesGitHubResponses\n{\n protected $cacheLength = 600;\n\n /**\n * @param string $me"
},
{
"path": "app/Console/Commands/Inspire.php",
"chars": 580,
"preview": "<?php\n\nnamespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Foundation\\Inspiring;\n\nclass Insp"
},
{
"path": "app/Console/Kernel.php",
"chars": 850,
"preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
},
{
"path": "app/ContentParser/ContentParser.php",
"chars": 414,
"preview": "<?php\n\nnamespace App\\ContentParser;\n\nclass ContentParser\n{\n protected $transformers;\n\n public function push(Transf"
},
{
"path": "app/ContentParser/ContentParserFacade.php",
"chars": 221,
"preview": "<?php\n\nnamespace App\\ContentParser;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass ContentParserFacade extends Facade\n{\n"
},
{
"path": "app/ContentParser/GitHubMarkdownTransformer.php",
"chars": 460,
"preview": "<?php\n\nnamespace App\\ContentParser;\n\nuse Github\\Client as GitHubClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass GitHu"
},
{
"path": "app/ContentParser/MarkdownTransformer.php",
"chars": 228,
"preview": "<?php\n\nnamespace App\\ContentParser;\n\nuse Michelf\\MarkdownExtra;\n\nclass MarkdownTransformer implements Transformer\n{\n "
},
{
"path": "app/ContentParser/Transformer.php",
"chars": 104,
"preview": "<?php\n\nnamespace App\\ContentParser;\n\ninterface Transformer\n{\n public function transform($content);\n}\n"
},
{
"path": "app/Exceptions/GistNotFoundException.php",
"chars": 298,
"preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\n\nclass GistNotFoundException extends Exception\n{\n public $gistId;\n\n "
},
{
"path": "app/Exceptions/Handler.php",
"chars": 1018,
"preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\nuse T"
},
{
"path": "app/Gists/Comment.php",
"chars": 1349,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse App\\ContentParser\\ContentParserFacade as ContentParser;\nuse Carbon\\Carbon;\nuse Illumina"
},
{
"path": "app/Gists/File.php",
"chars": 1258,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse Illuminate\\Contracts\\Support\\Arrayable;\n\nclass File implements Arrayable\n{\n public $"
},
{
"path": "app/Gists/FileCollection.php",
"chars": 955,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse App\\Gists\\File;\nuse Illuminate\\Support\\Collection;\n\nclass FileCollection extends Collec"
},
{
"path": "app/Gists/GistClient.php",
"chars": 4098,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse App\\CachesGitHubResponses;\nuse App\\Exceptions\\GistNotFoundException;\nuse Exception;\nuse"
},
{
"path": "app/Gists/GistConfig.php",
"chars": 2348,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse ArrayAccess;\nuse Carbon\\Carbon;\nuse ErrorException;\nuse Illuminate\\Support\\Arr;\nuse Sym"
},
{
"path": "app/Gists/Gistlog.php",
"chars": 3711,
"preview": "<?php\n\nnamespace App\\Gists;\n\nuse App\\Authors\\Author;\nuse App\\ContentParser\\ContentParserFacade as ContentParser;\nuse App"
},
{
"path": "app/Gists/GistlogRepository.php",
"chars": 799,
"preview": "<?php\n\nnamespace App\\Gists;\n\nclass GistlogRepository\n{\n /**\n * @var GistClient\n */\n private $gistClient;\n\n"
},
{
"path": "app/Http/Controllers/Auth/AuthController.php",
"chars": 1902,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\User;\nuse Exception;\nus"
},
{
"path": "app/Http/Controllers/Auth/ConfirmPasswordController.php",
"chars": 1023,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Providers\\RouteServiceProvider"
},
{
"path": "app/Http/Controllers/Auth/ForgotPasswordController.php",
"chars": 666,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\SendsPa"
},
{
"path": "app/Http/Controllers/Auth/ResetPasswordController.php",
"chars": 843,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Providers\\RouteServiceProvider"
},
{
"path": "app/Http/Controllers/AuthorsController.php",
"chars": 829,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Authors\\AuthorRepository;\nuse Exception;\nuse Illuminate\\Support\\Facades\\"
},
{
"path": "app/Http/Controllers/AuthorsRssController.php",
"chars": 555,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Authors\\AuthorRepository;\n\nclass AuthorsRssController extends Controller"
},
{
"path": "app/Http/Controllers/Controller.php",
"chars": 291,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Foundation\\Validati"
},
{
"path": "app/Http/Controllers/GistCommentsController.php",
"chars": 1217,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\ContentParser\\ContentParserFacade;\nuse App\\Gists\\GistClient;\nuse App\\Htt"
},
{
"path": "app/Http/Controllers/GistsController.php",
"chars": 2737,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Exceptions\\GistNotFoundException;\nuse App\\Gists\\GistClient;\nuse App\\Gist"
},
{
"path": "app/Http/Controllers/HomeController.php",
"chars": 233,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nclass HomeController extends Controller\n{\n public function index()\n {\n "
},
{
"path": "app/Http/Kernel.php",
"chars": 2597,
"preview": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n "
},
{
"path": "app/Http/Middleware/Authenticate.php",
"chars": 464,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate ex"
},
{
"path": "app/Http/Middleware/EncryptCookies.php",
"chars": 294,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCook"
},
{
"path": "app/Http/Middleware/PreventRequestsDuringMaintenance.php",
"chars": 353,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance as Mid"
},
{
"path": "app/Http/Middleware/RedirectIfAuthenticated.php",
"chars": 734,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Providers\\RouteServiceProvider;\nuse Closure;\nuse Illuminate\\Http\\Request;"
},
{
"path": "app/Http/Middleware/TrimStrings.php",
"chars": 368,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimS"
},
{
"path": "app/Http/Middleware/TrustHosts.php",
"chars": 354,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Middleware\\TrustHosts as Middleware;\n\nclass TrustHosts extend"
},
{
"path": "app/Http/Middleware/TrustProxies.php",
"chars": 585,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\nuse Illuminate\\Http\\Request;\n\ncla"
},
{
"path": "app/Http/Middleware/VerifyCsrfToken.php",
"chars": 307,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass V"
},
{
"path": "app/Jobs/Command.php",
"chars": 62,
"preview": "<?php\n\nnamespace App\\Jobs;\n\nabstract class Command\n{\n //\n}\n"
},
{
"path": "app/Listeners/Commands/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "app/Listeners/Events/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "app/Models/User.php",
"chars": 550,
"preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\nuse Illuminate\\Notifications\\Notif"
},
{
"path": "app/Providers/AppServiceProvider.php",
"chars": 411,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvid"
},
{
"path": "app/Providers/AuthServiceProvider.php",
"chars": 538,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\n\ncl"
},
{
"path": "app/Providers/AuthorClientServiceProvider.php",
"chars": 1093,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Authors\\AuthorClient;\nuse App\\Gists\\GistClient;\nuse Github\\Client as GitHubClie"
},
{
"path": "app/Providers/BroadcastServiceProvider.php",
"chars": 380,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Broadcast;\nuse Illuminate\\Support\\ServiceProvider;\n\nclas"
},
{
"path": "app/Providers/ConfigServiceProvider.php",
"chars": 558,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass ConfigServiceProvider extends ServicePro"
},
{
"path": "app/Providers/ContentParserServiceProvider.php",
"chars": 573,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse App\\ContentParser\\ContentParser;\nuse App\\ContentParser\\GitHubMarkdownTransformer;\nu"
},
{
"path": "app/Providers/EventServiceProvider.php",
"chars": 538,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider as ServiceProvider;\n\nc"
},
{
"path": "app/Providers/GistClientServiceProvider.php",
"chars": 1034,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Gists\\GistClient;\nuse Github\\Client as GitHubClient;\nuse Illuminate\\Support\\Ser"
},
{
"path": "app/Providers/GitHubClientServiceProvider.php",
"chars": 962,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Github\\Client;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass GitHubClientServicePr"
},
{
"path": "app/Providers/RouteServiceProvider.php",
"chars": 1585,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Foundation\\Support\\Providers\\Ro"
},
{
"path": "app/Services/Registrar.php",
"chars": 1013,
"preview": "<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\User;\nuse Illuminate\\Contracts\\Auth\\Registrar as RegistrarContract;\nuse I"
},
{
"path": "artisan",
"chars": 1686,
"preview": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|-----------------------------------------------"
},
{
"path": "bin/setup.sh",
"chars": 203,
"preview": "#!/bin/bash\n\ncp .env.example .env\ncomposer install\nphp artisan key:generate\nnpm install\nnpm run dev\n\necho \"\"\necho \"Remem"
},
{
"path": "bootstrap/app.php",
"chars": 1590,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
},
{
"path": "bootstrap/cache/.gitignore",
"chars": 13,
"preview": "*\n!.gitignore"
},
{
"path": "composer.json",
"chars": 2229,
"preview": "{\n \"name\": \"laravel/laravel\",\n \"description\": \"The Laravel Framework.\",\n \"keywords\": [\n \"framework\",\n "
},
{
"path": "config/app.php",
"chars": 9710,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Applicatio"
},
{
"path": "config/auth.php",
"chars": 3803,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "config/broadcasting.php",
"chars": 1711,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Br"
},
{
"path": "config/cache.php",
"chars": 3201,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/cors.php",
"chars": 846,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Cross-Orig"
},
{
"path": "config/database.php",
"chars": 5056,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/filesystems.php",
"chars": 2200,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Fi"
},
{
"path": "config/hashing.php",
"chars": 1571,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ha"
},
{
"path": "config/logging.php",
"chars": 3135,
"preview": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn"
},
{
"path": "config/mail.php",
"chars": 3372,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ma"
},
{
"path": "config/queue.php",
"chars": 2906,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Qu"
},
{
"path": "config/services.php",
"chars": 1161,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Third Part"
},
{
"path": "config/session.php",
"chars": 7043,
"preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n /*\n |--------------------------------------------------------------"
},
{
"path": "config/view.php",
"chars": 1053,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | View Stora"
},
{
"path": "contributing.md",
"chars": 789,
"preview": "## Contributing\n\nWe welcome contributions! We ask you to follow a few guidelines when making a contribution:\n\n- [Follow "
},
{
"path": "database/.gitignore",
"chars": 9,
"preview": "*.sqlite\n"
},
{
"path": "database/factories/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "database/migrations/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "database/migrations/2014_10_12_000000_create_users_table.php",
"chars": 696,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
"chars": 540,
"preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
},
{
"path": "database/seeders/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "database/seeders/DatabaseSeeder.php",
"chars": 331,
"preview": "<?php\n\nnamespace Database\\Seeders;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Seeder;\n\nclass Datab"
},
{
"path": "nitpick.json",
"chars": 65,
"preview": "{\n \"ignore\": [\n \"tests/*\",\n \"database/*\"\n ]\n}"
},
{
"path": "package.json",
"chars": 1063,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"dev\": \"npm run development\",\n \"development\": \"mix\",\n \"wat"
},
{
"path": "phpspec.yml",
"chars": 95,
"preview": "suites:\n main:\n namespace: Gistlog\n psr4_prefix: Gistlog\n src_path: app"
},
{
"path": "phpunit.xml",
"chars": 966,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSch"
},
{
"path": "public/.htaccess",
"chars": 593,
"preview": "<IfModule mod_rewrite.c>\n <IfModule mod_negotiation.c>\n Options -MultiViews -Indexes\n </IfModule>\n\n Rewr"
},
{
"path": "public/css/app.css",
"chars": 3837021,
"preview": "/**\n * This injects Tailwind's base styles, which is a combination of\n * Normalize.css and some additional base styles.\n"
},
{
"path": "public/css/landing.css",
"chars": 3833838,
"preview": "/**\n * This injects Tailwind's base styles, which is a combination of\n * Normalize.css and some additional base styles.\n"
},
{
"path": "public/index.php",
"chars": 1743,
"preview": "<?php\n\nuse Illuminate\\Contracts\\Http\\Kernel;\nuse Illuminate\\Http\\Request;\n\ndefine('LARAVEL_START', microtime(true));\n\n/*"
},
{
"path": "public/js/app.js",
"chars": 1739511,
"preview": "/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/@babel/runtime/regen"
},
{
"path": "public/js/commentForm.js",
"chars": 1289,
"preview": "var commentForm = (function () {\n var el = {\n $comment_input: $('#comment_input'),\n $comment_buttons_co"
},
{
"path": "public/mix-manifest.json",
"chars": 115,
"preview": "{\n \"/js/app.js\": \"/js/app.js\",\n \"/css/app.css\": \"/css/app.css\",\n \"/css/landing.css\": \"/css/landing.css\"\n}\n"
},
{
"path": "public/robots.txt",
"chars": 24,
"preview": "User-agent: *\nDisallow:\n"
},
{
"path": "readme.md",
"chars": 1892,
"preview": "\n\n# GistLog\n\n> [!IMPORTANT]\n> "
},
{
"path": "resources/js/app.js",
"chars": 1107,
"preview": "/**\n * First we will load all of this project's JavaScript dependencies which\n * includes Vue and other libraries. It is"
},
{
"path": "resources/js/bootstrap.js",
"chars": 1771,
"preview": "window._ = require('lodash');\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for Ja"
},
{
"path": "resources/js/components/GistAuthModal.vue",
"chars": 3397,
"preview": "<template>\n <div class=\"fixed inset-0 z-50 flex px-1 overflow-auto sm:px-0 bg-smoke\">\n <div class=\"relative fl"
},
{
"path": "resources/js/components/GistComment.vue",
"chars": 1361,
"preview": "<template>\n <div class=\"flex my-6\">\n <div class=\"w-12 h-12 rounded-full overflow-hidden\">\n <img\n "
},
{
"path": "resources/js/components/GistComments.vue",
"chars": 975,
"preview": "<template>\n <div>\n <gist-comment\n v-for=\"comment in comments\"\n :key=\"comment.id\"\n "
},
{
"path": "resources/js/components/GistStar.vue",
"chars": 2796,
"preview": "<template>\n <div>\n <GistAuthModal\n v-if=\"isLoginModalOpen\"\n @close-modal=\"isLoginModalOp"
},
{
"path": "resources/js/components/HomePageTabs.vue",
"chars": 3203,
"preview": "<template>\n <div class=\"container py-1 mx-auto mb-6\">\n <div class=\"hidden md:flex flex-col md:flex-row justify"
},
{
"path": "resources/lang/en/auth.php",
"chars": 674,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "resources/lang/en/pagination.php",
"chars": 538,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Pagination"
},
{
"path": "resources/lang/en/passwords.php",
"chars": 746,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Password R"
},
{
"path": "resources/lang/en/validation.php",
"chars": 7955,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Validation"
},
{
"path": "resources/less/app.less",
"chars": 1515,
"preview": "@import \"./tailwind\";\n\n@import \"./github\";\n\n.container {\n @apply px-5;\n\n max-width: 990px;\n}\n\n.avatar {\n @apply"
},
{
"path": "resources/less/github.less",
"chars": 1798,
"preview": "@base-color: rgb(51, 51, 51);\n@strings-and-such: #183691;\n\n.gistlog__content .highlight pre, pre {\n background-color:"
},
{
"path": "resources/less/landing.less",
"chars": 878,
"preview": "@import './tailwind';\n\n.blue-overlay:before {\n background-color: rgba(0, 59, 87, 0.8);\n content: ' ';\n display:"
},
{
"path": "resources/less/tailwind.less",
"chars": 1535,
"preview": "/**\n * This injects Tailwind's base styles, which is a combination of\n * Normalize.css and some additional base styles.\n"
},
{
"path": "resources/views/authors/feed.blade.php",
"chars": 897,
"preview": "@extends('layouts.rss')\n\n@section('title', $author->name . \" - Posts on GistLog\")\n@section('url', Request::url())\n@secti"
},
{
"path": "resources/views/authors/show.blade.php",
"chars": 1782,
"preview": "@extends('layouts.app')\n\n@section('meta')\n<link rel=\"alternate\" type=\"application/atom+xml\" title=\"RSS Feed for {{ $auth"
},
{
"path": "resources/views/components/alert.blade.php",
"chars": 651,
"preview": "<div class=\"max-w-2xl mx-auto js-auto_dismiss mt-10\">\n <div class=\"bg-{{ $color }}-lightest border-t-4 border-{{ $col"
},
{
"path": "resources/views/create.blade.php",
"chars": 2504,
"preview": "@extends('layouts.app')\n\n@section('content')\n<div class=\"max-w-md mx-auto mt-20 px-6 md:px-0\">\n <p class=\"text-blue-d"
},
{
"path": "resources/views/errors/404.blade.php",
"chars": 1006,
"preview": "@extends('layouts.error')\n\n@section('title')\n 404! Request not found\n@endsection\n\n@section('content')\n<style>\n .ti"
},
{
"path": "resources/views/errors/503.blade.php",
"chars": 110,
"preview": "@extends('layouts.error')\n\n@section('title')\n Be right back.\n@endsection\n\n@section('content')\n\n@endsection\n"
},
{
"path": "resources/views/gistlogs/comment_form.blade.php",
"chars": 2019,
"preview": "<form method=\"POST\" class=\"flex flex-col mb-2 -mt-2 flex-end\" action=\"{{ route('comments.store', $gistlog->id) }}\">\n "
},
{
"path": "resources/views/gistlogs/show.blade.php",
"chars": 4569,
"preview": "@extends('layouts.app')\n\n@section('meta')\n <!-- Schema.org markup for Google+ -->\n <meta itemprop=\"name\" content=\""
},
{
"path": "resources/views/landing.blade.php",
"chars": 5975,
"preview": "@extends('layouts.app')\n\n@section('meta')\n<meta name=\"author\" content=\"Matt Stauffer\">\n<meta name=\"description\" content="
},
{
"path": "resources/views/layouts/app.blade.php",
"chars": 3009,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n @if (config('app.env') == 'production')\n <script>\n (functi"
},
{
"path": "resources/views/layouts/error.blade.php",
"chars": 983,
"preview": "<html>\n<head>\n <style>\n body {\n color: #222;\n font-family: -apple-system, BlinkMacSystem"
},
{
"path": "resources/views/layouts/rss.blade.php",
"chars": 378,
"preview": "<?xml version=\"1.0\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\">\n <title>@yield('title')</title>\n <link href=\"@yie"
},
{
"path": "resources/views/login.blade.php",
"chars": 1543,
"preview": "@extends('layouts.app')\n\n@section('content')\n<div class=\"max-w-md px-6 mx-auto mt-20 md:px-0\">\n <p class=\"mt-8 mb-3 t"
},
{
"path": "resources/views/partials/flash-messages.blade.php",
"chars": 1176,
"preview": "@if (Session::has('success-message') || Session::has('error-message') || Session::has('message'))\n @if (Session::has("
},
{
"path": "resources/views/vendor/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "routes/api.php",
"chars": 527,
"preview": "<?php\n\nuse Illuminate\\Http\\Request;\n\n/*\n|--------------------------------------------------------------------------\n| AP"
},
{
"path": "routes/channels.php",
"chars": 508,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Broadcast Channels\n|------------"
},
{
"path": "routes/console.php",
"chars": 592,
"preview": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\nuse Illuminate\\Support\\Facades\\Artisan;\n\n/*\n|-------------------------------"
},
{
"path": "routes/web.php",
"chars": 1700,
"preview": "<?php\n\nuse App\\Http\\Controllers\\Auth\\AuthController;\nuse App\\Http\\Controllers\\AuthorsController;\nuse App\\Http\\Controller"
},
{
"path": "server.php",
"chars": 567,
"preview": "<?php\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package Laravel\n * @author Taylor Otwell <taylorotwell"
},
{
"path": "storage/.gitignore",
"chars": 11,
"preview": "laravel.log"
},
{
"path": "storage/app/.gitignore",
"chars": 23,
"preview": "*\n!.gitignore\n!public/\n"
},
{
"path": "storage/framework/.gitignore",
"chars": 119,
"preview": "config.php\nroutes.php\ncompiled.php\nschedule-*\nservices.json\nevents.scanned.php\nroutes.scanned.php\ndown\nmaintenance.php\n"
},
{
"path": "storage/framework/cache/.gitignore",
"chars": 13,
"preview": "*\n!.gitignore"
},
{
"path": "storage/framework/sessions/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/framework/views/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/logs/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "tailwind.config.js",
"chars": 5414,
"preview": "module.exports = {\n prefix: '',\n important: false,\n separator: ':',\n purge: [\n './resources/**/*.blade.php',\n "
},
{
"path": "tests/BrowserKitTestCase.php",
"chars": 365,
"preview": "<?php\n\nuse Laravel\\BrowserKitTesting\\TestCase as BaseTestCase;\n\nclass BrowserKitTestCase extends BaseTestCase\n{\n prot"
},
{
"path": "tests/CreatesApplication.php",
"chars": 448,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\nuse Illuminate\\Support\\Facades\\Hash;\n\ntrait CreatesApp"
},
{
"path": "tests/Feature/AuthTest.php",
"chars": 374,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass AuthTest "
},
{
"path": "tests/Feature/AuthorClientTest.php",
"chars": 1074,
"preview": "<?php\n\nuse App\\Authors\\AuthorClient;\n\nclass AuthorClientTest extends BrowserKitTestCase\n{\n /**\n * @test\n * @g"
},
{
"path": "tests/Feature/AuthorPageTest.php",
"chars": 3117,
"preview": "<?php\n\nuse App\\Authors\\Author;\nuse App\\Authors\\AuthorRepository;\nuse App\\Gists\\Gistlog;\nuse Carbon\\Carbon;\nuse Faker\\Fac"
},
{
"path": "tests/Feature/CommentTest.php",
"chars": 1111,
"preview": "<?php\n\nuse App\\Gists\\Comment;\n\nclass CommentTest extends BrowserKitTestCase\n{\n use GistFixtureHelpers;\n\n /** @test"
},
{
"path": "tests/Feature/ContentParserTest.php",
"chars": 598,
"preview": "<?php\n\nuse App\\ContentParser\\ContentParser;\n\nclass ContentParserTest extends BrowserKitTestCase\n{\n /** @test */\n p"
},
{
"path": "tests/Feature/FileTest.php",
"chars": 2064,
"preview": "<?php\n\nuse App\\Gists\\File;\n\nclass FileTest extends BrowserKitTestCase\n{\n use GistFixtureHelpers;\n\n /** @test */\n "
},
{
"path": "tests/Feature/GistClientTest.php",
"chars": 660,
"preview": "<?php\n\nuse App\\Gists\\GistClient;\n\nclass GistClientTest extends BrowserKitTestCase\n{\n /**\n * @test\n * @group n"
},
{
"path": "tests/Feature/GistConfigTest.php",
"chars": 1842,
"preview": "<?php\n\nuse App\\Gists\\GistConfig;\n\nclass GistConfigTest extends BrowserKitTestCase\n{\n use GistFixtureHelpers;\n\n /**"
},
{
"path": "tests/Feature/GistlogRepositoryTest.php",
"chars": 1277,
"preview": "<?php\n\nuse App\\Gists\\GistlogRepository;\n\nclass GistlogRepositoryTest extends BrowserKitTestCase\n{\n private const FIXT"
},
{
"path": "tests/Feature/GistlogTest.php",
"chars": 3777,
"preview": "<?php\n\nuse App\\Gists\\Gistlog;\n\nclass GistlogTest extends BrowserKitTestCase\n{\n use GistFixtureHelpers;\n\n /** @test"
},
{
"path": "tests/Feature/GitHubClientTest.php",
"chars": 656,
"preview": "<?php\n\nuse Github\\Client as GitHubClient;\n\nclass GitHubClientTest extends BrowserKitTestCase\n{\n /**\n * @test\n "
},
{
"path": "tests/FixtureGistClient.php",
"chars": 395,
"preview": "<?php\n\nuse App\\Gists\\GistClient;\n\nclass FixtureGistClient extends GistClient\n{\n use GistFixtureHelpers;\n\n public f"
},
{
"path": "tests/GistFixtureHelpers.php",
"chars": 189,
"preview": "<?php\n\ntrait GistFixtureHelpers\n{\n private function loadFixture($path)\n {\n return json_decode(file_get_cont"
},
{
"path": "tests/SpacePadTransformer.php",
"chars": 179,
"preview": "<?php\n\nuse App\\ContentParser\\Transformer;\n\nclass SpacePadTransformer implements Transformer\n{\n public function transf"
},
{
"path": "tests/TestCase.php",
"chars": 193,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\nuse Tests\\CreatesApplication;\n\nabst"
},
{
"path": "tests/TrimTransformer.php",
"chars": 175,
"preview": "<?php\n\nuse App\\ContentParser\\Transformer;\n\nclass TrimTransformer implements Transformer\n{\n public function transform("
},
{
"path": "tests/fixtures/gists/002ed429c7c21ab89300/comments.json",
"chars": 2561,
"preview": "[\n {\n \"url\": \"https://api.github.com/gists/002ed429c7c21ab89300/comments/1384192\",\n \"id\": 1384192,\n \"user\": {\n"
},
{
"path": "tests/fixtures/gists/002ed429c7c21ab89300.json",
"chars": 5024,
"preview": "{\n \"url\": \"https://api.github.com/gists/002ed429c7c21ab89300\",\n \"forks_url\": \"https://api.github.com/gists/002ed429c7c"
},
{
"path": "tests/fixtures/gists/272f372732bf4d69bd0f.json",
"chars": 6770,
"preview": "\n{\n \"url\": \"https://api.github.com/gists/272f372732bf4d69bd0f\",\n \"forks_url\": \"https://api.github.com/gists/272f37"
},
{
"path": "tests/fixtures/gists/2c2769b21e512eabdd72.json",
"chars": 2927,
"preview": "\n{\n \"url\": \"https://api.github.com/gists/2c2769b21e512eabdd72\",\n \"forks_url\": \"https://api.github.com/gists/2c2769"
},
{
"path": "tests/fixtures/gists/8f5ea4d44dbc5ccb77a3.json",
"chars": 4962,
"preview": "{\n \"url\": \"https://api.github.com/gists/8f5ea4d44dbc5ccb77a3\",\n \"forks_url\": \"https://api.github.com/gists/8f5ea4d44db"
},
{
"path": "tests/fixtures/gists/9e5ea4d44dbc5ccb77b4.json",
"chars": 4898,
"preview": "{\n \"url\": \"https://api.github.com/gists/8f5ea4d44dbc5ccb77a3\",\n \"forks_url\": \"https://api.github.com/gists/8f5ea4d44db"
},
{
"path": "tests/fixtures/gists/aac58f02ec1aaaad7f88.json",
"chars": 4020,
"preview": "{\n \"url\": \"https://api.github.com/gists/aac58f02ec1aaaad7f88\",\n \"forks_url\": \"https://api.github.com/gists/aac58f02ec1"
},
{
"path": "tests/fixtures/gists/aac5edd61c183dd26392.json",
"chars": 27107,
"preview": "\n{\n \"url\": \"https://api.github.com/gists/aac5edd61c183dd26392\",\n \"forks_url\": \"https://api.github.com/gists/aac5ed"
},
{
"path": "tests/fixtures/gists/bb5ea4d44dbc5ccb77s7.json",
"chars": 4898,
"preview": "{\n \"url\": \"https://api.github.com/gists/8f5ea4d44dbc5ccb77a3\",\n \"forks_url\": \"https://api.github.com/gists/8f5ea4d44db"
},
{
"path": "travis.php.ini",
"chars": 20,
"preview": "memory_limit = 1024M"
},
{
"path": "webpack.mix.js",
"chars": 825,
"preview": "let mix = require('laravel-mix');\nlet tailwindcss = require('tailwindcss');\nlet postCssImport = require('postcss-import'"
}
]
About this extraction
This page contains the full source code of the tightenco/gistlog GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 172 files (9.2 MB), approximately 2.4M tokens, and a symbol index with 1473 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.