fix : _ide_helper.php 헬퍼 추가

- 개발 보조 기능
This commit is contained in:
2025-08-21 09:50:15 +09:00
parent 05745ee338
commit 3707b53ffc
53 changed files with 455 additions and 56 deletions

3
.gitignore vendored
View File

@@ -144,7 +144,8 @@ desktop.ini
*.pid
*.seed
*.seed.php
_ide_helper.php
_ide_helper_models.php
# 모든 위치의 data 폴더 내부 파일 무시
**/data/*

View File

@@ -1,45 +0,0 @@
<?php
namespace App\Http\Responses;
use App\Models\Members\User;
use Illuminate\Support\Facades\Session;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
class CustomLoginResponse implements LoginResponseContract
{
public function toResponse($request)
{
$user = auth('web')->user();
if (!$user) {
abort(500, '로그인 유저 정보를 가져올 수 없습니다.');
}
//TOKEN 설정
$token = $user->remember_token;
if(!$token || substr($user->reg_date,0,10) < date('Y-m-d', strtotime('-15 day'))) {
$token = hash('sha256', $user->mb_id . now()->format('YmdHis'));
User::where('mb_num', $user->mb_num)->update(['remember_token' => $token]);
}
// ✅ 세션에 유저 정보 저장
session(['Adm' => [
'idx' => $user->mb_num,
'id' => $user->mb_id,
'name' => $user->mb_name,
'level' => $user->mb_level,
'tenant' => $user->tn_num,
'type' => $user->mb_type,
'token' => $token,
]]);
Session::put('user_token', $token);
Session::put('user_id', $user->mb_id);
$redirectTo = session('redirect_to', route('dashboard'));
session()->forget('redirect_to');
return redirect()->to($redirectTo);
}
}

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperApiKey
*/
class ApiKey extends Model
{
protected $fillable = ['key', 'description', 'is_active'];

View File

@@ -2,8 +2,12 @@
namespace App\Models\Boards;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperBoard
*/
class Board extends Model
{
protected $table = 'boards';

View File

@@ -4,7 +4,11 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Members\User;
/**
* @mixin IdeHelperBoardComment
*/
class BoardComment extends Model
{
use SoftDeletes;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperBoardSetting
*/
class BoardSetting extends Model
{
protected $table = 'board_settings';

View File

@@ -4,7 +4,11 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Commons\File;
/**
* @mixin IdeHelperPost
*/
class Post extends Model
{
use SoftDeletes;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperPostCustomFieldValue
*/
class PostCustomFieldValue extends Model
{
protected $table = 'post_custom_field_values';

View File

@@ -6,6 +6,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperCategory
*/
class Category extends Model
{
use SoftDeletes, BelongsToTenant;

View File

@@ -2,11 +2,15 @@
namespace App\Models\Commons;
use App\Models\Members\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait;
/**
* @mixin IdeHelperDepartment
*/
class Department extends Model
{
use SoftDeletes, BelongsToTenant, ModelTrait;
@@ -33,7 +37,7 @@ public function departmentUsers()
public function users()
{
// User 네임스페이스가 다르면 여기만 맞춰줘.
return $this->belongsToMany(\App\Models\User::class, 'department_user', 'department_id', 'user_id')
return $this->belongsToMany(User::class, 'department_user', 'department_id', 'user_id')
->withPivot(['tenant_id','is_primary','joined_at','left_at','created_at','updated_at','deleted_at'])
->withTimestamps();
}

View File

@@ -7,6 +7,9 @@
use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait;
/**
* @mixin IdeHelperDepartmentPermission
*/
class DepartmentPermission extends Model
{
use SoftDeletes, BelongsToTenant, ModelTrait;

View File

@@ -6,7 +6,11 @@
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait;
use App\Models\Members\User;
/**
* @mixin IdeHelperDepartmentUser
*/
class DepartmentUser extends Model
{
use SoftDeletes, BelongsToTenant, ModelTrait;
@@ -33,6 +37,6 @@ public function department()
public function user()
{
// User 네임스페이스가 다르면 여기만 맞춰줘.
return $this->belongsTo(\App\Models\User::class, 'user_id');
return $this->belongsTo(User::class, 'user_id');
}
}

View File

@@ -4,7 +4,11 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Members\User;
/**
* @mixin IdeHelperFile
*/
class File extends Model
{
use SoftDeletes;

View File

@@ -8,6 +8,9 @@
use App\Traits\ModelTrait;
use App\Models\Scopes\TenantScope;
/**
* @mixin IdeHelperMenu
*/
class Menu extends Model
{
use SoftDeletes, BelongsToTenant, ModelTrait;

View File

@@ -6,6 +6,9 @@
use App\Models\Tenants\Tenant;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperRole
*/
class Role extends Model
{
protected $fillable = [

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperRoleMenuPermission
*/
class RoleMenuPermission extends Model
{
protected $fillable = [

View File

@@ -11,6 +11,9 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
/**
* @mixin IdeHelperTag
*/
class Tag extends Model
{
protected $fillable = ['tenant_id', 'name'];

View File

@@ -5,6 +5,9 @@
use App\Enums\EstimateStatus;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperMainRequestEstimate
*/
class MainRequestEstimate extends Model
{
protected $table = 'main_request_estimates';

View File

@@ -6,6 +6,9 @@
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperMainRequest
*/
class MainRequest extends Model
{
use SoftDeletes;

View File

@@ -3,9 +3,13 @@
namespace App\Models;
use App\Models\MainRequest;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphTo;
/**
* @mixin IdeHelperMainRequestFlow
*/
class MainRequestFlow extends Model
{
/**

View File

@@ -8,6 +8,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperMaterial
*/
class Material extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperMaterialInspection
*/
class MaterialInspection extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperMaterialInspectionItem
*/
class MaterialInspectionItem extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperMaterialReceipt
*/
class MaterialReceipt extends Model
{
use SoftDeletes;

View File

@@ -15,6 +15,9 @@
use Spatie\Permission\Models\Role as SpatieRole;
use App\Models\Commons\Role as CommonRole;
/**
* @mixin IdeHelperUser
*/
class User extends Authenticatable
{
use HasApiTokens, Notifiable, SoftDeletes, ModelTrait, HasRoles;
@@ -60,12 +63,6 @@ public function userRoles()
return $this->hasMany(UserRole::class);
}
public function orgRoles()
{
return $this->belongsToMany(CommonRole::class, 'user_roles')
->withPivot(['tenant_id', 'assigned_at']);
}
public function userTenantById($tenantId)
{
return $this->hasOne(UserTenant::class)->where('tenant_id', $tenantId);

View File

@@ -5,6 +5,9 @@
use App\Models\Commons\Menu;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperUserMenuPermission
*/
class UserMenuPermission extends Model
{
protected $fillable = [

View File

@@ -8,6 +8,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperUserRole
*/
class UserRole extends Model
{
use SoftDeletes, BelongsToTenant;

View File

@@ -8,6 +8,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperUserTenant
*/
class UserTenant extends Model
{
use SoftDeletes, ModelTrait, BelongsToTenant;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperOrder
*/
class Order extends Model
{
use SoftDeletes;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperOrderHistory
*/
class OrderHistory extends Model
{
// 이력/메모

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperOrderItem
*/
class OrderItem extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperOrderItemComponent
*/
class OrderItemComponent extends Model
{
use SoftDeletes;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperOrderVersion
*/
class OrderVersion extends Model
{
// 주문 버전관리(변경사항만 저장)

View File

@@ -7,6 +7,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperBom
*/
class Bom extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperBomItem
*/
class BomItem extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\BelongsToTenant;
/**
* @mixin IdeHelperCommonCode
*/
class CommonCode extends Model
{
use SoftDeletes, BelongsToTenant;

View File

@@ -6,6 +6,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperPart
*/
class Part extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperPriceHistory
*/
class PriceHistory extends Model
{
use SoftDeletes;

View File

@@ -7,6 +7,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperProduct
*/
class Product extends Model
{
use SoftDeletes;

View File

@@ -6,6 +6,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperLot
*/
class Lot extends Model
{
use SoftDeletes;

View File

@@ -6,6 +6,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperLotSale
*/
class LotSale extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use App\Traits\UppercaseAttributes;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperSiteAdmin
*/
class SiteAdmin extends Model
{
use UppercaseAttributes; // 테이블 컬럼명 대문자 처리

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperPayment
*/
class Payment extends Model
{
use SoftDeletes;

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperPlan
*/
class Plan extends Model
{
use SoftDeletes;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperSettingFieldDef
*/
class SettingFieldDef extends Model
{
protected $casts = [

View File

@@ -5,6 +5,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperSubscription
*/
class Subscription extends Model
{
use SoftDeletes;

View File

@@ -3,7 +3,7 @@
namespace App\Models\Tenants;
use App\Models\Commons\Role;
use App\Models\File;
use App\Models\Commons\File;
use App\Models\Members\User;
use App\Models\Members\UserRole;
use App\Models\Members\UserTenant;
@@ -11,6 +11,9 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @mixin IdeHelperTenant
*/
class Tenant extends Model
{
use SoftDeletes, ModelTrait;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperTenantFieldSetting
*/
class TenantFieldSetting extends Model
{
public $timestamps = false;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperTenantOptionGroup
*/
class TenantOptionGroup extends Model
{
public $timestamps = false;

View File

@@ -4,6 +4,9 @@
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperTenantOptionValue
*/
class TenantOptionValue extends Model
{
public $timestamps = false;

View File

@@ -6,6 +6,9 @@
use App\Models\Commons\Department;
use Illuminate\Database\Eloquent\Model;
/**
* @mixin IdeHelperTenantUserProfile
*/
class TenantUserProfile extends Model
{
protected $casts = [

View File

@@ -16,6 +16,7 @@
"spatie/laravel-permission": "^6.21"
},
"require-dev": {
"barryvdh/laravel-ide-helper": "^3.6",
"fakerphp/faker": "^1.23",
"kitloong/laravel-migrations-generator": "^7.1",
"laravel-lang/lang": "^15.22",

296
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6903d799627f2dbf894a5ddffaa946c2",
"content-hash": "649cb6cda3061281868e31ae3140bd69",
"packages": [
{
"name": "brick/math",
@@ -6634,6 +6634,300 @@
},
"time": "2025-06-06T23:15:09+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
"reference": "8d00250cba25728373e92c1d8dcebcbf64623d29"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8d00250cba25728373e92c1d8dcebcbf64623d29",
"reference": "8d00250cba25728373e92c1d8dcebcbf64623d29",
"shasum": ""
},
"require": {
"barryvdh/reflection-docblock": "^2.4",
"composer/class-map-generator": "^1.0",
"ext-json": "*",
"illuminate/console": "^11.15 || ^12",
"illuminate/database": "^11.15 || ^12",
"illuminate/filesystem": "^11.15 || ^12",
"illuminate/support": "^11.15 || ^12",
"php": "^8.2"
},
"require-dev": {
"ext-pdo_sqlite": "*",
"friendsofphp/php-cs-fixer": "^3",
"illuminate/config": "^11.15 || ^12",
"illuminate/view": "^11.15 || ^12",
"mockery/mockery": "^1.4",
"orchestra/testbench": "^9.2 || ^10",
"phpunit/phpunit": "^10.5 || ^11.5.3",
"spatie/phpunit-snapshot-assertions": "^4 || ^5",
"vimeo/psalm": "^5.4",
"vlucas/phpdotenv": "^5"
},
"suggest": {
"illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)."
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider"
]
},
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Barryvdh\\LaravelIdeHelper\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.",
"keywords": [
"autocomplete",
"codeintel",
"dev",
"helper",
"ide",
"laravel",
"netbeans",
"phpdoc",
"phpstorm",
"sublime"
],
"support": {
"issues": "https://github.com/barryvdh/laravel-ide-helper/issues",
"source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.6.0"
},
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2025-07-17T20:11:57+00:00"
},
{
"name": "barryvdh/reflection-docblock",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/ReflectionDocBlock.git",
"reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/d103774cbe7e94ddee7e4870f97f727b43fe7201",
"reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"require-dev": {
"phpunit/phpunit": "^8.5.14|^9"
},
"suggest": {
"dflydev/markdown": "~1.0",
"erusev/parsedown": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.3.x-dev"
}
},
"autoload": {
"psr-0": {
"Barryvdh": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "mike.vanriel@naenius.com"
}
],
"support": {
"source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.0"
},
"time": "2025-07-17T06:07:30+00:00"
},
{
"name": "composer/class-map-generator",
"version": "1.6.2",
"source": {
"type": "git",
"url": "https://github.com/composer/class-map-generator.git",
"reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/ba9f089655d4cdd64e762a6044f411ccdaec0076",
"reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076",
"shasum": ""
},
"require": {
"composer/pcre": "^2.1 || ^3.1",
"php": "^7.2 || ^8.0",
"symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
},
"require-dev": {
"phpstan/phpstan": "^1.12 || ^2",
"phpstan/phpstan-deprecation-rules": "^1 || ^2",
"phpstan/phpstan-phpunit": "^1 || ^2",
"phpstan/phpstan-strict-rules": "^1.1 || ^2",
"phpunit/phpunit": "^8",
"symfony/filesystem": "^5.4 || ^6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\ClassMapGenerator\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "https://seld.be"
}
],
"description": "Utilities to scan PHP code and generate class maps.",
"keywords": [
"classmap"
],
"support": {
"issues": "https://github.com/composer/class-map-generator/issues",
"source": "https://github.com/composer/class-map-generator/tree/1.6.2"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
}
],
"time": "2025-08-20T18:52:43+00:00"
},
{
"name": "composer/pcre",
"version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<1.11.10"
},
"require-dev": {
"phpstan/phpstan": "^1.12 || ^2",
"phpstan/phpstan-strict-rules": "^1 || ^2",
"phpunit/phpunit": "^8 || ^9"
},
"type": "library",
"extra": {
"phpstan": {
"includes": [
"extension.neon"
]
},
"branch-alias": {
"dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\Pcre\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
"keywords": [
"PCRE",
"preg",
"regex",
"regular expression"
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.3.2"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2024-11-12T16:29:46+00:00"
},
{
"name": "composer/semver",
"version": "3.4.3",