refactor: susun semula struktur folder — Laravel source ke src/

This commit is contained in:
Saufi
2026-05-19 15:58:35 +08:00
parent f052251b94
commit bf53c71b45
10806 changed files with 1385379 additions and 121 deletions

21
vendor/laravel/pint/LICENSE.md vendored Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Taylor Otwell
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

BIN
vendor/laravel/pint/builds/pint vendored Normal file

Binary file not shown.

62
vendor/laravel/pint/composer.json vendored Normal file
View File

@@ -0,0 +1,62 @@
{
"name": "laravel/pint",
"description": "An opinionated code formatter for PHP.",
"keywords": ["php", "format", "formatter", "lint", "linter", "dev"],
"homepage": "https://laravel.com",
"type": "project",
"license": "MIT",
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"require": {
"php": "^8.2.0",
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.95.1",
"illuminate/view": "^12.56.0",
"larastan/larastan": "^3.9.6",
"laravel-zero/framework": "^12.1.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.4.0",
"pestphp/pest": "^3.8.6",
"shipfastlabs/agent-detector": "^1.1.3"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Scripts\\": "scripts/",
"Tests\\": "tests/"
}
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"platform": {
"php": "8.2.0"
},
"allow-plugins": {
"pestphp/pest-plugin": true
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"bin": ["builds/pint"]
}

View File

@@ -0,0 +1,235 @@
<?php
declare(strict_types=1);
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace PhpCsFixer;
use App\Fixers\TypeAnnotationsOnlyFixer;
use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException;
use PhpCsFixer\Fixer\ConfigurableFixerInterface;
use PhpCsFixer\Fixer\FixerInterface;
use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface;
use PhpCsFixer\RuleSet\RuleSetInterface;
use Symfony\Component\Finder\Finder as SymfonyFinder;
use Symfony\Component\Finder\SplFileInfo;
/**
* This overrides the default "FixerFactory" to register
* Pint's custom fixers alongside the built-in ones,
* ensuring they are available in parallel worker processes.
*
* @internal
*/
final class FixerFactory
{
private FixerNameValidator $nameValidator;
/**
* @var list<FixerInterface>
*/
private array $fixers = [];
/**
* @var array<string, FixerInterface>
*/
private array $fixersByName = [];
public function __construct()
{
$this->nameValidator = new FixerNameValidator;
}
public function setWhitespacesConfig(WhitespacesFixerConfig $config): self
{
foreach ($this->fixers as $fixer) {
if ($fixer instanceof WhitespacesAwareFixerInterface) {
$fixer->setWhitespacesConfig($config);
}
}
return $this;
}
/**
* @return list<FixerInterface>
*/
public function getFixers(): array
{
$this->fixers = Utils::sortFixers($this->fixers);
return $this->fixers;
}
/**
* @return $this
*/
public function registerBuiltInFixers(): self
{
static $builtInFixers = null;
if ($builtInFixers === null) {
/** @var list<class-string<FixerInterface>> */
$builtInFixers = [];
$finder = SymfonyFinder::create()->files()
->in(dirname(__DIR__).'/vendor/friendsofphp/php-cs-fixer/src/Fixer')
->exclude(['Internal'])
->name('*Fixer.php')
->depth(1);
/** @var SplFileInfo $file */
foreach ($finder as $file) {
$relativeNamespace = $file->getRelativePath();
$fixerClass = 'PhpCsFixer\Fixer\\'.($relativeNamespace !== '' ? $relativeNamespace.'\\' : '').$file->getBasename('.php');
$builtInFixers[] = $fixerClass;
}
}
foreach ($builtInFixers as $class) {
/** @var FixerInterface */
$fixer = new $class;
$this->registerFixer($fixer, false);
}
$this->registerCustomFixers([
new TypeAnnotationsOnlyFixer,
]);
return $this;
}
/**
* @param iterable<FixerInterface> $fixers
* @return $this
*/
public function registerCustomFixers(iterable $fixers): self
{
foreach ($fixers as $fixer) {
$this->registerFixer($fixer, true);
}
return $this;
}
/**
* @return $this
*/
public function registerFixer(FixerInterface $fixer, bool $isCustom): self
{
$name = $fixer->getName();
if (isset($this->fixersByName[$name])) {
throw new \UnexpectedValueException(\sprintf('Fixer named "%s" is already registered.', $name));
}
if (! $this->nameValidator->isValid($name, $isCustom)) {
throw new \UnexpectedValueException(\sprintf('Fixer named "%s" has invalid name.', $name));
}
$this->fixers[] = $fixer;
$this->fixersByName[$name] = $fixer;
return $this;
}
/**
* @return $this
*/
public function useRuleSet(RuleSetInterface $ruleSet): self
{
$fixers = [];
$fixersByName = [];
$fixerConflicts = [];
$fixerNames = array_keys($ruleSet->getRules());
foreach ($fixerNames as $name) {
if (! \array_key_exists($name, $this->fixersByName)) {
throw new \UnexpectedValueException(\sprintf('Rule "%s" does not exist.', $name));
}
$fixer = $this->fixersByName[$name];
$config = $ruleSet->getRuleConfiguration($name);
if ($config !== null) {
if ($fixer instanceof ConfigurableFixerInterface) {
if (\count($config) < 1) {
throw new InvalidFixerConfigurationException($fixer->getName(), 'Configuration must be an array and may not be empty.');
}
$fixer->configure($config);
} else {
throw new InvalidFixerConfigurationException($fixer->getName(), 'Is not configurable.');
}
}
$fixers[] = $fixer;
$fixersByName[$name] = $fixer;
$conflicts = array_values(array_intersect($this->getFixersConflicts($fixer), $fixerNames));
if (\count($conflicts) > 0) {
$fixerConflicts[$name] = $conflicts;
}
}
if (\count($fixerConflicts) > 0) {
throw new \UnexpectedValueException($this->generateConflictMessage($fixerConflicts));
}
$this->fixers = $fixers;
$this->fixersByName = $fixersByName;
return $this;
}
public function hasRule(string $name): bool
{
return isset($this->fixersByName[$name]);
}
/**
* @return list<string>
*/
private function getFixersConflicts(FixerInterface $fixer): array
{
return [
'blank_lines_before_namespace' => [
'no_blank_lines_before_namespace',
'single_blank_line_before_namespace',
],
'no_blank_lines_before_namespace' => ['single_blank_line_before_namespace'],
'single_import_per_statement' => ['group_import'],
][$fixer->getName()] ?? [];
}
/**
* @param array<string, list<string>> $fixerConflicts
*/
private function generateConflictMessage(array $fixerConflicts): string
{
$message = 'Rule contains conflicting fixers:';
$report = [];
foreach ($fixerConflicts as $fixer => $fixers) {
$report[$fixer] = array_values(array_filter(
$fixers,
static fn (string $candidate): bool => ! \array_key_exists($candidate, $report) || ! \in_array($fixer, $report[$candidate], true),
));
if (\count($report[$fixer]) > 0) {
$message .= \sprintf("\n- \"%s\" with %s", $fixer, Utils::naturalLanguageJoin($report[$fixer]));
}
}
return $message;
}
}

View File

@@ -0,0 +1,122 @@
<?php
declare(strict_types=1);
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace PhpCsFixer\Runner\Parallel;
/**
* Copyright (c) 2012+ Fabien Potencier, Dariusz Rumiński
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
use Illuminate\Support\ProcessUtils;
use PhpCsFixer\Runner\RunnerConfig;
use React\EventLoop\LoopInterface;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Process\PhpExecutableFinder;
/**
* This overrides the default "ProcessFactory" to allow for
* customization of the command-line arguments that better
* suit the needs of the laravel pint package.
*
* @author Greg Korba <greg@codito.dev>
*
* @readonly
*
* @internal
*/
final class ProcessFactory
{
public function create(
LoopInterface $loop,
InputInterface $input,
RunnerConfig $runnerConfig,
ProcessIdentifier $identifier,
int $serverPort
): Process {
$commandArgs = $this->getCommandArgs($serverPort, $identifier, $input, $runnerConfig);
return new Process(
implode(' ', $commandArgs),
$loop,
$runnerConfig->getParallelConfig()->getProcessTimeout()
);
}
/**
* @private
*
* @return list<string>
*/
public function getCommandArgs(int $serverPort, ProcessIdentifier $identifier, InputInterface $input, RunnerConfig $runnerConfig): array
{
$phpBinary = (new PhpExecutableFinder)->find(false);
if ($phpBinary === false) {
throw new ParallelisationException('Cannot find PHP executable.');
}
$mainScript = $_SERVER['argv'][0];
$commandArgs = [
ProcessUtils::escapeArgument($phpBinary),
ProcessUtils::escapeArgument($mainScript),
'worker',
'--port',
(string) $serverPort,
'--identifier',
ProcessUtils::escapeArgument($identifier->toString()),
];
if ($runnerConfig->isDryRun()) {
$commandArgs[] = '--dry-run';
}
if (filter_var($input->getOption('diff'), FILTER_VALIDATE_BOOLEAN)) {
$commandArgs[] = '--diff';
}
if (filter_var($input->getOption('stop-on-violation'), FILTER_VALIDATE_BOOLEAN)) {
$commandArgs[] = '--stop-on-violation';
}
foreach (['allow-risky', 'config', 'rules', 'using-cache', 'cache-file'] as $option) {
$optionValue = $input->getOption($option);
if ($optionValue !== null) {
$commandArgs[] = "--{$option}";
$commandArgs[] = ProcessUtils::escapeArgument($optionValue);
}
}
return $commandArgs;
}
}