update
parent
37930bdfc4
commit
0286fd466f
|
@ -5,8 +5,12 @@ namespace App\Http\Controllers\Opendata;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||||
use App\Models\Master\Instansi;
|
use App\Models\Master\Instansi;
|
||||||
use App\Models\Master\Topik;
|
use App\Models\Master\Topik;
|
||||||
|
use App\Models\Master\Template;
|
||||||
use App\Models\Dataset;
|
use App\Models\Dataset;
|
||||||
|
|
||||||
class DatasetController extends Controller
|
class DatasetController extends Controller
|
||||||
|
@ -47,7 +51,8 @@ class DatasetController extends Controller
|
||||||
|
|
||||||
if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){
|
if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){
|
||||||
$action .= '<div class="flex gap-3 justify-center items-center flex-row">';
|
$action .= '<div class="flex gap-3 justify-center items-center flex-row">';
|
||||||
$action .= '<a href="'.url('master/dataset/update/'.encode_id($row->DatasetId)).'" data-toggle="tooltip" title="Edit Data" class="btn btn-sm btn-block bg-primary"><i class="ri-pencil-line text-white"></i></a>';
|
$action .= '<a href="'.url('opendata/dataset/update/'.encode_id($row->DatasetId)).'" data-toggle="tooltip" title="Ubah Data" class="btn btn-sm btn-block bg-primary"><i class="ri-pencil-line text-white"></i></a>';
|
||||||
|
$action .= '<a href="'.url('opendata/dataset/view/'.encode_id($row->DatasetId)).'" data-toggle="tooltip" title="Lihat Data" class="btn btn-sm btn-block bg-info"><i class="ri-eye-line text-white"></i></a>';
|
||||||
if(session('group_id') == 1){
|
if(session('group_id') == 1){
|
||||||
// $action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin btn btn-sm btn-block bg-success"><i class="ri-user-2-line text-white"></i></a>';
|
// $action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin btn btn-sm btn-block bg-success"><i class="ri-user-2-line text-white"></i></a>';
|
||||||
// $action .= '<a href="#" data-href="'.url('management/user/delete/'.encode_id($row->id)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
|
// $action .= '<a href="#" data-href="'.url('management/user/delete/'.encode_id($row->id)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
|
||||||
|
@ -88,24 +93,82 @@ class DatasetController extends Controller
|
||||||
Validator::make($request->all(), [
|
Validator::make($request->all(), [
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
'instansi_id' => 'required',
|
'instansi_id' => 'required',
|
||||||
'template' => 'required',
|
'template_id' => 'required',
|
||||||
|
'template_default' => 'required',
|
||||||
'publik' => 'required',
|
'publik' => 'required',
|
||||||
'tags' => 'required',
|
'tags' => 'required',
|
||||||
'file' => 'required',
|
'file' => 'required|file|mimes:xlsx,xls',
|
||||||
'topik' => 'required',
|
'topik' => 'required',
|
||||||
])->validate();
|
])->validate();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$keyId = decode_id($request->secure_id);
|
$keyId = decode_id($request->secure_id);
|
||||||
|
|
||||||
|
$file = $request->file('file');
|
||||||
|
$path = $file->getRealPath();
|
||||||
|
$spreadsheet = IOFactory::load($path);
|
||||||
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
$rows = $sheet->toArray();
|
||||||
|
$header = $rows[0]; // Baris pertama sebagai header
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
if (@$request->hasFile('file')) {
|
||||||
|
$file = $request->file('file');
|
||||||
|
$destinationPath = public_path('uploads/dataset');
|
||||||
|
$current = Carbon::now()->format('Y/m/d');
|
||||||
|
$path = $destinationPath . '/' . $current;
|
||||||
|
$fileName = $file->getClientOriginalName();
|
||||||
|
$fileMime = $file->getClientMimeType();
|
||||||
|
$fileExtension = $file->getClientOriginalExtension();
|
||||||
|
$fileSize = $file->getSize();
|
||||||
|
if(($fileExtension != 'xls') && ($fileExtension != 'xlsx')){
|
||||||
|
return redirect()->back()->with([
|
||||||
|
'message' => 'Maaf File Harus Berupa xls,xlsx!',
|
||||||
|
'type' => "error"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$newFilename = session('id').'_'.uniqid('file_') . '.' . $fileExtension;
|
||||||
|
|
||||||
|
if (!File::exists($path)) {
|
||||||
|
File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$filePath = 'dataset/' . $current . '/' . $newFilename;
|
||||||
|
$uploaded = $file->move($path, $newFilename);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for ($i = 1; $i < count($rows); $i++) {
|
||||||
|
$row = $rows[$i];
|
||||||
|
|
||||||
|
// Skip baris kosong
|
||||||
|
if (collect($row)->filter()->isEmpty()) continue;
|
||||||
|
|
||||||
|
$assoc = [];
|
||||||
|
foreach ($header as $j => $columnName) {
|
||||||
|
if($columnName != null){
|
||||||
|
$assoc[strtolower(str_replace(' ','_',$columnName))] = $row[$j] ?? null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data[] = $assoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(@$keyId){
|
if(@$keyId){
|
||||||
$insert = Dataset::find($keyId);
|
$insert = Dataset::find($keyId);
|
||||||
$insert->instansi_id = decode_id($request->instansi_id);
|
$insert->instansi_id = decode_id($request->instansi_id);
|
||||||
$insert->template = $request->template;
|
$insert->template_id = decode_id($request->template_id);
|
||||||
|
$insert->template_default = $request->template_default;
|
||||||
$insert->name = $request->name;
|
$insert->name = $request->name;
|
||||||
$insert->publik = $request->publik;
|
$insert->publik = $request->publik;
|
||||||
$insert->tags = json_encode($request->tags);
|
$insert->tags = json_encode($request->tags);
|
||||||
$insert->data = json_encode($request->data);
|
$insert->data = json_encode($data);
|
||||||
$insert->file = $request->file;
|
$insert->file = $filePath;
|
||||||
$insert->topik = json_encode($request->topik);
|
$insert->topik = json_encode($request->topik);
|
||||||
$insert->deskripsi = $request->deskripsi;
|
$insert->deskripsi = $request->deskripsi;
|
||||||
$insert->created_by = auth()->user()->id;
|
$insert->created_by = auth()->user()->id;
|
||||||
|
@ -113,12 +176,13 @@ class DatasetController extends Controller
|
||||||
}else{
|
}else{
|
||||||
$insert = new Dataset;
|
$insert = new Dataset;
|
||||||
$insert->instansi_id = decode_id($request->instansi_id);
|
$insert->instansi_id = decode_id($request->instansi_id);
|
||||||
$insert->template = $request->template;
|
$insert->template_id = decode_id($request->template_id);
|
||||||
|
$insert->template_default = $request->template_default;
|
||||||
$insert->name = $request->name;
|
$insert->name = $request->name;
|
||||||
$insert->publik = $request->publik;
|
$insert->publik = $request->publik;
|
||||||
$insert->tags = json_encode($request->tags);
|
$insert->tags = json_encode($request->tags);
|
||||||
$insert->data = json_encode($request->data);
|
$insert->data = json_encode($data);
|
||||||
$insert->file = $request->file;
|
$insert->file = $filePath;
|
||||||
$insert->topik = json_encode($request->topik);
|
$insert->topik = json_encode($request->topik);
|
||||||
$insert->deskripsi = $request->deskripsi;
|
$insert->deskripsi = $request->deskripsi;
|
||||||
$insert->created_by = auth()->user()->id;
|
$insert->created_by = auth()->user()->id;
|
||||||
|
@ -170,9 +234,29 @@ class DatasetController extends Controller
|
||||||
$data['item'] = null;
|
$data['item'] = null;
|
||||||
$data['instansi'] = Instansi::all();
|
$data['instansi'] = Instansi::all();
|
||||||
$data['topik'] = Topik::all();
|
$data['topik'] = Topik::all();
|
||||||
|
$data['template'] = Template::all();
|
||||||
return view($this->template.'.form',$data);
|
return view($this->template.'.form',$data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function view($id = null)
|
||||||
|
{
|
||||||
|
$data['breadcrumbs'] = [
|
||||||
|
['name' => 'Dashboard','url' => url('dashboard')],
|
||||||
|
['name' => 'Open Data'],
|
||||||
|
['name' => 'Dataset','active' => true],
|
||||||
|
];
|
||||||
|
$keyId = decode_id($id);
|
||||||
|
$data['title'] = $this->title;
|
||||||
|
$data['route'] = $this->route;
|
||||||
|
$data['keyId'] = $id;
|
||||||
|
$data['item'] = Dataset::find($keyId);
|
||||||
|
$data['instansi'] = Instansi::all();
|
||||||
|
$data['topik'] = Topik::all();
|
||||||
|
$data['template'] = Template::all();
|
||||||
|
|
||||||
|
return view($this->template.'.view',$data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -16,4 +16,8 @@ class Dataset extends Model
|
||||||
function instansi() {
|
function instansi() {
|
||||||
return $this->belongsTo('App\Models\Master\Instansi','instansi_id');
|
return $this->belongsTo('App\Models\Master\Instansi','instansi_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function template() {
|
||||||
|
return $this->belongsTo('App\Models\Master\Template','template_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Master;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Template extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'ms_template';
|
||||||
|
protected $primaryKey = 'MsTemplateId';
|
||||||
|
protected $guarded = [];
|
||||||
|
}
|
|
@ -10,7 +10,8 @@
|
||||||
"laravel/framework": "^10.10",
|
"laravel/framework": "^10.10",
|
||||||
"laravel/sanctum": "^3.3",
|
"laravel/sanctum": "^3.3",
|
||||||
"laravel/tinker": "^2.8",
|
"laravel/tinker": "^2.8",
|
||||||
"laravel/ui": "^4.6"
|
"laravel/ui": "^4.6",
|
||||||
|
"phpoffice/phpspreadsheet": "^4.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "dcbbd52cf3c38d0f1b88e12d39e47db7",
|
"content-hash": "b06bf5429be7a8251160f533326a6e6b",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
|
@ -135,6 +135,85 @@
|
||||||
],
|
],
|
||||||
"time": "2023-12-11T17:09:12+00:00"
|
"time": "2023-12-11T17:09:12+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": "dflydev/dot-access-data",
|
"name": "dflydev/dot-access-data",
|
||||||
"version": "v3.0.3",
|
"version": "v3.0.3",
|
||||||
|
@ -1952,6 +2031,191 @@
|
||||||
],
|
],
|
||||||
"time": "2024-09-21T08:32:55+00:00"
|
"time": "2024-09-21T08:32:55+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "maennchen/zipstream-php",
|
||||||
|
"version": "3.1.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/maennchen/ZipStream-PHP.git",
|
||||||
|
"reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f",
|
||||||
|
"reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"php-64bit": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"brianium/paratest": "^7.7",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.16",
|
||||||
|
"guzzlehttp/guzzle": "^7.5",
|
||||||
|
"mikey179/vfsstream": "^1.6",
|
||||||
|
"php-coveralls/php-coveralls": "^2.5",
|
||||||
|
"phpunit/phpunit": "^11.0",
|
||||||
|
"vimeo/psalm": "^6.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"guzzlehttp/psr7": "^2.4",
|
||||||
|
"psr/http-message": "^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"ZipStream\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Paul Duncan",
|
||||||
|
"email": "pabs@pablotron.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jonatan Männchen",
|
||||||
|
"email": "jonatan@maennchen.ch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jesse Donat",
|
||||||
|
"email": "donatj@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "András Kolesár",
|
||||||
|
"email": "kolesar@kolesar.hu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
|
||||||
|
"keywords": [
|
||||||
|
"stream",
|
||||||
|
"zip"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
|
||||||
|
"source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/maennchen",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-01-27T12:07:53+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markbaker/complex",
|
||||||
|
"version": "3.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MarkBaker/PHPComplex.git",
|
||||||
|
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
|
||||||
|
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Complex\\": "classes/src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"email": "mark@lange.demon.co.uk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Class for working with complex numbers",
|
||||||
|
"homepage": "https://github.com/MarkBaker/PHPComplex",
|
||||||
|
"keywords": [
|
||||||
|
"complex",
|
||||||
|
"mathematics"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
|
||||||
|
"source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
|
||||||
|
},
|
||||||
|
"time": "2022-12-06T16:21:08+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markbaker/matrix",
|
||||||
|
"version": "3.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MarkBaker/PHPMatrix.git",
|
||||||
|
"reference": "728434227fe21be27ff6d86621a1b13107a2562c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
|
||||||
|
"reference": "728434227fe21be27ff6d86621a1b13107a2562c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpdocumentor/phpdocumentor": "2.*",
|
||||||
|
"phploc/phploc": "^4.0",
|
||||||
|
"phpmd/phpmd": "2.*",
|
||||||
|
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
|
||||||
|
"sebastian/phpcpd": "^4.0",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Matrix\\": "classes/src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"email": "mark@demon-angel.eu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Class for working with matrices",
|
||||||
|
"homepage": "https://github.com/MarkBaker/PHPMatrix",
|
||||||
|
"keywords": [
|
||||||
|
"mathematics",
|
||||||
|
"matrix",
|
||||||
|
"vector"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
|
||||||
|
"source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
|
||||||
|
},
|
||||||
|
"time": "2022-12-02T22:17:43+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "monolog/monolog",
|
"name": "monolog/monolog",
|
||||||
"version": "3.9.0",
|
"version": "3.9.0",
|
||||||
|
@ -2453,6 +2717,112 @@
|
||||||
],
|
],
|
||||||
"time": "2024-11-21T10:36:35+00:00"
|
"time": "2024-11-21T10:36:35+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "phpoffice/phpspreadsheet",
|
||||||
|
"version": "4.3.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
|
||||||
|
"reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/d0ac70d610fb62ccad38c2696569ae1ad42acc70",
|
||||||
|
"reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"composer/pcre": "^1||^2||^3",
|
||||||
|
"ext-ctype": "*",
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-fileinfo": "*",
|
||||||
|
"ext-gd": "*",
|
||||||
|
"ext-iconv": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"ext-xml": "*",
|
||||||
|
"ext-xmlreader": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"maennchen/zipstream-php": "^2.1 || ^3.0",
|
||||||
|
"markbaker/complex": "^3.0",
|
||||||
|
"markbaker/matrix": "^3.0",
|
||||||
|
"php": "^8.1",
|
||||||
|
"psr/http-client": "^1.0",
|
||||||
|
"psr/http-factory": "^1.0",
|
||||||
|
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-main",
|
||||||
|
"dompdf/dompdf": "^2.0 || ^3.0",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.2",
|
||||||
|
"mitoteam/jpgraph": "^10.3",
|
||||||
|
"mpdf/mpdf": "^8.1.1",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpstan/phpstan": "^1.1 || ^2.0",
|
||||||
|
"phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0",
|
||||||
|
"phpstan/phpstan-phpunit": "^1.0 || ^2.0",
|
||||||
|
"phpunit/phpunit": "^10.5",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7",
|
||||||
|
"tecnickcom/tcpdf": "^6.5"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
|
||||||
|
"ext-intl": "PHP Internationalization Functions",
|
||||||
|
"mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
|
||||||
|
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
|
||||||
|
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Maarten Balliauw",
|
||||||
|
"homepage": "https://blog.maartenballiauw.be"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"homepage": "https://markbakeruk.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Franck Lefevre",
|
||||||
|
"homepage": "https://rootslabs.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Erik Tilt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Adrien Crivelli"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
|
||||||
|
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
|
||||||
|
"keywords": [
|
||||||
|
"OpenXML",
|
||||||
|
"excel",
|
||||||
|
"gnumeric",
|
||||||
|
"ods",
|
||||||
|
"php",
|
||||||
|
"spreadsheet",
|
||||||
|
"xls",
|
||||||
|
"xlsx"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
|
||||||
|
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/4.3.1"
|
||||||
|
},
|
||||||
|
"time": "2025-05-26T18:51:08+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "phpoption/phpoption",
|
"name": "phpoption/phpoption",
|
||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
|
|
|
@ -14,7 +14,8 @@ return new class extends Migration
|
||||||
Schema::create('dataset', function (Blueprint $table) {
|
Schema::create('dataset', function (Blueprint $table) {
|
||||||
$table->id('DatasetId');
|
$table->id('DatasetId');
|
||||||
$table->integer('instansi_id');
|
$table->integer('instansi_id');
|
||||||
$table->integer('template');
|
$table->integer('template_id');
|
||||||
|
$table->integer('template_default');
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->integer('publik');
|
$table->integer('publik');
|
||||||
$table->json('tags')->nullable();
|
$table->json('tags')->nullable();
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('ms_template', function (Blueprint $table) {
|
||||||
|
$table->id('MsTemplateId');
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('template_url');
|
||||||
|
$table->timestampsTz();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('templates');
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('dataset', function (Blueprint $table) {
|
||||||
|
$table->foreign('template_id')->references('MsTemplateId')->on('ms_template')->cascadeOnDelete();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('dataset', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,95 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Master\Template;
|
||||||
|
|
||||||
|
class TemplateSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
['name' => 'Luas Kawasan Lindung Berdasarkan RTRW dan Tutupan Lahannya','template_url' => 'template/table1.xlsx'],
|
||||||
|
['name' => 'Luas Wilayah Menurut Penggunaan Lahan Utama','template_url' => 'template/table2.xlsx'],
|
||||||
|
['name' => 'Luas Hutan Berdasarkan Fungsi dan Status','template_url' => 'template/table3.xlsx'],
|
||||||
|
['name' => 'Keadaan Flora dan Fauna','template_url' => 'template/table4.xlsx'],
|
||||||
|
['name' => 'Penangkaran Satwa dan Tumbuhan Liar','template_url' => 'template/table5.xlsx'],
|
||||||
|
['name' => 'Luas Lahan Kritis di Dalam dan Luar Kawasan Hutan','template_url' => 'template/table6.xlsx'],
|
||||||
|
['name' => 'Evaluasi Kerusakan Tanah di Lahan Kering Akibat Erosi Air','template_url' => 'template/table7.xlsx'],
|
||||||
|
['name' => 'Evaluasi Kerusakan Tanah di Lahan Kering','template_url' => 'template/table8.xlsx'],
|
||||||
|
['name' => 'Evaluasi Keusakan Tanah di Lahan Basah','template_url' => 'template/table9.xlsx'],
|
||||||
|
['name' => 'Luas dan Kerapatan Tutupan Mangrove','template_url' => 'template/table10.xlsx'],
|
||||||
|
['name' => 'Luas dan Kerusakan Padang Lamun','template_url' => 'template/table11.xlsx'],
|
||||||
|
['name' => 'Luas Tutupan dan Kondisi Terumbu Karang','template_url' => 'template/table12.xlsx'],
|
||||||
|
['name' => 'Luas Perubahan Penggunaan Lahan Pertanian','template_url' => 'template/table13.xlsx'],
|
||||||
|
['name' => 'Jenis Pemanfaatan Lahan','template_url' => 'template/table14.xlsx'],
|
||||||
|
['name' => 'Luas Areal dan Produksi Pertambangan Menurut Jenis Bahan Galian','template_url' => 'template/table15.xlsx'],
|
||||||
|
['name' => 'Realisasi Kegiatan Penghijauan dan Reboisasi','template_url' => 'template/table16.xlsx'],
|
||||||
|
['name' => 'Luas dan Kerusakan Lahan Gambut','template_url' => 'template/table17.xlsx'],
|
||||||
|
['name' => 'Jumlah dan Produksi Pemanfaatan Hasil Hutan Kayu','template_url' => 'template/table18.xlsx'],
|
||||||
|
['name' => 'Jumlah dan Luas Ijin Usaha Pemanfaatan Hasil Hutan Bukan Kayu','template_url' => 'template/table19.xlsx'],
|
||||||
|
['name' => 'Perdagangan Satwa dan Tumbuhan','template_url' => 'template/table20.xlsx'],
|
||||||
|
['name' => 'Jumlah dan Ijin usaha Pemanfaatan Jasa Lingkungan dan Wisata Alam','template_url' => 'template/table21.xlsx'],
|
||||||
|
['name' => 'Kualitas Air Sumur','template_url' => 'template/table22.xlsx'],
|
||||||
|
['name' => 'Kualitas Air Laut','template_url' => 'template/table23.xlsx'],
|
||||||
|
['name' => 'Curah Hujan Rata-Rata Bulanan','template_url' => 'template/table24.xlsx'],
|
||||||
|
['name' => 'Jumlah Rumah Tangga dan Sumber Air Minum','template_url' => 'template/table25.xlsx'],
|
||||||
|
['name' => 'Kualitas Air Hujan','template_url' => 'template/table26.xlsx'],
|
||||||
|
['name' => 'Kondisi Sungai','template_url' => 'template/table27.xlsx'],
|
||||||
|
['name' => 'Kondisi Danau/Waduk/Situ/Embung','template_url' => 'template/table28.xlsx'],
|
||||||
|
['name' => 'Kualitas Air Sungai','template_url' => 'template/table29.xlsx'],
|
||||||
|
['name' => 'Kualitas Air Danau/Waduk/Situ/Embung','template_url' => 'template/table30.xlsx'],
|
||||||
|
['name' => 'Jumlah Rumah Tangga dan Fasilitas Tempat Buang Air Besar','template_url' => 'template/table31.xlsx'],
|
||||||
|
['name' => 'Jumlah Penduduk Laki-Laki dan Perempuan Menurut Tingkatan Pendidikan','template_url' => 'template/table32.xlsx'],
|
||||||
|
['name' => 'Jenis Penyakit Utama yang Diderita Penduduk','template_url' => 'template/table33.xlsx'],
|
||||||
|
['name' => 'Jumlah Rumah Tangga Miskin','template_url' => 'template/table34.xlsx'],
|
||||||
|
['name' => 'Jumlah Limbah Padat dan Cair Berdasarkan Sumber Pencemaran','template_url' => 'template/table35.xlsx'],
|
||||||
|
['name' => 'Suhu Udara Rata-rata Bulanan','template_url' => 'template/table36.xlsx'],
|
||||||
|
['name' => 'Kualitas Udara Ambien','template_url' => 'template/table37.xlsx'],
|
||||||
|
['name' => 'Penggunaan Bahan Bakar Industri dan Rumah Tangga','template_url' => 'template/table38.xlsx'],
|
||||||
|
['name' => 'Jumlah Kendaraan Bermotor dan Jenis Bahan Bakar yang digunakan','template_url' => 'template/table39.xlsx'],
|
||||||
|
['name' => 'Perubahan Penambahan Ruas Jalan','template_url' => 'template/table40.xlsx'],
|
||||||
|
['name' => 'Dokumen Izin Lingkungan','template_url' => 'template/table41.xlsx'],
|
||||||
|
['name' => 'Perusahaan yang Mendapat Izin Mengelola Limbah B3','template_url' => 'template/table42.xlsx'],
|
||||||
|
['name' => 'Pengawasan Izin Lingkungan (AMDAL, UKL/UPL, Surat Pernyataan Pengelolaan Lingkungan (SPPL))','template_url' => 'template/table43.xlsx'],
|
||||||
|
['name' => 'Pengawasan Izin Lingkungan (AMDAL, UKL/UPL, Surat Pernyataan Pengelolaan Lingkungan (SPPL)) Pasif Operasi','template_url' => 'template/table43a.xlsx'],
|
||||||
|
['name' => 'Pengawasan Izin Lingkungan (AMDAL, UKL/UPL, Surat Pernyataan Pengelolaan Lingkungan (SPPL)) Pasif Konstruksi','template_url' => 'template/table43b.xlsx'],
|
||||||
|
['name' => 'Kebencanaan','template_url' => 'template/table44.xlsx'],
|
||||||
|
['name' => 'Kebencanaan dengan perkiraan kerugian','template_url' => 'template/table44a.xlsx'],
|
||||||
|
['name' => 'Data Bencana Tanah Longsor','template_url' => 'template/table44b.xlsx'],
|
||||||
|
['name' => 'Luas Wilayah, Jumlah Penduduk, Pertumbuhan Penduduk dan Kepadatan Penduduk (Kabupaten/Kota/Kecamatan)','template_url' => 'template/table45.xlsx'],
|
||||||
|
['name' => 'Jenis Tempat Pembuangan Akhir (TPA) Sampah','template_url' => 'template/table46.xlsx'],
|
||||||
|
['name' => 'Perkiraan Jumlah Timbulan Sampah per Hari','template_url' => 'template/table47.xlsx'],
|
||||||
|
['name' => 'Jumlah Bank Sampah','template_url' => 'template/table48.xlsx'],
|
||||||
|
['name' => 'Kegiatan Fisik Lainnya oleh Instansi','template_url' => 'template/table49.xlsx'],
|
||||||
|
['name' => 'Status Pengaduan Masyarakat','template_url' => 'template/table50.xlsx'],
|
||||||
|
['name' => 'Jumlah Lembaga Swadaya Masyarakat (LSM) Lingkungan Hidup','template_url' => 'template/table51.xlsx'],
|
||||||
|
['name' => 'Jumlah Personil Lembaga Pengelola Lingkungan Hidup menurut Tingkat Pendidikan','template_url' => 'template/table52.xlsx'],
|
||||||
|
['name' => 'Jumlah Staf Fungsional Bidang Lingkungan dan Staf yang telah mengikuti Diklat','template_url' => 'template/table53.xlsx'],
|
||||||
|
['name' => 'Penerima Penghargaan Lingkungan Hidup','template_url' => 'template/table54.xlsx'],
|
||||||
|
['name' => 'Kegiatan/Program yang Diinisiasi Masyarakat','template_url' => 'template/table55.xlsx'],
|
||||||
|
['name' => 'Produk Domestik Bruto Atas Dasar Harga Berlaku (Miliar Rp)','template_url' => 'template/table56.xlsx'],
|
||||||
|
['name' => 'Produk Domestik Bruto Atas Dasar Harga Konstan (Miliar Rp)','template_url' => 'template/table57.xlsx'],
|
||||||
|
['name' => 'Produk Hukum Bidang Pengelolaan Lingkungan Hidup dan Kehutanan','template_url' => 'template/table58.xlsx'],
|
||||||
|
['name' => 'Anggaran Pengelolaan Lingkungan Hidup','template_url' => 'template/table59.xlsx'],
|
||||||
|
['name' => 'Pendapatan Asli Daerah','template_url' => 'template/table60.xlsx'],
|
||||||
|
['name' => 'Inovasi Pengelolaan Lingkungan Hidup Daerah','template_url' => 'template/table61.xlsx'],
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach($data as $valData){
|
||||||
|
Template::updateOrCreate([
|
||||||
|
'name' => $valData['name'],
|
||||||
|
'template_url' => $valData['template_url'],
|
||||||
|
],[
|
||||||
|
'name' => $valData['name'],
|
||||||
|
'template_url' => $valData['template_url'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,7 @@
|
||||||
<h5 class="font-bold text-md">Informasi Instansi Dataset</h5>
|
<h5 class="font-bold text-md">Informasi Instansi Dataset</h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body p-5">
|
<div class="card-body p-5">
|
||||||
<div class="grid lg:grid-cols-2 gap-3">
|
<div class="grid lg:grid-cols-1 gap-3">
|
||||||
<div class="">
|
<div class="">
|
||||||
<label class="mb-3 required">Instansi</label>
|
<label class="mb-3 required">Instansi</label>
|
||||||
<select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="">
|
<select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="">
|
||||||
|
@ -29,14 +29,26 @@
|
||||||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<label class="mb-3 required">Resource Data</label>
|
||||||
|
<select name="template_id" required class="form-input template_id select2 @error('template_id') is-invalid @enderror" id="">
|
||||||
|
<option value="">-</option>
|
||||||
|
@foreach($template as $dataTemplate)
|
||||||
|
<option value="{{encode_id($dataTemplate->MsTemplateId)}}">{{$dataTemplate->name}}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@error('template_id')
|
||||||
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="mb-3 required">Menggunakan Apakah Template Yang Disediakan ?</label>
|
<label class="mb-3 required">Apakah Menggunakan Template Yang Disediakan ?</label>
|
||||||
<select name="template" class="form-input @error('template') is-invalid @enderror" id="template" required>
|
<select name="template_default" class="form-input @error('template_default') is-invalid @enderror" id="template_default" required>
|
||||||
<option value="">-</option>
|
<option value="">-</option>
|
||||||
<option value="1">Ya</option>
|
<option value="1">Ya</option>
|
||||||
<option value="0">Tidak</option>
|
<option value="0">Tidak</option>
|
||||||
</select>
|
</select>
|
||||||
@error('template')
|
@error('template_default')
|
||||||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
@ -148,12 +160,12 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$('#template').on('change',function(){
|
$('#template_default').on('change',function(){
|
||||||
var instansi_id = $('.instansi_id').find(':selected').val();
|
var instansi_id = $('.instansi_id').find(':selected').val();
|
||||||
var val = $(this).find(':selected').val();
|
var val = $(this).find(':selected').val();
|
||||||
if(instansi_id == ''){
|
if(instansi_id == ''){
|
||||||
toastr.error("Data instansi_id Belum Dipilih", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
toastr.error("Data instansi_id Belum Dipilih", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
||||||
$('#template').val('');
|
$('#template_default').val('');
|
||||||
}else{
|
}else{
|
||||||
if(val == 1){
|
if(val == 1){
|
||||||
$('.btnDownload').attr('href',"{{url('test')}}");
|
$('.btnDownload').attr('href',"{{url('test')}}");
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
@extends('layouts.master')
|
||||||
|
@section('content')
|
||||||
|
<div class="flex flex-col gap-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="flex justify-between items-center">
|
||||||
|
<h4 class="card-title">{{$title}}</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<form action="{{route($route.'.store')}}" method="POST" class="" enctype="multipart/form-data">
|
||||||
|
{{csrf_field()}}
|
||||||
|
<input type="hidden" name="secure_id" value="{{@$keyId}}">
|
||||||
|
<div class="p-6">
|
||||||
|
<div class="grid lg:grid-cols-1 gap-3">
|
||||||
|
<table class="gridjs-table">
|
||||||
|
<tbody class="gridjs-tbody">
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Instansi</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->instansi->name}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Resource Data</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->template->name}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Nama Dataset</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->name}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Sifat Dataset</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">
|
||||||
|
@if($item->publik == 1)
|
||||||
|
<span class="p-1 text-xs text-white rounded bg-success">Terbuka/Publik</span>
|
||||||
|
@else
|
||||||
|
<span class="p-1 text-xs text-white rounded bg-primary">Rahasia/Private</span>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Tags</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->tags}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">File : </td>
|
||||||
|
<td class="gridjs-td border-none text-xs"><a href="{{asset('uploads/'.@$item->file)}}" class="btn bg-primary text-white text-xs"><i class="ri-download-line"></i> Download File</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Topik</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->topik}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
<td class="gridjs-td border-none text-xs">Deskripsi</td>
|
||||||
|
<td class="gridjs-td border-none text-xs">{{$item->deskripsi}}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
$data = json_decode($item->data);
|
||||||
|
?>
|
||||||
|
<table id="table" class="gridjs-table border">
|
||||||
|
<thead class="gridjs-thead">
|
||||||
|
<tr class="gridjs-tr bg-secondary/10">
|
||||||
|
@if (!empty($data))
|
||||||
|
@foreach ($data[0] as $k => $key)
|
||||||
|
<th class="gridjs-td gridjs-th text-xs text-gray-500">{{ ucwords(str_replace('_', ' ', $k)) }}</th>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="gridjs-tbody">
|
||||||
|
@if (!empty($data))
|
||||||
|
@foreach ($data as $row)
|
||||||
|
<tr class="gridjs-tr">
|
||||||
|
@foreach ($row as $value)
|
||||||
|
<td class="gridjs-th text-xs">{{ $value ?? '-' }}</td>
|
||||||
|
@endforeach
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
@section('js')
|
||||||
|
<script>
|
||||||
|
const input = document.getElementById('tag-input');
|
||||||
|
const container = document.getElementById('tag-container');
|
||||||
|
|
||||||
|
input.addEventListener('keydown', function (e) {
|
||||||
|
if (e.key === 'Enter' && this.value.trim() !== '') {
|
||||||
|
e.preventDefault();
|
||||||
|
const tagText = this.value.trim();
|
||||||
|
|
||||||
|
// Buat tag baru
|
||||||
|
const tag = document.createElement('span');
|
||||||
|
tag.className = 'inline-flex items-center px-2 py-1 bg-primary text-white text-sm rounded';
|
||||||
|
tag.innerHTML = `${tagText} <button type="button" class="ml-1 text-blue-500 hover:text-red-600">×</button>`;
|
||||||
|
|
||||||
|
// Hidden input untuk dikirim ke server
|
||||||
|
const hiddenInput = document.createElement('input');
|
||||||
|
hiddenInput.type = 'hidden';
|
||||||
|
hiddenInput.name = 'tags[]';
|
||||||
|
hiddenInput.value = tagText;
|
||||||
|
|
||||||
|
// Tempelkan ke tag
|
||||||
|
tag.appendChild(hiddenInput);
|
||||||
|
|
||||||
|
// Tambahkan tag ke container sebelum input
|
||||||
|
container.insertBefore(tag, input);
|
||||||
|
|
||||||
|
// Reset input
|
||||||
|
this.value = '';
|
||||||
|
|
||||||
|
// Hapus tag saat tombol × ditekan
|
||||||
|
tag.querySelector('button').addEventListener('click', () => tag.remove());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#template_default').on('change',function(){
|
||||||
|
var instansi_id = $('.instansi_id').find(':selected').val();
|
||||||
|
var val = $(this).find(':selected').val();
|
||||||
|
if(instansi_id == ''){
|
||||||
|
toastr.error("Data instansi_id Belum Dipilih", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
||||||
|
$('#template_default').val('');
|
||||||
|
}else{
|
||||||
|
if(val == 1){
|
||||||
|
$('.btnDownload').attr('href',"{{url('test')}}");
|
||||||
|
$('.btnDownload').removeClass('hidden');
|
||||||
|
}else{
|
||||||
|
$('.btnDownload').attr('href',"#");
|
||||||
|
$('.btnDownload').addClass('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('.numberInput').on('input', function() {
|
||||||
|
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
|
||||||
|
});
|
||||||
|
$('#togglePassword').on('click', function() {
|
||||||
|
let passwordField = $('#password');
|
||||||
|
let icon = $(this).find('i');
|
||||||
|
|
||||||
|
// Cek apakah input saat ini bertipe password
|
||||||
|
if (passwordField.attr('type') === 'password') {
|
||||||
|
passwordField.attr('type', 'text'); // Ubah ke teks
|
||||||
|
icon.removeClass('fa-eye').addClass('fa-eye-slash'); // Ganti ikon
|
||||||
|
} else {
|
||||||
|
passwordField.attr('type', 'password'); // Ubah ke password
|
||||||
|
icon.removeClass('fa-eye-slash').addClass('fa-eye'); // Kembalikan ikon
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endsection
|
|
@ -17,6 +17,7 @@ Route::name('opendata.')->prefix('opendata')->group(function () {
|
||||||
Route::resource('/',DatasetController::class);
|
Route::resource('/',DatasetController::class);
|
||||||
Route::get('grid',[DatasetController::class,'grid'])->name('grid');
|
Route::get('grid',[DatasetController::class,'grid'])->name('grid');
|
||||||
Route::get('update/{id?}',[DatasetController::class,'update'])->name('update');
|
Route::get('update/{id?}',[DatasetController::class,'update'])->name('update');
|
||||||
|
Route::get('view/{id?}',[DatasetController::class,'view'])->name('view');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,14 @@ return array(
|
||||||
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
||||||
'App\\Http\\Controllers\\Auth\\VerificationController' => $baseDir . '/app/Http/Controllers/Auth/VerificationController.php',
|
'App\\Http\\Controllers\\Auth\\VerificationController' => $baseDir . '/app/Http/Controllers/Auth/VerificationController.php',
|
||||||
'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
|
'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
|
||||||
|
'App\\Http\\Controllers\\FrontController' => $baseDir . '/app/Http/Controllers/FrontController.php',
|
||||||
'App\\Http\\Controllers\\HomeController' => $baseDir . '/app/Http/Controllers/HomeController.php',
|
'App\\Http\\Controllers\\HomeController' => $baseDir . '/app/Http/Controllers/HomeController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\AksesController' => $baseDir . '/app/Http/Controllers/Management/AksesController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\RoleController' => $baseDir . '/app/Http/Controllers/Management/RoleController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\UserController' => $baseDir . '/app/Http/Controllers/Management/UserController.php',
|
||||||
|
'App\\Http\\Controllers\\Master\\InstansiController' => $baseDir . '/app/Http/Controllers/Master/InstansiController.php',
|
||||||
|
'App\\Http\\Controllers\\Master\\TopikController' => $baseDir . '/app/Http/Controllers/Master/TopikController.php',
|
||||||
|
'App\\Http\\Controllers\\Opendata\\DatasetController' => $baseDir . '/app/Http/Controllers/Opendata/DatasetController.php',
|
||||||
'App\\Http\\Kernel' => $baseDir . '/app/Http/Kernel.php',
|
'App\\Http\\Kernel' => $baseDir . '/app/Http/Kernel.php',
|
||||||
'App\\Http\\Middleware\\Authenticate' => $baseDir . '/app/Http/Middleware/Authenticate.php',
|
'App\\Http\\Middleware\\Authenticate' => $baseDir . '/app/Http/Middleware/Authenticate.php',
|
||||||
'App\\Http\\Middleware\\EncryptCookies' => $baseDir . '/app/Http/Middleware/EncryptCookies.php',
|
'App\\Http\\Middleware\\EncryptCookies' => $baseDir . '/app/Http/Middleware/EncryptCookies.php',
|
||||||
|
@ -29,10 +36,14 @@ return array(
|
||||||
'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php',
|
'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php',
|
||||||
'App\\Http\\Middleware\\ValidateSignature' => $baseDir . '/app/Http/Middleware/ValidateSignature.php',
|
'App\\Http\\Middleware\\ValidateSignature' => $baseDir . '/app/Http/Middleware/ValidateSignature.php',
|
||||||
'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php',
|
'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php',
|
||||||
|
'App\\Models\\Dataset' => $baseDir . '/app/Models/Dataset.php',
|
||||||
'App\\Models\\Log' => $baseDir . '/app/Models/Log.php',
|
'App\\Models\\Log' => $baseDir . '/app/Models/Log.php',
|
||||||
'App\\Models\\Master\\AccessMenu' => $baseDir . '/app/Models/Master/AccessMenu.php',
|
'App\\Models\\Master\\AccessMenu' => $baseDir . '/app/Models/Master/AccessMenu.php',
|
||||||
'App\\Models\\Master\\Group' => $baseDir . '/app/Models/Master/Group.php',
|
'App\\Models\\Master\\Group' => $baseDir . '/app/Models/Master/Group.php',
|
||||||
|
'App\\Models\\Master\\Instansi' => $baseDir . '/app/Models/Master/Instansi.php',
|
||||||
'App\\Models\\Master\\Menu' => $baseDir . '/app/Models/Master/Menu.php',
|
'App\\Models\\Master\\Menu' => $baseDir . '/app/Models/Master/Menu.php',
|
||||||
|
'App\\Models\\Master\\Template' => $baseDir . '/app/Models/Master/Template.php',
|
||||||
|
'App\\Models\\Master\\Topik' => $baseDir . '/app/Models/Master/Topik.php',
|
||||||
'App\\Models\\User' => $baseDir . '/app/Models/User.php',
|
'App\\Models\\User' => $baseDir . '/app/Models/User.php',
|
||||||
'App\\Providers\\AppServiceProvider' => $baseDir . '/app/Providers/AppServiceProvider.php',
|
'App\\Providers\\AppServiceProvider' => $baseDir . '/app/Providers/AppServiceProvider.php',
|
||||||
'App\\Providers\\AuthServiceProvider' => $baseDir . '/app/Providers/AuthServiceProvider.php',
|
'App\\Providers\\AuthServiceProvider' => $baseDir . '/app/Providers/AuthServiceProvider.php',
|
||||||
|
@ -138,7 +149,28 @@ return array(
|
||||||
'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php',
|
'Carbon\\Translator' => $vendorDir . '/nesbot/carbon/src/Carbon/Translator.php',
|
||||||
'Carbon\\TranslatorImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php',
|
'Carbon\\TranslatorImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php',
|
||||||
'Carbon\\TranslatorStrongTypeInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php',
|
'Carbon\\TranslatorStrongTypeInterface' => $vendorDir . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php',
|
||||||
|
'Complex\\Complex' => $vendorDir . '/markbaker/complex/classes/src/Complex.php',
|
||||||
|
'Complex\\Exception' => $vendorDir . '/markbaker/complex/classes/src/Exception.php',
|
||||||
|
'Complex\\Functions' => $vendorDir . '/markbaker/complex/classes/src/Functions.php',
|
||||||
|
'Complex\\Operations' => $vendorDir . '/markbaker/complex/classes/src/Operations.php',
|
||||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||||
|
'Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php',
|
||||||
|
'Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php',
|
||||||
|
'Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => $vendorDir . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchFlags' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => $vendorDir . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => $vendorDir . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
|
||||||
|
'Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php',
|
||||||
|
'Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php',
|
||||||
|
'Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php',
|
||||||
|
'Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php',
|
||||||
|
'Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php',
|
||||||
'Cron\\AbstractField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/AbstractField.php',
|
'Cron\\AbstractField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/AbstractField.php',
|
||||||
'Cron\\CronExpression' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/CronExpression.php',
|
'Cron\\CronExpression' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/CronExpression.php',
|
||||||
'Cron\\DayOfMonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php',
|
'Cron\\DayOfMonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php',
|
||||||
|
@ -151,6 +183,8 @@ return array(
|
||||||
'Cron\\MonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
|
'Cron\\MonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
|
||||||
'Database\\Factories\\UserFactory' => $baseDir . '/database/factories/UserFactory.php',
|
'Database\\Factories\\UserFactory' => $baseDir . '/database/factories/UserFactory.php',
|
||||||
'Database\\Seeders\\DatabaseSeeder' => $baseDir . '/database/seeders/DatabaseSeeder.php',
|
'Database\\Seeders\\DatabaseSeeder' => $baseDir . '/database/seeders/DatabaseSeeder.php',
|
||||||
|
'Database\\Seeders\\TemplateSeeder' => $baseDir . '/database/seeders/TemplateSeeder.php',
|
||||||
|
'Database\\Seeders\\TopikSeeder' => $baseDir . '/database/seeders/TopikSeeder.php',
|
||||||
'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
|
'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
|
||||||
'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
|
'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
|
||||||
'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
|
'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
|
||||||
|
@ -2747,6 +2781,21 @@ return array(
|
||||||
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
||||||
'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
||||||
'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php',
|
'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php',
|
||||||
|
'Matrix\\Builder' => $vendorDir . '/markbaker/matrix/classes/src/Builder.php',
|
||||||
|
'Matrix\\Decomposition\\Decomposition' => $vendorDir . '/markbaker/matrix/classes/src/Decomposition/Decomposition.php',
|
||||||
|
'Matrix\\Decomposition\\LU' => $vendorDir . '/markbaker/matrix/classes/src/Decomposition/LU.php',
|
||||||
|
'Matrix\\Decomposition\\QR' => $vendorDir . '/markbaker/matrix/classes/src/Decomposition/QR.php',
|
||||||
|
'Matrix\\Div0Exception' => $vendorDir . '/markbaker/matrix/classes/src/Div0Exception.php',
|
||||||
|
'Matrix\\Exception' => $vendorDir . '/markbaker/matrix/classes/src/Exception.php',
|
||||||
|
'Matrix\\Functions' => $vendorDir . '/markbaker/matrix/classes/src/Functions.php',
|
||||||
|
'Matrix\\Matrix' => $vendorDir . '/markbaker/matrix/classes/src/Matrix.php',
|
||||||
|
'Matrix\\Operations' => $vendorDir . '/markbaker/matrix/classes/src/Operations.php',
|
||||||
|
'Matrix\\Operators\\Addition' => $vendorDir . '/markbaker/matrix/classes/src/Operators/Addition.php',
|
||||||
|
'Matrix\\Operators\\DirectSum' => $vendorDir . '/markbaker/matrix/classes/src/Operators/DirectSum.php',
|
||||||
|
'Matrix\\Operators\\Division' => $vendorDir . '/markbaker/matrix/classes/src/Operators/Division.php',
|
||||||
|
'Matrix\\Operators\\Multiplication' => $vendorDir . '/markbaker/matrix/classes/src/Operators/Multiplication.php',
|
||||||
|
'Matrix\\Operators\\Operator' => $vendorDir . '/markbaker/matrix/classes/src/Operators/Operator.php',
|
||||||
|
'Matrix\\Operators\\Subtraction' => $vendorDir . '/markbaker/matrix/classes/src/Operators/Subtraction.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php',
|
||||||
|
@ -4020,6 +4069,519 @@ return array(
|
||||||
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
|
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
|
||||||
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
||||||
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\ArrayEnabled' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ArrayEnabled.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\BinaryComparison' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/BinaryComparison.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\CalculationBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/CalculationBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\CalculationLocale' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/CalculationLocale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Category' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Category.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DAverage' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DAverage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DCount' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCount.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DCountA' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCountA.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DGet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DGet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DMax' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMax.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DMin' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMin.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DProduct' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DProduct.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DStDev' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDev.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DStDevP' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDevP.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DSum' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DSum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DVar' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DVarP' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVarP.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DatabaseAbstract' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Constants' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Current' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Current.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Date' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\DateParts' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateParts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\DateValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Days' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Days.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Days360' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Days360.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Difference' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Difference.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Helpers' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Month' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Month.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\NetworkDays' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/NetworkDays.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Time' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Time.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\TimeParts' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeParts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\TimeValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Week' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Week.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\WorkDay' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/WorkDay.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\YearFrac' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/YearFrac.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentProcessor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentProcessor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\BranchPruner' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/BranchPruner.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\CyclicReferenceStack' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/CyclicReferenceStack.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\FormattedNumber' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Logger' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Logger.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\Operand' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\StructuredReference' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselI' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselJ' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselK' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselK.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselY' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselY.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BitWise' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BitWise.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Compare' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Compare.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Complex' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Complex.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ComplexFunctions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ComplexFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ComplexOperations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ComplexOperations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Constants' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertBinary' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBinary.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertDecimal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertDecimal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertHex' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertHex.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertOctal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertOctal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertUOM' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertUOM.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\EngineeringValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/EngineeringValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Erf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Erf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ErfC' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ErfC.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\ExceptionHandler' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ExceptionHandler.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Amortization' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Amortization.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\CashFlowValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/CashFlowValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Cumulative' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Cumulative.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Interest' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Interest.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\InterestAndPrincipal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/InterestAndPrincipal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Payments' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Payments.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Single' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Single.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Variable\\NonPeriodic' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/NonPeriodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Variable\\Periodic' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/Periodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Constants' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Coupons' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Coupons.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Depreciation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Depreciation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Dollar' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Dollar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\FinancialValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/FinancialValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Helpers' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\InterestRate' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/InterestRate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\AccruedInterest' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/AccruedInterest.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Price' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Price.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Rates' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Rates.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\SecurityValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/SecurityValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Yields' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Yields.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\TreasuryBill' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/TreasuryBill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FormulaParser' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaParser.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FormulaToken' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaToken.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FunctionArray' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FunctionArray.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Functions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Functions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\ErrorValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/ErrorValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\ExcelError' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/ExcelError.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\Value' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/Value.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\ExcelArrayPseudoFunctions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/ExcelArrayPseudoFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\MakeMatrix' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/MakeMatrix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\WildcardMatch' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/WildcardMatch.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Boolean' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Boolean.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Conditional' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Operations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Operations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Address' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Address.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\ChooseRowsEtc' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/ChooseRowsEtc.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\ExcelMatch' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/ExcelMatch.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Filter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Filter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Formula' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Formula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\HLookup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/HLookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Helpers' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Hyperlink' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Hyperlink.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Indirect' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Indirect.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Lookup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Lookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\LookupBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/LookupBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\LookupRefValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/LookupRefValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Matrix' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Matrix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Offset' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Offset.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\RowColumnInformation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Selection' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Selection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Sort' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Sort.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Unique' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Unique.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\VLookup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/VLookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Absolute' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Absolute.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Angle' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Angle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Arabic' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Arabic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Base' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Base.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Ceiling' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Ceiling.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Combinations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Combinations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Exp' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Exp.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Factorial' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Factorial.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Floor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Floor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Gcd' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Gcd.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Helpers' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\IntClass' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/IntClass.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Lcm' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Lcm.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Logarithms' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Logarithms.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\MatrixFunctions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/MatrixFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Operations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Operations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Random' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Random.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Roman' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Roman.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Round' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Round.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\SeriesSum' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/SeriesSum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sign' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sign.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sqrt' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sqrt.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Subtotal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Subtotal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sum' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\SumSquares' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/SumSquares.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cosecant' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cosecant.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cosine' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cosine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cotangent' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cotangent.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Secant' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Secant.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Sine' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Sine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Tangent' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Tangent.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trunc' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trunc.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\AggregateBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/AggregateBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Averages' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Averages.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Averages\\Mean' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Averages/Mean.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Conditional' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Confidence' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Confidence.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Counts' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Counts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Deviations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Deviations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Beta' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Beta.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Binomial' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Binomial.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\ChiSquared' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/ChiSquared.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\DistributionValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/DistributionValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Exponential' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Exponential.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\F' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/F.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Fisher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Fisher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Gamma' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Gamma.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\GammaBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/GammaBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\HyperGeometric' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/HyperGeometric.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\LogNormal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/LogNormal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\NewtonRaphson' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/NewtonRaphson.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Normal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Normal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Poisson' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Poisson.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\StandardNormal' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/StandardNormal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\StudentT' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/StudentT.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Weibull' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Weibull.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\MaxMinBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/MaxMinBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Maximum' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Maximum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Minimum' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Minimum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Percentiles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Percentiles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Permutations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Permutations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Size' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Size.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\StandardDeviations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/StandardDeviations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Standardize' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Standardize.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\StatisticalValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/StatisticalValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Trends' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Trends.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\VarianceBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/VarianceBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Variances' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Variances.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\CaseConvert' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/CaseConvert.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\CharacterConvert' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/CharacterConvert.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Concatenate' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Concatenate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Extract' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Extract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Format' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Format.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Helpers' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Replace' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Replace.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Search' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Search.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Text' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Text.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Trim' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Trim.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Token\\Stack' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Token/Stack.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Web\\Service' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Web/Service.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\CellReferenceHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/CellReferenceHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AddressHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AddressHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AddressRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AddressRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AdvancedValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AdvancedValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Cell' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Cell.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\CellAddress' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/CellAddress.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\CellRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/CellRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\ColumnRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/ColumnRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Coordinate' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataType' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataType.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataValidation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataValidation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataValidator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataValidator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Hyperlink' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Hyperlink.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\IValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\IgnoredErrors' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IgnoredErrors.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\RowRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/RowRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\StringValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/StringValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Axis' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Axis.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\AxisText' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/AxisText.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Chart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\ChartColor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/ChartColor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeries' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeries.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeriesValues' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeriesValues.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\GridLines' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/GridLines.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Layout' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Layout.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Legend' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Legend.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\PlotArea' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/PlotArea.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\IRenderer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/IRenderer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\JpGraph' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraph.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\JpGraphRendererBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraphRendererBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\MtJpGraphRenderer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/MtJpGraphRenderer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Title' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Title.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\TrendLine' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/TrendLine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Cells' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Cells.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\CellsFactory' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/CellsFactory.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Memory\\SimpleCache1' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Memory/SimpleCache1.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Memory\\SimpleCache3' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Memory/SimpleCache3.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Comment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Comment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\DefinedName' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/DefinedName.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Document\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Document\\Security' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Security.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\HashTable' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/HashTable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Dimension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Dimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Downloader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Downloader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Handler' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Handler.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Html' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Sample' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Sample.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Size' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Size.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\TextGrid' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/TextGrid.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\IComparable' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IComparable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\IOFactory' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\NamedFormula' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/NamedFormula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\NamedRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/NamedRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\BaseReader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/BaseReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Csv' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Csv.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Csv\\Delimiter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Csv/Delimiter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\DefaultReadFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/DefaultReadFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\PageSetup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\Styles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Html' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\IReadFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/IReadFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\IReader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/IReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\BaseLoader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/BaseLoader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\DefinedNames' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/DefinedNames.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\FormulaTranslator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/FormulaTranslator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\PageSettings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/PageSettings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Security\\XmlScanner' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Security/XmlScanner.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Slk' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Slk.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\XlsBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/XlsBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Biff5' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Biff5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Biff8' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Biff8.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BIFF5' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BIFF5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BIFF8' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BIFF8.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BuiltIn' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BuiltIn.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ConditionalFormatting' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ConditionalFormatting.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\DataValidationHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/DataValidationHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ErrorCode' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ErrorCode.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Escher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ListFunctions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ListFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\LoadSpreadsheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/LoadSpreadsheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\MD5' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/MD5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Mappings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Mappings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\RC4' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/RC4.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\Border' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\CellAlignment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/CellAlignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\CellFont' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/CellFont.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\FillPattern' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/FillPattern.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\BaseParserClass' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/BaseParserClass.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Chart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\ColumnAndRowAttributes' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/ColumnAndRowAttributes.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\ConditionalStyles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\DataValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/DataValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Hyperlinks' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Hyperlinks.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Namespaces' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Namespaces.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\PageSetup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SharedFormula' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SharedFormula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViewOptions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViews' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViews.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Styles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\TableReader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/TableReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Theme' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\WorkbookView' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/WorkbookView.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\DataValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/DataValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\PageSettings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/PageSettings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Alignment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Alignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Border' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Fill' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Fill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Font' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\NumberFormat' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/NumberFormat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\StyleBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/StyleBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\ReferenceHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/ReferenceHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\ITextElement' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/ITextElement.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\RichText' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/RichText.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\Run' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/Run.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\TextElement' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/TextElement.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Settings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Settings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\CodePage' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/CodePage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Date' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Drawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer\\SpgrContainer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer/SpgrContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer\\SpgrContainer\\SpContainer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer\\BSE' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer\\BSE\\Blip' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\File' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Font' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\IntOrFloat' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/IntOrFloat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLERead' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLERead.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\ChainedBlockStream' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/ChainedBlockStream.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS\\File' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS/File.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS\\Root' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS/Root.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\PasswordHasher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/PasswordHasher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\StringHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/StringHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\TimeZone' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/TimeZone.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\BestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/BestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\ExponentialBestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/ExponentialBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\LinearBestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/LinearBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\LogarithmicBestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/LogarithmicBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\PolynomialBestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\PowerBestFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/PowerBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\Trend' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/Trend.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\XMLWriter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/XMLWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Xls' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Spreadsheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Spreadsheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Alignment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Alignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Border' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Borders' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Borders.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Color' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Color.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Conditional' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\CellMatcher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\CellStyleAssessor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalColorScale' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalColorScale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalDataBar' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalDataBar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalDataBarExtension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalDataBarExtension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalFormatValueObject' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalFormatValueObject.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalFormattingRuleExtension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalFormattingRuleExtension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\StyleMerger' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Blanks' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\CellValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\DateValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Duplicates' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Errors' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Expression' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\TextValue' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\WizardAbstract' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\WizardInterface' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Fill' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Fill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Font' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\BaseFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/BaseFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\DateFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/DateFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Formatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Formatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\FractionFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/FractionFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\NumberFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/NumberFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\PercentageFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/PercentageFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Accounting' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Accounting.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Currency' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Currency.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\CurrencyBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/CurrencyBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\CurrencyNegative' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/CurrencyNegative.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Date' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTime' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTime.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTimeWizard' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTimeWizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Duration' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Duration.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Locale' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Locale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Number' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Number.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\NumberBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/NumberBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Percentage' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Percentage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Scientific' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Scientific.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Time' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Time.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Wizard' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Wizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Protection' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Protection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\RgbTint' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/RgbTint.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Supervisor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Supervisor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Theme' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column\\Rule' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column/Rule.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\BaseDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/BaseDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\CellIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/CellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Column' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnCellIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnCellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnDimension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnDimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Dimension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Dimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Drawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Drawing\\Shadow' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Drawing/Shadow.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooterDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooterDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Iterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Iterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\MemoryDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/MemoryDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageBreak' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageBreak.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageMargins' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageMargins.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageSetup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Pane' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Pane.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ProtectedRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ProtectedRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Protection' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Protection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Row' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Row.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowCellIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowCellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowDimension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowDimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\SheetView' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/SheetView.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\Column' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\TableDxfsStyle' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/TableDxfsStyle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\TableStyle' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/TableStyle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Validations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Validations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\BaseWriter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Csv' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Csv.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Html' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\IWriter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/IWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\AutoFilters' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/AutoFilters.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Cell\\Comment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Cell/Comment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Cell\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Cell/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Content' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Content.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Formula' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Formula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Meta' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Meta.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\MetaInf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/MetaInf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Mimetype' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Mimetype.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\NamedExpressions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/NamedExpressions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Settings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Settings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Styles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Thumbnails' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Thumbnails.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\WriterPart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/WriterPart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Dompdf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Dompdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Mpdf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Tcpdf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Tcpdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\BIFFwriter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/BIFFwriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\CellDataValidation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/CellDataValidation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\ConditionalHelper' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/ConditionalHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\ErrorCode' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/ErrorCode.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Escher' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Font' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Parser' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Parser.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellAlignment' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellAlignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellBorder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellBorder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellFill' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellFill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Workbook' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Workbook.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Xf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Xf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Chart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Comments' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Comments.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\ContentTypes' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DefinedNames' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DocProps' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DocProps.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Drawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\FunctionPrefix' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/FunctionPrefix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Metadata' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Metadata.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Rels' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Rels.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsRibbon' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsRibbon.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsVBA' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsVBA.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\StringTable' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/StringTable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Table' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Table.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Theme' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream0' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream0.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream2' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream2.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream3' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream3.php',
|
||||||
'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php',
|
'PhpOption\\LazyOption' => $vendorDir . '/phpoption/phpoption/src/PhpOption/LazyOption.php',
|
||||||
'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php',
|
'PhpOption\\None' => $vendorDir . '/phpoption/phpoption/src/PhpOption/None.php',
|
||||||
'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php',
|
'PhpOption\\Option' => $vendorDir . '/phpoption/phpoption/src/PhpOption/Option.php',
|
||||||
|
@ -6153,5 +6715,32 @@ return array(
|
||||||
'Whoops\\Util\\Misc' => $vendorDir . '/filp/whoops/src/Whoops/Util/Misc.php',
|
'Whoops\\Util\\Misc' => $vendorDir . '/filp/whoops/src/Whoops/Util/Misc.php',
|
||||||
'Whoops\\Util\\SystemFacade' => $vendorDir . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
'Whoops\\Util\\SystemFacade' => $vendorDir . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
||||||
'Whoops\\Util\\TemplateHelper' => $vendorDir . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
'Whoops\\Util\\TemplateHelper' => $vendorDir . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
||||||
|
'ZipStream\\CentralDirectoryFileHeader' => $vendorDir . '/maennchen/zipstream-php/src/CentralDirectoryFileHeader.php',
|
||||||
|
'ZipStream\\CompressionMethod' => $vendorDir . '/maennchen/zipstream-php/src/CompressionMethod.php',
|
||||||
|
'ZipStream\\DataDescriptor' => $vendorDir . '/maennchen/zipstream-php/src/DataDescriptor.php',
|
||||||
|
'ZipStream\\EndOfCentralDirectory' => $vendorDir . '/maennchen/zipstream-php/src/EndOfCentralDirectory.php',
|
||||||
|
'ZipStream\\Exception' => $vendorDir . '/maennchen/zipstream-php/src/Exception.php',
|
||||||
|
'ZipStream\\Exception\\DosTimeOverflowException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/DosTimeOverflowException.php',
|
||||||
|
'ZipStream\\Exception\\FileNotFoundException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/FileNotFoundException.php',
|
||||||
|
'ZipStream\\Exception\\FileNotReadableException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/FileNotReadableException.php',
|
||||||
|
'ZipStream\\Exception\\FileSizeIncorrectException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/FileSizeIncorrectException.php',
|
||||||
|
'ZipStream\\Exception\\OverflowException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/OverflowException.php',
|
||||||
|
'ZipStream\\Exception\\ResourceActionException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/ResourceActionException.php',
|
||||||
|
'ZipStream\\Exception\\SimulationFileUnknownException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/SimulationFileUnknownException.php',
|
||||||
|
'ZipStream\\Exception\\StreamNotReadableException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/StreamNotReadableException.php',
|
||||||
|
'ZipStream\\Exception\\StreamNotSeekableException' => $vendorDir . '/maennchen/zipstream-php/src/Exception/StreamNotSeekableException.php',
|
||||||
|
'ZipStream\\File' => $vendorDir . '/maennchen/zipstream-php/src/File.php',
|
||||||
|
'ZipStream\\GeneralPurposeBitFlag' => $vendorDir . '/maennchen/zipstream-php/src/GeneralPurposeBitFlag.php',
|
||||||
|
'ZipStream\\LocalFileHeader' => $vendorDir . '/maennchen/zipstream-php/src/LocalFileHeader.php',
|
||||||
|
'ZipStream\\OperationMode' => $vendorDir . '/maennchen/zipstream-php/src/OperationMode.php',
|
||||||
|
'ZipStream\\PackField' => $vendorDir . '/maennchen/zipstream-php/src/PackField.php',
|
||||||
|
'ZipStream\\Time' => $vendorDir . '/maennchen/zipstream-php/src/Time.php',
|
||||||
|
'ZipStream\\Version' => $vendorDir . '/maennchen/zipstream-php/src/Version.php',
|
||||||
|
'ZipStream\\Zip64\\DataDescriptor' => $vendorDir . '/maennchen/zipstream-php/src/Zip64/DataDescriptor.php',
|
||||||
|
'ZipStream\\Zip64\\EndOfCentralDirectory' => $vendorDir . '/maennchen/zipstream-php/src/Zip64/EndOfCentralDirectory.php',
|
||||||
|
'ZipStream\\Zip64\\EndOfCentralDirectoryLocator' => $vendorDir . '/maennchen/zipstream-php/src/Zip64/EndOfCentralDirectoryLocator.php',
|
||||||
|
'ZipStream\\Zip64\\ExtendedInformationExtraField' => $vendorDir . '/maennchen/zipstream-php/src/Zip64/ExtendedInformationExtraField.php',
|
||||||
|
'ZipStream\\ZipStream' => $vendorDir . '/maennchen/zipstream-php/src/ZipStream.php',
|
||||||
|
'ZipStream\\Zs\\ExtendedInformationExtraField' => $vendorDir . '/maennchen/zipstream-php/src/Zs/ExtendedInformationExtraField.php',
|
||||||
'voku\\helper\\ASCII' => $vendorDir . '/voku/portable-ascii/src/voku/helper/ASCII.php',
|
'voku\\helper\\ASCII' => $vendorDir . '/voku/portable-ascii/src/voku/helper/ASCII.php',
|
||||||
);
|
);
|
||||||
|
|
|
@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'),
|
'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'),
|
||||||
|
'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'),
|
||||||
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
|
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
|
||||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
||||||
'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'),
|
'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'),
|
||||||
|
@ -56,9 +57,11 @@ return array(
|
||||||
'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
|
'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
|
||||||
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
||||||
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
|
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'),
|
||||||
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
||||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||||
'Mockery\\' => array($vendorDir . '/mockery/mockery/library/Mockery'),
|
'Mockery\\' => array($vendorDir . '/mockery/mockery/library/Mockery'),
|
||||||
|
'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'),
|
||||||
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
||||||
'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'),
|
'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'),
|
||||||
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
||||||
|
@ -89,6 +92,8 @@ return array(
|
||||||
'Database\\Seeders\\' => array($baseDir . '/database/seeders', $vendorDir . '/laravel/pint/database/seeders'),
|
'Database\\Seeders\\' => array($baseDir . '/database/seeders', $vendorDir . '/laravel/pint/database/seeders'),
|
||||||
'Database\\Factories\\' => array($baseDir . '/database/factories', $vendorDir . '/laravel/pint/database/factories'),
|
'Database\\Factories\\' => array($baseDir . '/database/factories', $vendorDir . '/laravel/pint/database/factories'),
|
||||||
'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'),
|
'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'),
|
||||||
|
'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'),
|
||||||
|
'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'),
|
||||||
'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'),
|
'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'),
|
||||||
'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
|
'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
|
||||||
'Brick\\Math\\' => array($vendorDir . '/brick/math/src'),
|
'Brick\\Math\\' => array($vendorDir . '/brick/math/src'),
|
||||||
|
|
|
@ -45,6 +45,10 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
'voku\\' => 5,
|
'voku\\' => 5,
|
||||||
),
|
),
|
||||||
|
'Z' =>
|
||||||
|
array (
|
||||||
|
'ZipStream\\' => 10,
|
||||||
|
),
|
||||||
'W' =>
|
'W' =>
|
||||||
array (
|
array (
|
||||||
'Whoops\\' => 7,
|
'Whoops\\' => 7,
|
||||||
|
@ -108,6 +112,7 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'Psr\\Clock\\' => 10,
|
'Psr\\Clock\\' => 10,
|
||||||
'PhpParser\\' => 10,
|
'PhpParser\\' => 10,
|
||||||
'PhpOption\\' => 10,
|
'PhpOption\\' => 10,
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\' => 25,
|
||||||
),
|
),
|
||||||
'N' =>
|
'N' =>
|
||||||
array (
|
array (
|
||||||
|
@ -117,6 +122,7 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
'Monolog\\' => 8,
|
'Monolog\\' => 8,
|
||||||
'Mockery\\' => 8,
|
'Mockery\\' => 8,
|
||||||
|
'Matrix\\' => 7,
|
||||||
),
|
),
|
||||||
'L' =>
|
'L' =>
|
||||||
array (
|
array (
|
||||||
|
@ -168,6 +174,8 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'C' =>
|
'C' =>
|
||||||
array (
|
array (
|
||||||
'Cron\\' => 5,
|
'Cron\\' => 5,
|
||||||
|
'Composer\\Pcre\\' => 14,
|
||||||
|
'Complex\\' => 8,
|
||||||
'Carbon\\Doctrine\\' => 16,
|
'Carbon\\Doctrine\\' => 16,
|
||||||
'Carbon\\' => 7,
|
'Carbon\\' => 7,
|
||||||
),
|
),
|
||||||
|
@ -186,6 +194,10 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
|
0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
|
||||||
),
|
),
|
||||||
|
'ZipStream\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/maennchen/zipstream-php/src',
|
||||||
|
),
|
||||||
'Whoops\\' =>
|
'Whoops\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops',
|
0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops',
|
||||||
|
@ -385,6 +397,10 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption',
|
0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption',
|
||||||
),
|
),
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet',
|
||||||
|
),
|
||||||
'NunoMaduro\\Collision\\' =>
|
'NunoMaduro\\Collision\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/nunomaduro/collision/src',
|
0 => __DIR__ . '/..' . '/nunomaduro/collision/src',
|
||||||
|
@ -397,6 +413,10 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/mockery/mockery/library/Mockery',
|
0 => __DIR__ . '/..' . '/mockery/mockery/library/Mockery',
|
||||||
),
|
),
|
||||||
|
'Matrix\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src',
|
||||||
|
),
|
||||||
'League\\MimeTypeDetection\\' =>
|
'League\\MimeTypeDetection\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
|
0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
|
||||||
|
@ -521,6 +541,14 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron',
|
0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron',
|
||||||
),
|
),
|
||||||
|
'Composer\\Pcre\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/composer/pcre/src',
|
||||||
|
),
|
||||||
|
'Complex\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/markbaker/complex/classes/src',
|
||||||
|
),
|
||||||
'Carbon\\Doctrine\\' =>
|
'Carbon\\Doctrine\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine',
|
0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine',
|
||||||
|
@ -552,7 +580,14 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
'App\\Http\\Controllers\\Auth\\ResetPasswordController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/ResetPasswordController.php',
|
||||||
'App\\Http\\Controllers\\Auth\\VerificationController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/VerificationController.php',
|
'App\\Http\\Controllers\\Auth\\VerificationController' => __DIR__ . '/../..' . '/app/Http/Controllers/Auth/VerificationController.php',
|
||||||
'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php',
|
'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php',
|
||||||
|
'App\\Http\\Controllers\\FrontController' => __DIR__ . '/../..' . '/app/Http/Controllers/FrontController.php',
|
||||||
'App\\Http\\Controllers\\HomeController' => __DIR__ . '/../..' . '/app/Http/Controllers/HomeController.php',
|
'App\\Http\\Controllers\\HomeController' => __DIR__ . '/../..' . '/app/Http/Controllers/HomeController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\AksesController' => __DIR__ . '/../..' . '/app/Http/Controllers/Management/AksesController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\RoleController' => __DIR__ . '/../..' . '/app/Http/Controllers/Management/RoleController.php',
|
||||||
|
'App\\Http\\Controllers\\Management\\UserController' => __DIR__ . '/../..' . '/app/Http/Controllers/Management/UserController.php',
|
||||||
|
'App\\Http\\Controllers\\Master\\InstansiController' => __DIR__ . '/../..' . '/app/Http/Controllers/Master/InstansiController.php',
|
||||||
|
'App\\Http\\Controllers\\Master\\TopikController' => __DIR__ . '/../..' . '/app/Http/Controllers/Master/TopikController.php',
|
||||||
|
'App\\Http\\Controllers\\Opendata\\DatasetController' => __DIR__ . '/../..' . '/app/Http/Controllers/Opendata/DatasetController.php',
|
||||||
'App\\Http\\Kernel' => __DIR__ . '/../..' . '/app/Http/Kernel.php',
|
'App\\Http\\Kernel' => __DIR__ . '/../..' . '/app/Http/Kernel.php',
|
||||||
'App\\Http\\Middleware\\Authenticate' => __DIR__ . '/../..' . '/app/Http/Middleware/Authenticate.php',
|
'App\\Http\\Middleware\\Authenticate' => __DIR__ . '/../..' . '/app/Http/Middleware/Authenticate.php',
|
||||||
'App\\Http\\Middleware\\EncryptCookies' => __DIR__ . '/../..' . '/app/Http/Middleware/EncryptCookies.php',
|
'App\\Http\\Middleware\\EncryptCookies' => __DIR__ . '/../..' . '/app/Http/Middleware/EncryptCookies.php',
|
||||||
|
@ -564,10 +599,14 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php',
|
'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php',
|
||||||
'App\\Http\\Middleware\\ValidateSignature' => __DIR__ . '/../..' . '/app/Http/Middleware/ValidateSignature.php',
|
'App\\Http\\Middleware\\ValidateSignature' => __DIR__ . '/../..' . '/app/Http/Middleware/ValidateSignature.php',
|
||||||
'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php',
|
'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php',
|
||||||
|
'App\\Models\\Dataset' => __DIR__ . '/../..' . '/app/Models/Dataset.php',
|
||||||
'App\\Models\\Log' => __DIR__ . '/../..' . '/app/Models/Log.php',
|
'App\\Models\\Log' => __DIR__ . '/../..' . '/app/Models/Log.php',
|
||||||
'App\\Models\\Master\\AccessMenu' => __DIR__ . '/../..' . '/app/Models/Master/AccessMenu.php',
|
'App\\Models\\Master\\AccessMenu' => __DIR__ . '/../..' . '/app/Models/Master/AccessMenu.php',
|
||||||
'App\\Models\\Master\\Group' => __DIR__ . '/../..' . '/app/Models/Master/Group.php',
|
'App\\Models\\Master\\Group' => __DIR__ . '/../..' . '/app/Models/Master/Group.php',
|
||||||
|
'App\\Models\\Master\\Instansi' => __DIR__ . '/../..' . '/app/Models/Master/Instansi.php',
|
||||||
'App\\Models\\Master\\Menu' => __DIR__ . '/../..' . '/app/Models/Master/Menu.php',
|
'App\\Models\\Master\\Menu' => __DIR__ . '/../..' . '/app/Models/Master/Menu.php',
|
||||||
|
'App\\Models\\Master\\Template' => __DIR__ . '/../..' . '/app/Models/Master/Template.php',
|
||||||
|
'App\\Models\\Master\\Topik' => __DIR__ . '/../..' . '/app/Models/Master/Topik.php',
|
||||||
'App\\Models\\User' => __DIR__ . '/../..' . '/app/Models/User.php',
|
'App\\Models\\User' => __DIR__ . '/../..' . '/app/Models/User.php',
|
||||||
'App\\Providers\\AppServiceProvider' => __DIR__ . '/../..' . '/app/Providers/AppServiceProvider.php',
|
'App\\Providers\\AppServiceProvider' => __DIR__ . '/../..' . '/app/Providers/AppServiceProvider.php',
|
||||||
'App\\Providers\\AuthServiceProvider' => __DIR__ . '/../..' . '/app/Providers/AuthServiceProvider.php',
|
'App\\Providers\\AuthServiceProvider' => __DIR__ . '/../..' . '/app/Providers/AuthServiceProvider.php',
|
||||||
|
@ -673,7 +712,28 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php',
|
'Carbon\\Translator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Translator.php',
|
||||||
'Carbon\\TranslatorImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php',
|
'Carbon\\TranslatorImmutable' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorImmutable.php',
|
||||||
'Carbon\\TranslatorStrongTypeInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php',
|
'Carbon\\TranslatorStrongTypeInterface' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php',
|
||||||
|
'Complex\\Complex' => __DIR__ . '/..' . '/markbaker/complex/classes/src/Complex.php',
|
||||||
|
'Complex\\Exception' => __DIR__ . '/..' . '/markbaker/complex/classes/src/Exception.php',
|
||||||
|
'Complex\\Functions' => __DIR__ . '/..' . '/markbaker/complex/classes/src/Functions.php',
|
||||||
|
'Complex\\Operations' => __DIR__ . '/..' . '/markbaker/complex/classes/src/Operations.php',
|
||||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||||
|
'Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php',
|
||||||
|
'Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php',
|
||||||
|
'Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php',
|
||||||
|
'Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\InvalidRegexPatternRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/InvalidRegexPatternRule.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchFlags' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchFlags.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchParameterOutTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchParameterOutTypeExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregMatchTypeSpecifyingExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregMatchTypeSpecifyingExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\PregReplaceCallbackClosureTypeExtension' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/PregReplaceCallbackClosureTypeExtension.php',
|
||||||
|
'Composer\\Pcre\\PHPStan\\UnsafeStrictGroupsCallRule' => __DIR__ . '/..' . '/composer/pcre/src/PHPStan/UnsafeStrictGroupsCallRule.php',
|
||||||
|
'Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php',
|
||||||
|
'Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php',
|
||||||
|
'Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php',
|
||||||
|
'Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php',
|
||||||
|
'Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php',
|
||||||
'Cron\\AbstractField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/AbstractField.php',
|
'Cron\\AbstractField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/AbstractField.php',
|
||||||
'Cron\\CronExpression' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/CronExpression.php',
|
'Cron\\CronExpression' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/CronExpression.php',
|
||||||
'Cron\\DayOfMonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php',
|
'Cron\\DayOfMonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php',
|
||||||
|
@ -686,6 +746,8 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'Cron\\MonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
|
'Cron\\MonthField' => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
|
||||||
'Database\\Factories\\UserFactory' => __DIR__ . '/../..' . '/database/factories/UserFactory.php',
|
'Database\\Factories\\UserFactory' => __DIR__ . '/../..' . '/database/factories/UserFactory.php',
|
||||||
'Database\\Seeders\\DatabaseSeeder' => __DIR__ . '/../..' . '/database/seeders/DatabaseSeeder.php',
|
'Database\\Seeders\\DatabaseSeeder' => __DIR__ . '/../..' . '/database/seeders/DatabaseSeeder.php',
|
||||||
|
'Database\\Seeders\\TemplateSeeder' => __DIR__ . '/../..' . '/database/seeders/TemplateSeeder.php',
|
||||||
|
'Database\\Seeders\\TopikSeeder' => __DIR__ . '/../..' . '/database/seeders/TopikSeeder.php',
|
||||||
'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
|
'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php',
|
||||||
'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
|
'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php',
|
||||||
'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
|
'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
|
||||||
|
@ -3282,6 +3344,21 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
||||||
'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
||||||
'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php',
|
'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php',
|
||||||
|
'Matrix\\Builder' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Builder.php',
|
||||||
|
'Matrix\\Decomposition\\Decomposition' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Decomposition/Decomposition.php',
|
||||||
|
'Matrix\\Decomposition\\LU' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Decomposition/LU.php',
|
||||||
|
'Matrix\\Decomposition\\QR' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Decomposition/QR.php',
|
||||||
|
'Matrix\\Div0Exception' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Div0Exception.php',
|
||||||
|
'Matrix\\Exception' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Exception.php',
|
||||||
|
'Matrix\\Functions' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions.php',
|
||||||
|
'Matrix\\Matrix' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Matrix.php',
|
||||||
|
'Matrix\\Operations' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations.php',
|
||||||
|
'Matrix\\Operators\\Addition' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/Addition.php',
|
||||||
|
'Matrix\\Operators\\DirectSum' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/DirectSum.php',
|
||||||
|
'Matrix\\Operators\\Division' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/Division.php',
|
||||||
|
'Matrix\\Operators\\Multiplication' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/Multiplication.php',
|
||||||
|
'Matrix\\Operators\\Operator' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/Operator.php',
|
||||||
|
'Matrix\\Operators\\Subtraction' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operators/Subtraction.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegration' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryPHPUnitIntegrationAssertPostConditions' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php',
|
||||||
'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php',
|
'Mockery\\Adapter\\Phpunit\\MockeryTestCase' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryTestCase.php',
|
||||||
|
@ -4555,6 +4632,519 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
|
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
|
||||||
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
||||||
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\ArrayEnabled' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ArrayEnabled.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\BinaryComparison' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/BinaryComparison.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\CalculationBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/CalculationBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\CalculationLocale' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/CalculationLocale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Category' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Category.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DAverage' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DAverage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DCount' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCount.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DCountA' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCountA.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DGet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DGet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DMax' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMax.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DMin' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMin.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DProduct' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DProduct.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DStDev' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDev.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DStDevP' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDevP.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DSum' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DSum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DVar' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DVarP' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVarP.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Database\\DatabaseAbstract' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Constants' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Current' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Current.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Date' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\DateParts' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateParts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\DateValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Days' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Days.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Days360' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Days360.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Difference' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Difference.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Helpers' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Month' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Month.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\NetworkDays' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/NetworkDays.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Time' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Time.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\TimeParts' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeParts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\TimeValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\Week' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Week.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\WorkDay' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/WorkDay.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\DateTimeExcel\\YearFrac' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/YearFrac.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentProcessor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentProcessor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\BranchPruner' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/BranchPruner.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\CyclicReferenceStack' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/CyclicReferenceStack.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\FormattedNumber' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Logger' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Logger.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\Operand' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\StructuredReference' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselI' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselJ' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselK' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselK.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselY' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselY.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BitWise' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BitWise.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Compare' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Compare.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Complex' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Complex.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ComplexFunctions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ComplexFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ComplexOperations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ComplexOperations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Constants' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertBinary' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBinary.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertDecimal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertDecimal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertHex' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertHex.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertOctal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertOctal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ConvertUOM' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertUOM.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\EngineeringValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/EngineeringValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\Erf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Erf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\ErfC' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ErfC.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\ExceptionHandler' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ExceptionHandler.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Amortization' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Amortization.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\CashFlowValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/CashFlowValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Cumulative' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Cumulative.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Interest' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Interest.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\InterestAndPrincipal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/InterestAndPrincipal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Constant\\Periodic\\Payments' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Payments.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Single' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Single.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Variable\\NonPeriodic' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/NonPeriodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\CashFlow\\Variable\\Periodic' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/Periodic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Constants' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Constants.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Coupons' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Coupons.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Depreciation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Depreciation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Dollar' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Dollar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\FinancialValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/FinancialValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Helpers' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\InterestRate' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/InterestRate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\AccruedInterest' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/AccruedInterest.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Price' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Price.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Rates' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Rates.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\SecurityValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/SecurityValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\Securities\\Yields' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Yields.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Financial\\TreasuryBill' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/TreasuryBill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FormulaParser' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaParser.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FormulaToken' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaToken.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\FunctionArray' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FunctionArray.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Functions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Functions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\ErrorValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/ErrorValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\ExcelError' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/ExcelError.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Information\\Value' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/Value.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\ExcelArrayPseudoFunctions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/ExcelArrayPseudoFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\MakeMatrix' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/MakeMatrix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Internal\\WildcardMatch' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Internal/WildcardMatch.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Boolean' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Boolean.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Conditional' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Logical\\Operations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Logical/Operations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Address' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Address.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\ChooseRowsEtc' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/ChooseRowsEtc.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\ExcelMatch' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/ExcelMatch.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Filter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Filter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Formula' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Formula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\HLookup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/HLookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Helpers' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Hyperlink' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Hyperlink.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Indirect' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Indirect.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Lookup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Lookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\LookupBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/LookupBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\LookupRefValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/LookupRefValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Matrix' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Matrix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Offset' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Offset.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\RowColumnInformation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Selection' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Selection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Sort' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Sort.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\Unique' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/Unique.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\LookupRef\\VLookup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef/VLookup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Absolute' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Absolute.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Angle' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Angle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Arabic' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Arabic.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Base' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Base.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Ceiling' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Ceiling.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Combinations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Combinations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Exp' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Exp.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Factorial' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Factorial.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Floor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Floor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Gcd' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Gcd.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Helpers' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\IntClass' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/IntClass.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Lcm' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Lcm.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Logarithms' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Logarithms.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\MatrixFunctions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/MatrixFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Operations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Operations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Random' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Random.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Roman' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Roman.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Round' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Round.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\SeriesSum' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/SeriesSum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sign' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sign.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sqrt' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sqrt.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Subtotal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Subtotal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Sum' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Sum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\SumSquares' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/SumSquares.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cosecant' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cosecant.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cosine' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cosine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Cotangent' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Cotangent.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Secant' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Secant.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Sine' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Sine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trig\\Tangent' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trig/Tangent.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\MathTrig\\Trunc' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/MathTrig/Trunc.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\AggregateBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/AggregateBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Averages' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Averages.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Averages\\Mean' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Averages/Mean.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Conditional' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Confidence' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Confidence.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Counts' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Counts.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Deviations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Deviations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Beta' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Beta.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Binomial' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Binomial.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\ChiSquared' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/ChiSquared.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\DistributionValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/DistributionValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Exponential' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Exponential.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\F' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/F.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Fisher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Fisher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Gamma' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Gamma.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\GammaBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/GammaBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\HyperGeometric' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/HyperGeometric.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\LogNormal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/LogNormal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\NewtonRaphson' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/NewtonRaphson.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Normal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Normal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Poisson' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Poisson.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\StandardNormal' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/StandardNormal.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\StudentT' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/StudentT.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Distributions\\Weibull' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Distributions/Weibull.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\MaxMinBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/MaxMinBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Maximum' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Maximum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Minimum' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Minimum.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Percentiles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Percentiles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Permutations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Permutations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Size' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Size.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\StandardDeviations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/StandardDeviations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Standardize' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Standardize.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\StatisticalValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/StatisticalValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Trends' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Trends.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\VarianceBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/VarianceBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Statistical\\Variances' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Statistical/Variances.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\CaseConvert' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/CaseConvert.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\CharacterConvert' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/CharacterConvert.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Concatenate' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Concatenate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Extract' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Extract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Format' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Format.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Helpers' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Helpers.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Replace' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Replace.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Search' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Search.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Text' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Text.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\TextData\\Trim' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/TextData/Trim.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Token\\Stack' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Token/Stack.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Calculation\\Web\\Service' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Web/Service.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\CellReferenceHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/CellReferenceHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AddressHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AddressHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AddressRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AddressRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\AdvancedValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/AdvancedValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Cell' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Cell.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\CellAddress' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/CellAddress.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\CellRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/CellRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\ColumnRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/ColumnRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Coordinate' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataType' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataType.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataValidation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataValidation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DataValidator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DataValidator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\Hyperlink' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Hyperlink.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\IValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\IgnoredErrors' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IgnoredErrors.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\RowRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/RowRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Cell\\StringValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/StringValueBinder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Axis' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Axis.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\AxisText' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/AxisText.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Chart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\ChartColor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/ChartColor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeries' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeries.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeriesValues' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeriesValues.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\GridLines' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/GridLines.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Layout' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Layout.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Legend' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Legend.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\PlotArea' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/PlotArea.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\IRenderer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/IRenderer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\JpGraph' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraph.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\JpGraphRendererBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/JpGraphRendererBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Renderer\\MtJpGraphRenderer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Renderer/MtJpGraphRenderer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\Title' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Title.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Chart\\TrendLine' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/TrendLine.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Cells' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Cells.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\CellsFactory' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/CellsFactory.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Memory\\SimpleCache1' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Memory/SimpleCache1.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Collection\\Memory\\SimpleCache3' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Collection/Memory/SimpleCache3.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Comment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Comment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\DefinedName' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/DefinedName.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Document\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Document\\Security' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Security.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\HashTable' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/HashTable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Dimension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Dimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Downloader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Downloader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Handler' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Handler.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Html' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Sample' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Sample.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\Size' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Size.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Helper\\TextGrid' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/TextGrid.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\IComparable' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IComparable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\IOFactory' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\NamedFormula' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/NamedFormula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\NamedRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/NamedRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\BaseReader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/BaseReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Csv' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Csv.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Csv\\Delimiter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Csv/Delimiter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\DefaultReadFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/DefaultReadFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\PageSetup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Gnumeric\\Styles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Gnumeric/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Html' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\IReadFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/IReadFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\IReader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/IReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\BaseLoader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/BaseLoader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\DefinedNames' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/DefinedNames.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\FormulaTranslator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/FormulaTranslator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\PageSettings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/PageSettings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Ods\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Ods/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Security\\XmlScanner' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Security/XmlScanner.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Slk' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Slk.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\XlsBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/XlsBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Biff5' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Biff5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Biff8' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Biff8.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BIFF5' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BIFF5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BIFF8' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BIFF8.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Color\\BuiltIn' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Color/BuiltIn.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ConditionalFormatting' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ConditionalFormatting.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\DataValidationHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/DataValidationHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ErrorCode' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ErrorCode.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Escher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\ListFunctions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/ListFunctions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\LoadSpreadsheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/LoadSpreadsheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\MD5' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/MD5.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Mappings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Mappings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\RC4' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/RC4.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\Border' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\CellAlignment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/CellAlignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\CellFont' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/CellFont.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xls\\Style\\FillPattern' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xls/Style/FillPattern.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\BaseParserClass' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/BaseParserClass.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Chart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\ColumnAndRowAttributes' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/ColumnAndRowAttributes.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\ConditionalStyles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\DataValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/DataValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Hyperlinks' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Hyperlinks.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Namespaces' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Namespaces.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\PageSetup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SharedFormula' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SharedFormula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViewOptions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViews' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViews.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Styles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\TableReader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/TableReader.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Theme' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\WorkbookView' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/WorkbookView.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\DataValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/DataValidations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\PageSettings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/PageSettings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Properties.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Alignment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Alignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Border' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Fill' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Fill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\Font' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\NumberFormat' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/NumberFormat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style\\StyleBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style/StyleBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\ReferenceHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/ReferenceHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\ITextElement' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/ITextElement.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\RichText' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/RichText.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\Run' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/Run.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\RichText\\TextElement' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/RichText/TextElement.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Settings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Settings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\CodePage' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/CodePage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Date' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Drawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer\\SpgrContainer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer/SpgrContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DgContainer\\SpgrContainer\\SpContainer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer\\BSE' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Escher\\DggContainer\\BstoreContainer\\BSE\\Blip' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\File' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Font' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\IntOrFloat' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/IntOrFloat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLERead' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLERead.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\ChainedBlockStream' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/ChainedBlockStream.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS\\File' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS/File.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\PPS\\Root' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/PPS/Root.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\PasswordHasher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/PasswordHasher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\StringHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/StringHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\TimeZone' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/TimeZone.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\BestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/BestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\ExponentialBestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/ExponentialBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\LinearBestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/LinearBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\LogarithmicBestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/LogarithmicBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\PolynomialBestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\PowerBestFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/PowerBestFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Trend\\Trend' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Trend/Trend.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\XMLWriter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/XMLWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Shared\\Xls' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Spreadsheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Spreadsheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Alignment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Alignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Border' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Border.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Borders' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Borders.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Color' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Color.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Conditional' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Conditional.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\CellMatcher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\CellStyleAssessor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalColorScale' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalColorScale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalDataBar' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalDataBar.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalDataBarExtension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalDataBarExtension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalFormatValueObject' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalFormatValueObject.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\ConditionalFormattingRuleExtension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalFormattingRuleExtension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\StyleMerger' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Blanks' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\CellValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\DateValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Duplicates' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Errors' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\Expression' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\TextValue' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\WizardAbstract' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\ConditionalFormatting\\Wizard\\WizardInterface' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Fill' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Fill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Font' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\BaseFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/BaseFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\DateFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/DateFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Formatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Formatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\FractionFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/FractionFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\NumberFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/NumberFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\PercentageFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/PercentageFormatter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Accounting' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Accounting.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Currency' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Currency.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\CurrencyBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/CurrencyBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\CurrencyNegative' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/CurrencyNegative.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Date' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Date.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTime' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTime.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTimeWizard' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTimeWizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Duration' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Duration.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Locale' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Locale.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Number' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Number.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\NumberBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/NumberBase.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Percentage' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Percentage.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Scientific' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Scientific.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Time' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Time.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Wizard' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Wizard.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Protection' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Protection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\RgbTint' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/RgbTint.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Style\\Supervisor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Supervisor.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Theme' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column\\Rule' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column/Rule.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFit.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\BaseDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/BaseDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\CellIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/CellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Column' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnCellIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnCellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnDimension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnDimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ColumnIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ColumnIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Dimension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Dimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Drawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Drawing\\Shadow' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Drawing/Shadow.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooterDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooterDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Iterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Iterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\MemoryDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/MemoryDrawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageBreak' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageBreak.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageMargins' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageMargins.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageSetup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageSetup.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Pane' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Pane.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\ProtectedRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/ProtectedRange.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Protection' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Protection.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Row' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Row.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowCellIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowCellIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowDimension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowDimension.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\RowIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowIterator.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\SheetView' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/SheetView.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\Column' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/Column.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\TableDxfsStyle' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/TableDxfsStyle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Table\\TableStyle' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Table/TableStyle.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Validations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Validations.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Worksheet\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\BaseWriter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Csv' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Csv.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Exception.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Html' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Html.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\IWriter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/IWriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\AutoFilters' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/AutoFilters.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Cell\\Comment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Cell/Comment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Cell\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Cell/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Content' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Content.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Formula' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Formula.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Meta' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Meta.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\MetaInf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/MetaInf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Mimetype' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Mimetype.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\NamedExpressions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/NamedExpressions.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Settings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Settings.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Styles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Styles.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\Thumbnails' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/Thumbnails.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Ods\\WriterPart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods/WriterPart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Dompdf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Dompdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Mpdf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Pdf\\Tcpdf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Tcpdf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\BIFFwriter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/BIFFwriter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\CellDataValidation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/CellDataValidation.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\ConditionalHelper' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/ConditionalHelper.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\ErrorCode' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/ErrorCode.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Escher' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Escher.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Font' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Font.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Parser' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Parser.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellAlignment' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellAlignment.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellBorder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellBorder.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Style\\CellFill' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Style/CellFill.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Workbook' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Workbook.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Xf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Xf.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/AutoFilter.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Chart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Chart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Comments' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Comments.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\ContentTypes' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DefinedNames' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DocProps' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DocProps.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Drawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Drawing.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\FunctionPrefix' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/FunctionPrefix.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Metadata' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Metadata.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Rels' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Rels.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsRibbon' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsRibbon.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsVBA' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsVBA.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\StringTable' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/StringTable.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Style.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Table' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Table.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Theme' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Theme.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream0' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream0.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream2' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream2.php',
|
||||||
|
'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream3' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream3.php',
|
||||||
'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php',
|
'PhpOption\\LazyOption' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/LazyOption.php',
|
||||||
'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php',
|
'PhpOption\\None' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/None.php',
|
||||||
'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php',
|
'PhpOption\\Option' => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption/Option.php',
|
||||||
|
@ -6688,6 +7278,33 @@ class ComposerStaticInit9c491b8531eec05ba41a11d9276a5749
|
||||||
'Whoops\\Util\\Misc' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/Misc.php',
|
'Whoops\\Util\\Misc' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/Misc.php',
|
||||||
'Whoops\\Util\\SystemFacade' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
'Whoops\\Util\\SystemFacade' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
|
||||||
'Whoops\\Util\\TemplateHelper' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
'Whoops\\Util\\TemplateHelper' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
|
||||||
|
'ZipStream\\CentralDirectoryFileHeader' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/CentralDirectoryFileHeader.php',
|
||||||
|
'ZipStream\\CompressionMethod' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/CompressionMethod.php',
|
||||||
|
'ZipStream\\DataDescriptor' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/DataDescriptor.php',
|
||||||
|
'ZipStream\\EndOfCentralDirectory' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/EndOfCentralDirectory.php',
|
||||||
|
'ZipStream\\Exception' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception.php',
|
||||||
|
'ZipStream\\Exception\\DosTimeOverflowException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/DosTimeOverflowException.php',
|
||||||
|
'ZipStream\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/FileNotFoundException.php',
|
||||||
|
'ZipStream\\Exception\\FileNotReadableException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/FileNotReadableException.php',
|
||||||
|
'ZipStream\\Exception\\FileSizeIncorrectException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/FileSizeIncorrectException.php',
|
||||||
|
'ZipStream\\Exception\\OverflowException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/OverflowException.php',
|
||||||
|
'ZipStream\\Exception\\ResourceActionException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/ResourceActionException.php',
|
||||||
|
'ZipStream\\Exception\\SimulationFileUnknownException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/SimulationFileUnknownException.php',
|
||||||
|
'ZipStream\\Exception\\StreamNotReadableException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/StreamNotReadableException.php',
|
||||||
|
'ZipStream\\Exception\\StreamNotSeekableException' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Exception/StreamNotSeekableException.php',
|
||||||
|
'ZipStream\\File' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/File.php',
|
||||||
|
'ZipStream\\GeneralPurposeBitFlag' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/GeneralPurposeBitFlag.php',
|
||||||
|
'ZipStream\\LocalFileHeader' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/LocalFileHeader.php',
|
||||||
|
'ZipStream\\OperationMode' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/OperationMode.php',
|
||||||
|
'ZipStream\\PackField' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/PackField.php',
|
||||||
|
'ZipStream\\Time' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Time.php',
|
||||||
|
'ZipStream\\Version' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Version.php',
|
||||||
|
'ZipStream\\Zip64\\DataDescriptor' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Zip64/DataDescriptor.php',
|
||||||
|
'ZipStream\\Zip64\\EndOfCentralDirectory' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Zip64/EndOfCentralDirectory.php',
|
||||||
|
'ZipStream\\Zip64\\EndOfCentralDirectoryLocator' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Zip64/EndOfCentralDirectoryLocator.php',
|
||||||
|
'ZipStream\\Zip64\\ExtendedInformationExtraField' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Zip64/ExtendedInformationExtraField.php',
|
||||||
|
'ZipStream\\ZipStream' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/ZipStream.php',
|
||||||
|
'ZipStream\\Zs\\ExtendedInformationExtraField' => __DIR__ . '/..' . '/maennchen/zipstream-php/src/Zs/ExtendedInformationExtraField.php',
|
||||||
'voku\\helper\\ASCII' => __DIR__ . '/..' . '/voku/portable-ascii/src/voku/helper/ASCII.php',
|
'voku\\helper\\ASCII' => __DIR__ . '/..' . '/voku/portable-ascii/src/voku/helper/ASCII.php',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,88 @@
|
||||||
],
|
],
|
||||||
"install-path": "../carbonphp/carbon-doctrine-types"
|
"install-path": "../carbonphp/carbon-doctrine-types"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "composer/pcre",
|
||||||
|
"version": "3.3.2",
|
||||||
|
"version_normalized": "3.3.2.0",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"time": "2024-11-12T16:29:46+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"phpstan": {
|
||||||
|
"includes": [
|
||||||
|
"extension.neon"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"installation-source": "dist",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"install-path": "./pcre"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "dflydev/dot-access-data",
|
"name": "dflydev/dot-access-data",
|
||||||
"version": "v3.0.3",
|
"version": "v3.0.3",
|
||||||
|
@ -2347,6 +2429,200 @@
|
||||||
],
|
],
|
||||||
"install-path": "../league/mime-type-detection"
|
"install-path": "../league/mime-type-detection"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "maennchen/zipstream-php",
|
||||||
|
"version": "3.1.2",
|
||||||
|
"version_normalized": "3.1.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/maennchen/ZipStream-PHP.git",
|
||||||
|
"reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f",
|
||||||
|
"reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"php-64bit": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"brianium/paratest": "^7.7",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.16",
|
||||||
|
"guzzlehttp/guzzle": "^7.5",
|
||||||
|
"mikey179/vfsstream": "^1.6",
|
||||||
|
"php-coveralls/php-coveralls": "^2.5",
|
||||||
|
"phpunit/phpunit": "^11.0",
|
||||||
|
"vimeo/psalm": "^6.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"guzzlehttp/psr7": "^2.4",
|
||||||
|
"psr/http-message": "^2.0"
|
||||||
|
},
|
||||||
|
"time": "2025-01-27T12:07:53+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "dist",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"ZipStream\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Paul Duncan",
|
||||||
|
"email": "pabs@pablotron.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jonatan Männchen",
|
||||||
|
"email": "jonatan@maennchen.ch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jesse Donat",
|
||||||
|
"email": "donatj@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "András Kolesár",
|
||||||
|
"email": "kolesar@kolesar.hu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
|
||||||
|
"keywords": [
|
||||||
|
"stream",
|
||||||
|
"zip"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
|
||||||
|
"source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/maennchen",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"install-path": "../maennchen/zipstream-php"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markbaker/complex",
|
||||||
|
"version": "3.0.2",
|
||||||
|
"version_normalized": "3.0.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MarkBaker/PHPComplex.git",
|
||||||
|
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
|
||||||
|
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"time": "2022-12-06T16:21:08+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "dist",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Complex\\": "classes/src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"email": "mark@lange.demon.co.uk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Class for working with complex numbers",
|
||||||
|
"homepage": "https://github.com/MarkBaker/PHPComplex",
|
||||||
|
"keywords": [
|
||||||
|
"complex",
|
||||||
|
"mathematics"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
|
||||||
|
"source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
|
||||||
|
},
|
||||||
|
"install-path": "../markbaker/complex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markbaker/matrix",
|
||||||
|
"version": "3.0.1",
|
||||||
|
"version_normalized": "3.0.1.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MarkBaker/PHPMatrix.git",
|
||||||
|
"reference": "728434227fe21be27ff6d86621a1b13107a2562c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
|
||||||
|
"reference": "728434227fe21be27ff6d86621a1b13107a2562c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpdocumentor/phpdocumentor": "2.*",
|
||||||
|
"phploc/phploc": "^4.0",
|
||||||
|
"phpmd/phpmd": "2.*",
|
||||||
|
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
|
||||||
|
"sebastian/phpcpd": "^4.0",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"time": "2022-12-02T22:17:43+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "dist",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Matrix\\": "classes/src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"email": "mark@demon-angel.eu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Class for working with matrices",
|
||||||
|
"homepage": "https://github.com/MarkBaker/PHPMatrix",
|
||||||
|
"keywords": [
|
||||||
|
"mathematics",
|
||||||
|
"matrix",
|
||||||
|
"vector"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
|
||||||
|
"source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
|
||||||
|
},
|
||||||
|
"install-path": "../markbaker/matrix"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "mockery/mockery",
|
"name": "mockery/mockery",
|
||||||
"version": "1.6.12",
|
"version": "1.6.12",
|
||||||
|
@ -3238,6 +3514,115 @@
|
||||||
},
|
},
|
||||||
"install-path": "../phar-io/version"
|
"install-path": "../phar-io/version"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "phpoffice/phpspreadsheet",
|
||||||
|
"version": "4.3.1",
|
||||||
|
"version_normalized": "4.3.1.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
|
||||||
|
"reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/d0ac70d610fb62ccad38c2696569ae1ad42acc70",
|
||||||
|
"reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"composer/pcre": "^1||^2||^3",
|
||||||
|
"ext-ctype": "*",
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-fileinfo": "*",
|
||||||
|
"ext-gd": "*",
|
||||||
|
"ext-iconv": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"ext-xml": "*",
|
||||||
|
"ext-xmlreader": "*",
|
||||||
|
"ext-xmlwriter": "*",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"maennchen/zipstream-php": "^2.1 || ^3.0",
|
||||||
|
"markbaker/complex": "^3.0",
|
||||||
|
"markbaker/matrix": "^3.0",
|
||||||
|
"php": "^8.1",
|
||||||
|
"psr/http-client": "^1.0",
|
||||||
|
"psr/http-factory": "^1.0",
|
||||||
|
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "dev-main",
|
||||||
|
"dompdf/dompdf": "^2.0 || ^3.0",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.2",
|
||||||
|
"mitoteam/jpgraph": "^10.3",
|
||||||
|
"mpdf/mpdf": "^8.1.1",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3",
|
||||||
|
"phpstan/phpstan": "^1.1 || ^2.0",
|
||||||
|
"phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0",
|
||||||
|
"phpstan/phpstan-phpunit": "^1.0 || ^2.0",
|
||||||
|
"phpunit/phpunit": "^10.5",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7",
|
||||||
|
"tecnickcom/tcpdf": "^6.5"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
|
||||||
|
"ext-intl": "PHP Internationalization Functions",
|
||||||
|
"mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
|
||||||
|
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
|
||||||
|
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
|
||||||
|
},
|
||||||
|
"time": "2025-05-26T18:51:08+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "dist",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Maarten Balliauw",
|
||||||
|
"homepage": "https://blog.maartenballiauw.be"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"homepage": "https://markbakeruk.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Franck Lefevre",
|
||||||
|
"homepage": "https://rootslabs.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Erik Tilt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Adrien Crivelli"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
|
||||||
|
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
|
||||||
|
"keywords": [
|
||||||
|
"OpenXML",
|
||||||
|
"excel",
|
||||||
|
"gnumeric",
|
||||||
|
"ods",
|
||||||
|
"php",
|
||||||
|
"spreadsheet",
|
||||||
|
"xls",
|
||||||
|
"xlsx"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
|
||||||
|
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/4.3.1"
|
||||||
|
},
|
||||||
|
"install-path": "../phpoffice/phpspreadsheet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "phpoption/phpoption",
|
"name": "phpoption/phpoption",
|
||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
'name' => 'laravel/laravel',
|
'name' => 'laravel/laravel',
|
||||||
'pretty_version' => 'dev-main',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => 'dev-main',
|
'version' => 'dev-main',
|
||||||
'reference' => 'a14ca7a2bbdae008ccc614383e1e4c9aad16b079',
|
'reference' => '37930bdfc4b6cef010b37139c571a4818e290b0c',
|
||||||
'type' => 'project',
|
'type' => 'project',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
@ -28,6 +28,15 @@
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
|
'composer/pcre' => array(
|
||||||
|
'pretty_version' => '3.3.2',
|
||||||
|
'version' => '3.3.2.0',
|
||||||
|
'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/./pcre',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
'cordoval/hamcrest-php' => array(
|
'cordoval/hamcrest-php' => array(
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
'replaced' => array(
|
'replaced' => array(
|
||||||
|
@ -382,7 +391,7 @@
|
||||||
'laravel/laravel' => array(
|
'laravel/laravel' => array(
|
||||||
'pretty_version' => 'dev-main',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => 'dev-main',
|
'version' => 'dev-main',
|
||||||
'reference' => 'a14ca7a2bbdae008ccc614383e1e4c9aad16b079',
|
'reference' => '37930bdfc4b6cef010b37139c571a4818e290b0c',
|
||||||
'type' => 'project',
|
'type' => 'project',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
@ -496,6 +505,33 @@
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
|
'maennchen/zipstream-php' => array(
|
||||||
|
'pretty_version' => '3.1.2',
|
||||||
|
'version' => '3.1.2.0',
|
||||||
|
'reference' => 'aeadcf5c412332eb426c0f9b4485f6accba2a99f',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../maennchen/zipstream-php',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
|
'markbaker/complex' => array(
|
||||||
|
'pretty_version' => '3.0.2',
|
||||||
|
'version' => '3.0.2.0',
|
||||||
|
'reference' => '95c56caa1cf5c766ad6d65b6344b807c1e8405b9',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../markbaker/complex',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
|
'markbaker/matrix' => array(
|
||||||
|
'pretty_version' => '3.0.1',
|
||||||
|
'version' => '3.0.1.0',
|
||||||
|
'reference' => '728434227fe21be27ff6d86621a1b13107a2562c',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../markbaker/matrix',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
'mockery/mockery' => array(
|
'mockery/mockery' => array(
|
||||||
'pretty_version' => '1.6.12',
|
'pretty_version' => '1.6.12',
|
||||||
'version' => '1.6.12.0',
|
'version' => '1.6.12.0',
|
||||||
|
@ -601,6 +637,15 @@
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
|
'phpoffice/phpspreadsheet' => array(
|
||||||
|
'pretty_version' => '4.3.1',
|
||||||
|
'version' => '4.3.1.0',
|
||||||
|
'reference' => 'd0ac70d610fb62ccad38c2696569ae1ad42acc70',
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../phpoffice/phpspreadsheet',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
'phpoption/phpoption' => array(
|
'phpoption/phpoption' => array(
|
||||||
'pretty_version' => '1.9.3',
|
'pretty_version' => '1.9.3',
|
||||||
'version' => '1.9.3.0',
|
'version' => '1.9.3.0',
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (C) 2021 Composer
|
||||||
|
|
||||||
|
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.
|
|
@ -0,0 +1,189 @@
|
||||||
|
composer/pcre
|
||||||
|
=============
|
||||||
|
|
||||||
|
PCRE wrapping library that offers type-safe `preg_*` replacements.
|
||||||
|
|
||||||
|
This library gives you a way to ensure `preg_*` functions do not fail silently, returning
|
||||||
|
unexpected `null`s that may not be handled.
|
||||||
|
|
||||||
|
As of 3.0 this library enforces [`PREG_UNMATCHED_AS_NULL`](#preg_unmatched_as_null) usage
|
||||||
|
for all matching and replaceCallback functions, [read more below](#preg_unmatched_as_null)
|
||||||
|
to understand the implications.
|
||||||
|
|
||||||
|
It thus makes it easier to work with static analysis tools like PHPStan or Psalm as it
|
||||||
|
simplifies and reduces the possible return values from all the `preg_*` functions which
|
||||||
|
are quite packed with edge cases. As of v2.2.0 / v3.2.0 the library also comes with a
|
||||||
|
[PHPStan extension](#phpstan-extension) for parsing regular expressions and giving you even better output types.
|
||||||
|
|
||||||
|
This library is a thin wrapper around `preg_*` functions with [some limitations](#restrictions--limitations).
|
||||||
|
If you are looking for a richer API to handle regular expressions have a look at
|
||||||
|
[rawr/t-regx](https://packagist.org/packages/rawr/t-regx) instead.
|
||||||
|
|
||||||
|
[](https://github.com/composer/pcre/actions)
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Install the latest version with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer require composer/pcre
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
* PHP 7.4.0 is required for 3.x versions
|
||||||
|
* PHP 7.2.0 is required for 2.x versions
|
||||||
|
* PHP 5.3.2 is required for 1.x versions
|
||||||
|
|
||||||
|
|
||||||
|
Basic usage
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Instead of:
|
||||||
|
|
||||||
|
```php
|
||||||
|
if (preg_match('{fo+}', $string, $matches)) { ... }
|
||||||
|
if (preg_match('{fo+}', $string, $matches, PREG_OFFSET_CAPTURE)) { ... }
|
||||||
|
if (preg_match_all('{fo+}', $string, $matches)) { ... }
|
||||||
|
$newString = preg_replace('{fo+}', 'bar', $string);
|
||||||
|
$newString = preg_replace_callback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string);
|
||||||
|
$newString = preg_replace_callback_array(['{fo+}' => fn ($match) => strtoupper($match[0])], $string);
|
||||||
|
$filtered = preg_grep('{[a-z]}', $elements);
|
||||||
|
$array = preg_split('{[a-z]+}', $string);
|
||||||
|
```
|
||||||
|
|
||||||
|
You can now call these on the `Preg` class:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
|
||||||
|
if (Preg::match('{fo+}', $string, $matches)) { ... }
|
||||||
|
if (Preg::matchWithOffsets('{fo+}', $string, $matches)) { ... }
|
||||||
|
if (Preg::matchAll('{fo+}', $string, $matches)) { ... }
|
||||||
|
$newString = Preg::replace('{fo+}', 'bar', $string);
|
||||||
|
$newString = Preg::replaceCallback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string);
|
||||||
|
$newString = Preg::replaceCallbackArray(['{fo+}' => fn ($match) => strtoupper($match[0])], $string);
|
||||||
|
$filtered = Preg::grep('{[a-z]}', $elements);
|
||||||
|
$array = Preg::split('{[a-z]+}', $string);
|
||||||
|
```
|
||||||
|
|
||||||
|
The main difference is if anything fails to match/replace/.., it will throw a `Composer\Pcre\PcreException`
|
||||||
|
instead of returning `null` (or false in some cases), so you can now use the return values safely relying on
|
||||||
|
the fact that they can only be strings (for replace), ints (for match) or arrays (for grep/split).
|
||||||
|
|
||||||
|
Additionally the `Preg` class provides match methods that return `bool` rather than `int`, for stricter type safety
|
||||||
|
when the number of pattern matches is not useful:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
|
||||||
|
if (Preg::isMatch('{fo+}', $string, $matches)) // bool
|
||||||
|
if (Preg::isMatchAll('{fo+}', $string, $matches)) // bool
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally the `Preg` class provides a few `*StrictGroups` method variants that ensure match groups
|
||||||
|
are always present and thus non-nullable, making it easier to write type-safe code:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
|
||||||
|
// $matches is guaranteed to be an array of strings, if a subpattern does not match and produces a null it will throw
|
||||||
|
if (Preg::matchStrictGroups('{fo+}', $string, $matches))
|
||||||
|
if (Preg::matchAllStrictGroups('{fo+}', $string, $matches))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** This is generally safe to use as long as you do not have optional subpatterns (i.e. `(something)?`
|
||||||
|
or `(something)*` or branches with a `|` that result in some groups not being matched at all).
|
||||||
|
A subpattern that can match an empty string like `(.*)` is **not** optional, it will be present as an
|
||||||
|
empty string in the matches. A non-matching subpattern, even if optional like `(?:foo)?` will anyway not be present in
|
||||||
|
matches so it is also not a problem to use these with `*StrictGroups` methods.
|
||||||
|
|
||||||
|
If you would prefer a slightly more verbose usage, replacing by-ref arguments by result objects, you can use the `Regex` class:
|
||||||
|
|
||||||
|
```php
|
||||||
|
use Composer\Pcre\Regex;
|
||||||
|
|
||||||
|
// this is useful when you are just interested in knowing if something matched
|
||||||
|
// as it returns a bool instead of int(1/0) for match
|
||||||
|
$bool = Regex::isMatch('{fo+}', $string);
|
||||||
|
|
||||||
|
$result = Regex::match('{fo+}', $string);
|
||||||
|
if ($result->matched) { something($result->matches); }
|
||||||
|
|
||||||
|
$result = Regex::matchWithOffsets('{fo+}', $string);
|
||||||
|
if ($result->matched) { something($result->matches); }
|
||||||
|
|
||||||
|
$result = Regex::matchAll('{fo+}', $string);
|
||||||
|
if ($result->matched && $result->count > 3) { something($result->matches); }
|
||||||
|
|
||||||
|
$newString = Regex::replace('{fo+}', 'bar', $string)->result;
|
||||||
|
$newString = Regex::replaceCallback('{fo+}', function ($match) { return strtoupper($match[0]); }, $string)->result;
|
||||||
|
$newString = Regex::replaceCallbackArray(['{fo+}' => fn ($match) => strtoupper($match[0])], $string)->result;
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that `preg_grep` and `preg_split` are only callable via the `Preg` class as they do not have
|
||||||
|
complex return types warranting a specific result object.
|
||||||
|
|
||||||
|
See the [MatchResult](src/MatchResult.php), [MatchWithOffsetsResult](src/MatchWithOffsetsResult.php), [MatchAllResult](src/MatchAllResult.php),
|
||||||
|
[MatchAllWithOffsetsResult](src/MatchAllWithOffsetsResult.php), and [ReplaceResult](src/ReplaceResult.php) class sources for more details.
|
||||||
|
|
||||||
|
Restrictions / Limitations
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Due to type safety requirements a few restrictions are in place.
|
||||||
|
|
||||||
|
- matching using `PREG_OFFSET_CAPTURE` is made available via `matchWithOffsets` and `matchAllWithOffsets`.
|
||||||
|
You cannot pass the flag to `match`/`matchAll`.
|
||||||
|
- `Preg::split` will also reject `PREG_SPLIT_OFFSET_CAPTURE` and you should use `splitWithOffsets`
|
||||||
|
instead.
|
||||||
|
- `matchAll` rejects `PREG_SET_ORDER` as it also changes the shape of the returned matches. There
|
||||||
|
is no alternative provided as you can fairly easily code around it.
|
||||||
|
- `preg_filter` is not supported as it has a rather crazy API, most likely you should rather
|
||||||
|
use `Preg::grep` in combination with some loop and `Preg::replace`.
|
||||||
|
- `replace`, `replaceCallback` and `replaceCallbackArray` do not support an array `$subject`,
|
||||||
|
only simple strings.
|
||||||
|
- As of 2.0, the library always uses `PREG_UNMATCHED_AS_NULL` for matching, which offers [much
|
||||||
|
saner/more predictable results](#preg_unmatched_as_null). As of 3.0 the flag is also set for
|
||||||
|
`replaceCallback` and `replaceCallbackArray`.
|
||||||
|
|
||||||
|
#### PREG_UNMATCHED_AS_NULL
|
||||||
|
|
||||||
|
As of 2.0, this library always uses PREG_UNMATCHED_AS_NULL for all `match*` and `isMatch*`
|
||||||
|
functions. As of 3.0 it is also done for `replaceCallback` and `replaceCallbackArray`.
|
||||||
|
|
||||||
|
This means your matches will always contain all matching groups, either as null if unmatched
|
||||||
|
or as string if it matched.
|
||||||
|
|
||||||
|
The advantages in clarity and predictability are clearer if you compare the two outputs of
|
||||||
|
running this with and without PREG_UNMATCHED_AS_NULL in $flags:
|
||||||
|
|
||||||
|
```php
|
||||||
|
preg_match('/(a)(b)*(c)(d)*/', 'ac', $matches, $flags);
|
||||||
|
```
|
||||||
|
|
||||||
|
| no flag | PREG_UNMATCHED_AS_NULL |
|
||||||
|
| --- | --- |
|
||||||
|
| array (size=4) | array (size=5) |
|
||||||
|
| 0 => string 'ac' (length=2) | 0 => string 'ac' (length=2) |
|
||||||
|
| 1 => string 'a' (length=1) | 1 => string 'a' (length=1) |
|
||||||
|
| 2 => string '' (length=0) | 2 => null |
|
||||||
|
| 3 => string 'c' (length=1) | 3 => string 'c' (length=1) |
|
||||||
|
| | 4 => null |
|
||||||
|
| group 2 (any unmatched group preceding one that matched) is set to `''`. You cannot tell if it matched an empty string or did not match at all | group 2 is `null` when unmatched and a string if it matched, easy to check for |
|
||||||
|
| group 4 (any optional group without a matching one following) is missing altogether. So you have to check with `isset()`, but really you want `isset($m[4]) && $m[4] !== ''` for safety unless you are very careful to check that a non-optional group follows it | group 4 is always set, and null in this case as there was no match, easy to check for with `$m[4] !== null` |
|
||||||
|
|
||||||
|
PHPStan Extension
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
To use the PHPStan extension if you do not use `phpstan/extension-installer` you can include `vendor/composer/pcre/extension.neon` in your PHPStan config.
|
||||||
|
|
||||||
|
The extension provides much better type information for $matches as well as regex validation where possible.
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
composer/pcre is licensed under the MIT License, see the LICENSE file for details.
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"name": "composer/pcre",
|
||||||
|
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
|
||||||
|
"type": "library",
|
||||||
|
"license": "MIT",
|
||||||
|
"keywords": [
|
||||||
|
"pcre",
|
||||||
|
"regex",
|
||||||
|
"preg",
|
||||||
|
"regular expression"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jordi Boggiano",
|
||||||
|
"email": "j.boggiano@seld.be",
|
||||||
|
"homepage": "http://seld.be"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": "^7.4 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^8 || ^9",
|
||||||
|
"phpstan/phpstan": "^1.12 || ^2",
|
||||||
|
"phpstan/phpstan-strict-rules": "^1 || ^2"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"phpstan/phpstan": "<1.11.10"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Composer\\Pcre\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload-dev": {
|
||||||
|
"psr-4": {
|
||||||
|
"Composer\\Pcre\\": "tests"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "3.x-dev"
|
||||||
|
},
|
||||||
|
"phpstan": {
|
||||||
|
"includes": [
|
||||||
|
"extension.neon"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "@php vendor/bin/phpunit",
|
||||||
|
"phpstan": "@php phpstan analyse"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
# composer/pcre PHPStan extensions
|
||||||
|
#
|
||||||
|
# These can be reused by third party packages by including 'vendor/composer/pcre/extension.neon'
|
||||||
|
# in your phpstan config
|
||||||
|
|
||||||
|
services:
|
||||||
|
-
|
||||||
|
class: Composer\Pcre\PHPStan\PregMatchParameterOutTypeExtension
|
||||||
|
tags:
|
||||||
|
- phpstan.staticMethodParameterOutTypeExtension
|
||||||
|
-
|
||||||
|
class: Composer\Pcre\PHPStan\PregMatchTypeSpecifyingExtension
|
||||||
|
tags:
|
||||||
|
- phpstan.typeSpecifier.staticMethodTypeSpecifyingExtension
|
||||||
|
-
|
||||||
|
class: Composer\Pcre\PHPStan\PregReplaceCallbackClosureTypeExtension
|
||||||
|
tags:
|
||||||
|
- phpstan.staticMethodParameterClosureTypeExtension
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- Composer\Pcre\PHPStan\UnsafeStrictGroupsCallRule
|
||||||
|
- Composer\Pcre\PHPStan\InvalidRegexPatternRule
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchAllResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => list of matched strings
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, list<string|null>>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var 0|positive-int
|
||||||
|
*/
|
||||||
|
public $count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<int|string, list<string|null>> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
$this->count = $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchAllStrictGroupsResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => list of matched strings
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, list<string>>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var 0|positive-int
|
||||||
|
*/
|
||||||
|
public $count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<list<string>> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
$this->count = $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchAllWithOffsetsResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => list of matches, every match being a pair of string matched + offset in bytes (or -1 if no match)
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, list<array{string|null, int}>>
|
||||||
|
* @phpstan-var array<int|string, list<array{string|null, int<-1, max>}>>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var 0|positive-int
|
||||||
|
*/
|
||||||
|
public $count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<int|string, list<array{string|null, int}>> $matches
|
||||||
|
* @phpstan-param array<int|string, list<array{string|null, int<-1, max>}>> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
$this->count = $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => string matched
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, string|null>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<string|null> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchStrictGroupsResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => string matched
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, string>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<string> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class MatchWithOffsetsResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* An array of match group => pair of string matched + offset in bytes (or -1 if no match)
|
||||||
|
*
|
||||||
|
* @readonly
|
||||||
|
* @var array<int|string, array{string|null, int}>
|
||||||
|
* @phpstan-var array<int|string, array{string|null, int<-1, max>}>
|
||||||
|
*/
|
||||||
|
public $matches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
* @param array<array{string|null, int}> $matches
|
||||||
|
* @phpstan-param array<int|string, array{string|null, int<-1, max>}> $matches
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, array $matches)
|
||||||
|
{
|
||||||
|
$this->matches = $matches;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
use Composer\Pcre\Regex;
|
||||||
|
use Composer\Pcre\PcreException;
|
||||||
|
use Nette\Utils\RegexpException;
|
||||||
|
use Nette\Utils\Strings;
|
||||||
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\Expr\StaticCall;
|
||||||
|
use PhpParser\Node\Name\FullyQualified;
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Rules\Rule;
|
||||||
|
use PHPStan\Rules\RuleErrorBuilder;
|
||||||
|
use function in_array;
|
||||||
|
use function sprintf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy of PHPStan's RegularExpressionPatternRule
|
||||||
|
*
|
||||||
|
* @implements Rule<StaticCall>
|
||||||
|
*/
|
||||||
|
class InvalidRegexPatternRule implements Rule
|
||||||
|
{
|
||||||
|
public function getNodeType(): string
|
||||||
|
{
|
||||||
|
return StaticCall::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processNode(Node $node, Scope $scope): array
|
||||||
|
{
|
||||||
|
$patterns = $this->extractPatterns($node, $scope);
|
||||||
|
|
||||||
|
$errors = [];
|
||||||
|
foreach ($patterns as $pattern) {
|
||||||
|
$errorMessage = $this->validatePattern($pattern);
|
||||||
|
if ($errorMessage === null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$errors[] = RuleErrorBuilder::message(sprintf('Regex pattern is invalid: %s', $errorMessage))->identifier('regexp.pattern')->build();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
private function extractPatterns(StaticCall $node, Scope $scope): array
|
||||||
|
{
|
||||||
|
if (!$node->class instanceof FullyQualified) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
$isRegex = $node->class->toString() === Regex::class;
|
||||||
|
$isPreg = $node->class->toString() === Preg::class;
|
||||||
|
if (!$isRegex && !$isPreg) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if (!$node->name instanceof Node\Identifier || !Preg::isMatch('{^(match|isMatch|grep|replace|split)}', $node->name->name)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$functionName = $node->name->name;
|
||||||
|
if (!isset($node->getArgs()[0])) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$patternNode = $node->getArgs()[0]->value;
|
||||||
|
$patternType = $scope->getType($patternNode);
|
||||||
|
|
||||||
|
$patternStrings = [];
|
||||||
|
|
||||||
|
foreach ($patternType->getConstantStrings() as $constantStringType) {
|
||||||
|
if ($functionName === 'replaceCallbackArray') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$patternStrings[] = $constantStringType->getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($patternType->getConstantArrays() as $constantArrayType) {
|
||||||
|
if (
|
||||||
|
in_array($functionName, [
|
||||||
|
'replace',
|
||||||
|
'replaceCallback',
|
||||||
|
], true)
|
||||||
|
) {
|
||||||
|
foreach ($constantArrayType->getValueTypes() as $arrayKeyType) {
|
||||||
|
foreach ($arrayKeyType->getConstantStrings() as $constantString) {
|
||||||
|
$patternStrings[] = $constantString->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($functionName !== 'replaceCallbackArray') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($constantArrayType->getKeyTypes() as $arrayKeyType) {
|
||||||
|
foreach ($arrayKeyType->getConstantStrings() as $constantString) {
|
||||||
|
$patternStrings[] = $constantString->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $patternStrings;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validatePattern(string $pattern): ?string
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$msg = null;
|
||||||
|
$prev = set_error_handler(function (int $severity, string $message, string $file) use (&$msg): bool {
|
||||||
|
$msg = preg_replace("#^preg_match(_all)?\\(.*?\\): #", '', $message);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
if ($pattern === '') {
|
||||||
|
return 'Empty string is not a valid regular expression';
|
||||||
|
}
|
||||||
|
|
||||||
|
Preg::match($pattern, '');
|
||||||
|
if ($msg !== null) {
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
} catch (PcreException $e) {
|
||||||
|
if ($e->getCode() === PREG_INTERNAL_ERROR && $msg !== null) {
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
return preg_replace('{.*? failed executing ".*": }', '', $e->getMessage());
|
||||||
|
} finally {
|
||||||
|
restore_error_handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Type\ArrayType;
|
||||||
|
use PHPStan\Type\Constant\ConstantArrayType;
|
||||||
|
use PHPStan\Type\Constant\ConstantIntegerType;
|
||||||
|
use PHPStan\Type\IntersectionType;
|
||||||
|
use PHPStan\Type\TypeCombinator;
|
||||||
|
use PHPStan\Type\Type;
|
||||||
|
use PhpParser\Node\Arg;
|
||||||
|
use PHPStan\Type\Php\RegexArrayShapeMatcher;
|
||||||
|
use PHPStan\Type\TypeTraverser;
|
||||||
|
use PHPStan\Type\UnionType;
|
||||||
|
|
||||||
|
final class PregMatchFlags
|
||||||
|
{
|
||||||
|
static public function getType(?Arg $flagsArg, Scope $scope): ?Type
|
||||||
|
{
|
||||||
|
if ($flagsArg === null) {
|
||||||
|
return new ConstantIntegerType(PREG_UNMATCHED_AS_NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
$flagsType = $scope->getType($flagsArg->value);
|
||||||
|
|
||||||
|
$constantScalars = $flagsType->getConstantScalarValues();
|
||||||
|
if ($constantScalars === []) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$internalFlagsTypes = [];
|
||||||
|
foreach ($flagsType->getConstantScalarValues() as $constantScalarValue) {
|
||||||
|
if (!is_int($constantScalarValue)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$internalFlagsTypes[] = new ConstantIntegerType($constantScalarValue | PREG_UNMATCHED_AS_NULL);
|
||||||
|
}
|
||||||
|
return TypeCombinator::union(...$internalFlagsTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function removeNullFromMatches(Type $matchesType): Type
|
||||||
|
{
|
||||||
|
return TypeTraverser::map($matchesType, static function (Type $type, callable $traverse): Type {
|
||||||
|
if ($type instanceof UnionType || $type instanceof IntersectionType) {
|
||||||
|
return $traverse($type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($type instanceof ConstantArrayType) {
|
||||||
|
return new ConstantArrayType(
|
||||||
|
$type->getKeyTypes(),
|
||||||
|
array_map(static function (Type $valueType) use ($traverse): Type {
|
||||||
|
return $traverse($valueType);
|
||||||
|
}, $type->getValueTypes()),
|
||||||
|
$type->getNextAutoIndexes(),
|
||||||
|
[],
|
||||||
|
$type->isList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($type instanceof ArrayType) {
|
||||||
|
return new ArrayType($type->getKeyType(), $traverse($type->getItemType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return TypeCombinator::removeNull($type);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
use PhpParser\Node\Expr\StaticCall;
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Reflection\MethodReflection;
|
||||||
|
use PHPStan\Reflection\ParameterReflection;
|
||||||
|
use PHPStan\TrinaryLogic;
|
||||||
|
use PHPStan\Type\Php\RegexArrayShapeMatcher;
|
||||||
|
use PHPStan\Type\StaticMethodParameterOutTypeExtension;
|
||||||
|
use PHPStan\Type\Type;
|
||||||
|
|
||||||
|
final class PregMatchParameterOutTypeExtension implements StaticMethodParameterOutTypeExtension
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var RegexArrayShapeMatcher
|
||||||
|
*/
|
||||||
|
private $regexShapeMatcher;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
RegexArrayShapeMatcher $regexShapeMatcher
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->regexShapeMatcher = $regexShapeMatcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool
|
||||||
|
{
|
||||||
|
return
|
||||||
|
$methodReflection->getDeclaringClass()->getName() === Preg::class
|
||||||
|
&& in_array($methodReflection->getName(), [
|
||||||
|
'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups',
|
||||||
|
'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'
|
||||||
|
], true)
|
||||||
|
&& $parameter->getName() === 'matches';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getParameterOutTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type
|
||||||
|
{
|
||||||
|
$args = $methodCall->getArgs();
|
||||||
|
$patternArg = $args[0] ?? null;
|
||||||
|
$matchesArg = $args[2] ?? null;
|
||||||
|
$flagsArg = $args[3] ?? null;
|
||||||
|
|
||||||
|
if (
|
||||||
|
$patternArg === null || $matchesArg === null
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$flagsType = PregMatchFlags::getType($flagsArg, $scope);
|
||||||
|
if ($flagsType === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stripos($methodReflection->getName(), 'matchAll') !== false) {
|
||||||
|
return $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createMaybe(), $scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
use PhpParser\Node\Expr\StaticCall;
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Analyser\SpecifiedTypes;
|
||||||
|
use PHPStan\Analyser\TypeSpecifier;
|
||||||
|
use PHPStan\Analyser\TypeSpecifierAwareExtension;
|
||||||
|
use PHPStan\Analyser\TypeSpecifierContext;
|
||||||
|
use PHPStan\Reflection\MethodReflection;
|
||||||
|
use PHPStan\TrinaryLogic;
|
||||||
|
use PHPStan\Type\Constant\ConstantArrayType;
|
||||||
|
use PHPStan\Type\Php\RegexArrayShapeMatcher;
|
||||||
|
use PHPStan\Type\StaticMethodTypeSpecifyingExtension;
|
||||||
|
use PHPStan\Type\TypeCombinator;
|
||||||
|
use PHPStan\Type\Type;
|
||||||
|
|
||||||
|
final class PregMatchTypeSpecifyingExtension implements StaticMethodTypeSpecifyingExtension, TypeSpecifierAwareExtension
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var TypeSpecifier
|
||||||
|
*/
|
||||||
|
private $typeSpecifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var RegexArrayShapeMatcher
|
||||||
|
*/
|
||||||
|
private $regexShapeMatcher;
|
||||||
|
|
||||||
|
public function __construct(RegexArrayShapeMatcher $regexShapeMatcher)
|
||||||
|
{
|
||||||
|
$this->regexShapeMatcher = $regexShapeMatcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void
|
||||||
|
{
|
||||||
|
$this->typeSpecifier = $typeSpecifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClass(): string
|
||||||
|
{
|
||||||
|
return Preg::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isStaticMethodSupported(MethodReflection $methodReflection, StaticCall $node, TypeSpecifierContext $context): bool
|
||||||
|
{
|
||||||
|
return in_array($methodReflection->getName(), [
|
||||||
|
'match', 'isMatch', 'matchStrictGroups', 'isMatchStrictGroups',
|
||||||
|
'matchAll', 'isMatchAll', 'matchAllStrictGroups', 'isMatchAllStrictGroups'
|
||||||
|
], true)
|
||||||
|
&& !$context->null();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function specifyTypes(MethodReflection $methodReflection, StaticCall $node, Scope $scope, TypeSpecifierContext $context): SpecifiedTypes
|
||||||
|
{
|
||||||
|
$args = $node->getArgs();
|
||||||
|
$patternArg = $args[0] ?? null;
|
||||||
|
$matchesArg = $args[2] ?? null;
|
||||||
|
$flagsArg = $args[3] ?? null;
|
||||||
|
|
||||||
|
if (
|
||||||
|
$patternArg === null || $matchesArg === null
|
||||||
|
) {
|
||||||
|
return new SpecifiedTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
$flagsType = PregMatchFlags::getType($flagsArg, $scope);
|
||||||
|
if ($flagsType === null) {
|
||||||
|
return new SpecifiedTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stripos($methodReflection->getName(), 'matchAll') !== false) {
|
||||||
|
$matchedType = $this->regexShapeMatcher->matchAllExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
|
||||||
|
} else {
|
||||||
|
$matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createFromBoolean($context->true()), $scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($matchedType === null) {
|
||||||
|
return new SpecifiedTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
in_array($methodReflection->getName(), ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true)
|
||||||
|
) {
|
||||||
|
$matchedType = PregMatchFlags::removeNullFromMatches($matchedType);
|
||||||
|
}
|
||||||
|
|
||||||
|
$overwrite = false;
|
||||||
|
if ($context->false()) {
|
||||||
|
$overwrite = true;
|
||||||
|
$context = $context->negate();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @phpstan-ignore function.alreadyNarrowedType
|
||||||
|
if (method_exists('PHPStan\Analyser\SpecifiedTypes', 'setRootExpr')) {
|
||||||
|
$typeSpecifier = $this->typeSpecifier->create(
|
||||||
|
$matchesArg->value,
|
||||||
|
$matchedType,
|
||||||
|
$context,
|
||||||
|
$scope
|
||||||
|
)->setRootExpr($node);
|
||||||
|
|
||||||
|
return $overwrite ? $typeSpecifier->setAlwaysOverwriteTypes() : $typeSpecifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @phpstan-ignore arguments.count
|
||||||
|
return $this->typeSpecifier->create(
|
||||||
|
$matchesArg->value,
|
||||||
|
$matchedType,
|
||||||
|
$context,
|
||||||
|
// @phpstan-ignore argument.type
|
||||||
|
$overwrite,
|
||||||
|
$scope,
|
||||||
|
$node
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
use Composer\Pcre\Regex;
|
||||||
|
use PhpParser\Node\Expr\StaticCall;
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Reflection\MethodReflection;
|
||||||
|
use PHPStan\Reflection\Native\NativeParameterReflection;
|
||||||
|
use PHPStan\Reflection\ParameterReflection;
|
||||||
|
use PHPStan\TrinaryLogic;
|
||||||
|
use PHPStan\Type\ClosureType;
|
||||||
|
use PHPStan\Type\Constant\ConstantArrayType;
|
||||||
|
use PHPStan\Type\Php\RegexArrayShapeMatcher;
|
||||||
|
use PHPStan\Type\StaticMethodParameterClosureTypeExtension;
|
||||||
|
use PHPStan\Type\StringType;
|
||||||
|
use PHPStan\Type\TypeCombinator;
|
||||||
|
use PHPStan\Type\Type;
|
||||||
|
|
||||||
|
final class PregReplaceCallbackClosureTypeExtension implements StaticMethodParameterClosureTypeExtension
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var RegexArrayShapeMatcher
|
||||||
|
*/
|
||||||
|
private $regexShapeMatcher;
|
||||||
|
|
||||||
|
public function __construct(RegexArrayShapeMatcher $regexShapeMatcher)
|
||||||
|
{
|
||||||
|
$this->regexShapeMatcher = $regexShapeMatcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isStaticMethodSupported(MethodReflection $methodReflection, ParameterReflection $parameter): bool
|
||||||
|
{
|
||||||
|
return in_array($methodReflection->getDeclaringClass()->getName(), [Preg::class, Regex::class], true)
|
||||||
|
&& in_array($methodReflection->getName(), ['replaceCallback', 'replaceCallbackStrictGroups'], true)
|
||||||
|
&& $parameter->getName() === 'replacement';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTypeFromStaticMethodCall(MethodReflection $methodReflection, StaticCall $methodCall, ParameterReflection $parameter, Scope $scope): ?Type
|
||||||
|
{
|
||||||
|
$args = $methodCall->getArgs();
|
||||||
|
$patternArg = $args[0] ?? null;
|
||||||
|
$flagsArg = $args[5] ?? null;
|
||||||
|
|
||||||
|
if (
|
||||||
|
$patternArg === null
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$flagsType = PregMatchFlags::getType($flagsArg, $scope);
|
||||||
|
|
||||||
|
$matchesType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
|
||||||
|
if ($matchesType === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($methodReflection->getName() === 'replaceCallbackStrictGroups' && count($matchesType->getConstantArrays()) === 1) {
|
||||||
|
$matchesType = $matchesType->getConstantArrays()[0];
|
||||||
|
$matchesType = new ConstantArrayType(
|
||||||
|
$matchesType->getKeyTypes(),
|
||||||
|
array_map(static function (Type $valueType): Type {
|
||||||
|
if (count($valueType->getConstantArrays()) === 1) {
|
||||||
|
$valueTypeArray = $valueType->getConstantArrays()[0];
|
||||||
|
return new ConstantArrayType(
|
||||||
|
$valueTypeArray->getKeyTypes(),
|
||||||
|
array_map(static function (Type $valueType): Type {
|
||||||
|
return TypeCombinator::removeNull($valueType);
|
||||||
|
}, $valueTypeArray->getValueTypes()),
|
||||||
|
$valueTypeArray->getNextAutoIndexes(),
|
||||||
|
[],
|
||||||
|
$valueTypeArray->isList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return TypeCombinator::removeNull($valueType);
|
||||||
|
}, $matchesType->getValueTypes()),
|
||||||
|
$matchesType->getNextAutoIndexes(),
|
||||||
|
[],
|
||||||
|
$matchesType->isList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ClosureType(
|
||||||
|
[
|
||||||
|
new NativeParameterReflection($parameter->getName(), $parameter->isOptional(), $matchesType, $parameter->passedByReference(), $parameter->isVariadic(), $parameter->getDefaultValue()),
|
||||||
|
],
|
||||||
|
new StringType()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Composer\Pcre\PHPStan;
|
||||||
|
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
|
use Composer\Pcre\Regex;
|
||||||
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\Expr\StaticCall;
|
||||||
|
use PhpParser\Node\Name\FullyQualified;
|
||||||
|
use PHPStan\Analyser\Scope;
|
||||||
|
use PHPStan\Analyser\SpecifiedTypes;
|
||||||
|
use PHPStan\Rules\Rule;
|
||||||
|
use PHPStan\Rules\RuleErrorBuilder;
|
||||||
|
use PHPStan\TrinaryLogic;
|
||||||
|
use PHPStan\Type\ObjectType;
|
||||||
|
use PHPStan\Type\Type;
|
||||||
|
use PHPStan\Type\TypeCombinator;
|
||||||
|
use PHPStan\Type\Php\RegexArrayShapeMatcher;
|
||||||
|
use function sprintf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @implements Rule<StaticCall>
|
||||||
|
*/
|
||||||
|
final class UnsafeStrictGroupsCallRule implements Rule
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var RegexArrayShapeMatcher
|
||||||
|
*/
|
||||||
|
private $regexShapeMatcher;
|
||||||
|
|
||||||
|
public function __construct(RegexArrayShapeMatcher $regexShapeMatcher)
|
||||||
|
{
|
||||||
|
$this->regexShapeMatcher = $regexShapeMatcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNodeType(): string
|
||||||
|
{
|
||||||
|
return StaticCall::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processNode(Node $node, Scope $scope): array
|
||||||
|
{
|
||||||
|
if (!$node->class instanceof FullyQualified) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
$isRegex = $node->class->toString() === Regex::class;
|
||||||
|
$isPreg = $node->class->toString() === Preg::class;
|
||||||
|
if (!$isRegex && !$isPreg) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if (!$node->name instanceof Node\Identifier || !in_array($node->name->name, ['matchStrictGroups', 'isMatchStrictGroups', 'matchAllStrictGroups', 'isMatchAllStrictGroups'], true)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$args = $node->getArgs();
|
||||||
|
if (!isset($args[0])) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$patternArg = $args[0] ?? null;
|
||||||
|
if ($isPreg) {
|
||||||
|
if (!isset($args[2])) { // no matches set, skip as the matches won't be used anyway
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
$flagsArg = $args[3] ?? null;
|
||||||
|
} else {
|
||||||
|
$flagsArg = $args[2] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($patternArg === null) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$flagsType = PregMatchFlags::getType($flagsArg, $scope);
|
||||||
|
if ($flagsType === null) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$matchedType = $this->regexShapeMatcher->matchExpr($patternArg->value, $flagsType, TrinaryLogic::createYes(), $scope);
|
||||||
|
if ($matchedType === null) {
|
||||||
|
return [
|
||||||
|
RuleErrorBuilder::message(sprintf('The %s call is potentially unsafe as $matches\' type could not be inferred.', $node->name->name))
|
||||||
|
->identifier('composerPcre.maybeUnsafeStrictGroups')
|
||||||
|
->build(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($matchedType->getConstantArrays()) === 1) {
|
||||||
|
$matchedType = $matchedType->getConstantArrays()[0];
|
||||||
|
$nullableGroups = [];
|
||||||
|
foreach ($matchedType->getValueTypes() as $index => $type) {
|
||||||
|
if (TypeCombinator::containsNull($type)) {
|
||||||
|
$nullableGroups[] = $matchedType->getKeyTypes()[$index]->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\count($nullableGroups) > 0) {
|
||||||
|
return [
|
||||||
|
RuleErrorBuilder::message(sprintf(
|
||||||
|
'The %s call is unsafe as match group%s "%s" %s optional and may be null.',
|
||||||
|
$node->name->name,
|
||||||
|
\count($nullableGroups) > 1 ? 's' : '',
|
||||||
|
implode('", "', $nullableGroups),
|
||||||
|
\count($nullableGroups) > 1 ? 'are' : 'is'
|
||||||
|
))->identifier('composerPcre.unsafeStrictGroups')->build(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
class PcreException extends \RuntimeException
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $function
|
||||||
|
* @param string|string[] $pattern
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function fromFunction($function, $pattern)
|
||||||
|
{
|
||||||
|
$code = preg_last_error();
|
||||||
|
|
||||||
|
if (is_array($pattern)) {
|
||||||
|
$pattern = implode(', ', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new PcreException($function.'(): failed executing "'.$pattern.'": '.self::pcreLastErrorMessage($code), $code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $code
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private static function pcreLastErrorMessage($code)
|
||||||
|
{
|
||||||
|
if (function_exists('preg_last_error_msg')) {
|
||||||
|
return preg_last_error_msg();
|
||||||
|
}
|
||||||
|
|
||||||
|
$constants = get_defined_constants(true);
|
||||||
|
if (!isset($constants['pcre']) || !is_array($constants['pcre'])) {
|
||||||
|
return 'UNDEFINED_ERROR';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($constants['pcre'] as $const => $val) {
|
||||||
|
if ($val === $code && substr($const, -6) === '_ERROR') {
|
||||||
|
return $const;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'UNDEFINED_ERROR';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,430 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
class Preg
|
||||||
|
{
|
||||||
|
/** @internal */
|
||||||
|
public const ARRAY_MSG = '$subject as an array is not supported. You can use \'foreach\' instead.';
|
||||||
|
/** @internal */
|
||||||
|
public const INVALID_TYPE_MSG = '$subject must be a string, %s given.';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @return 0|1
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, string|null> $matches
|
||||||
|
*/
|
||||||
|
public static function match(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
self::checkOffsetCapture($flags, 'matchWithOffsets');
|
||||||
|
|
||||||
|
$result = preg_match($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL, $offset);
|
||||||
|
if ($result === false) {
|
||||||
|
throw PcreException::fromFunction('preg_match', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `match()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @return 0|1
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, string> $matches
|
||||||
|
*/
|
||||||
|
public static function matchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
$result = self::match($pattern, $subject, $matchesInternal, $flags, $offset);
|
||||||
|
$matches = self::enforceNonNullMatches($pattern, $matchesInternal, 'match');
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs preg_match with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_UNMATCHED_AS_NULL and PREG_OFFSET_CAPTURE are always set, no other flags are supported
|
||||||
|
* @return 0|1
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, array{string|null, int<-1, max>}> $matches
|
||||||
|
*/
|
||||||
|
public static function matchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
$result = preg_match($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL | PREG_OFFSET_CAPTURE, $offset);
|
||||||
|
if ($result === false) {
|
||||||
|
throw PcreException::fromFunction('preg_match', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @return 0|positive-int
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<string|null>> $matches
|
||||||
|
*/
|
||||||
|
public static function matchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
self::checkOffsetCapture($flags, 'matchAllWithOffsets');
|
||||||
|
self::checkSetOrder($flags);
|
||||||
|
|
||||||
|
$result = preg_match_all($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL, $offset);
|
||||||
|
if (!is_int($result)) { // PHP < 8 may return null, 8+ returns int|false
|
||||||
|
throw PcreException::fromFunction('preg_match_all', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `match()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @return 0|positive-int
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<string>> $matches
|
||||||
|
*/
|
||||||
|
public static function matchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
$result = self::matchAll($pattern, $subject, $matchesInternal, $flags, $offset);
|
||||||
|
$matches = self::enforceNonNullMatchAll($pattern, $matchesInternal, 'matchAll');
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs preg_match_all with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported
|
||||||
|
* @return 0|positive-int
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<array{string|null, int<-1, max>}>> $matches
|
||||||
|
*/
|
||||||
|
public static function matchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): int
|
||||||
|
{
|
||||||
|
self::checkSetOrder($flags);
|
||||||
|
|
||||||
|
$result = preg_match_all($pattern, $subject, $matches, $flags | PREG_UNMATCHED_AS_NULL | PREG_OFFSET_CAPTURE, $offset);
|
||||||
|
if (!is_int($result)) { // PHP < 8 may return null, 8+ returns int|false
|
||||||
|
throw PcreException::fromFunction('preg_match_all', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string|string[] $pattern
|
||||||
|
* @param string|string[] $replacement
|
||||||
|
* @param string $subject
|
||||||
|
* @param int $count Set by method
|
||||||
|
*
|
||||||
|
* @param-out int<0, max> $count
|
||||||
|
*/
|
||||||
|
public static function replace($pattern, $replacement, $subject, int $limit = -1, ?int &$count = null): string
|
||||||
|
{
|
||||||
|
if (!is_scalar($subject)) {
|
||||||
|
if (is_array($subject)) {
|
||||||
|
throw new \InvalidArgumentException(static::ARRAY_MSG);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject)));
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = preg_replace($pattern, $replacement, $subject, $limit, $count);
|
||||||
|
if ($result === null) {
|
||||||
|
throw PcreException::fromFunction('preg_replace', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string|string[] $pattern
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array<int|string, array{string|null, int<-1, max>}>): string) : callable(array<int|string, string|null>): string) $replacement
|
||||||
|
* @param string $subject
|
||||||
|
* @param int $count Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*
|
||||||
|
* @param-out int<0, max> $count
|
||||||
|
*/
|
||||||
|
public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string
|
||||||
|
{
|
||||||
|
if (!is_scalar($subject)) {
|
||||||
|
if (is_array($subject)) {
|
||||||
|
throw new \InvalidArgumentException(static::ARRAY_MSG);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject)));
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count, $flags | PREG_UNMATCHED_AS_NULL);
|
||||||
|
if ($result === null) {
|
||||||
|
throw PcreException::fromFunction('preg_replace_callback', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `replaceCallback()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param string $pattern
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array<int|string, array{string, int<0, max>}>): string) : callable(array<int|string, string>): string) $replacement
|
||||||
|
* @param string $subject
|
||||||
|
* @param int $count Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*
|
||||||
|
* @param-out int<0, max> $count
|
||||||
|
*/
|
||||||
|
public static function replaceCallbackStrictGroups(string $pattern, callable $replacement, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string
|
||||||
|
{
|
||||||
|
return self::replaceCallback($pattern, function (array $matches) use ($pattern, $replacement) {
|
||||||
|
return $replacement(self::enforceNonNullMatches($pattern, $matches, 'replaceCallback'));
|
||||||
|
}, $subject, $limit, $count, $flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (array<string, callable(array<int|string, array{string|null, int<-1, max>}>): string>) : array<string, callable(array<int|string, string|null>): string>) $pattern
|
||||||
|
* @param string $subject
|
||||||
|
* @param int $count Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*
|
||||||
|
* @param-out int<0, max> $count
|
||||||
|
*/
|
||||||
|
public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, ?int &$count = null, int $flags = 0): string
|
||||||
|
{
|
||||||
|
if (!is_scalar($subject)) {
|
||||||
|
if (is_array($subject)) {
|
||||||
|
throw new \InvalidArgumentException(static::ARRAY_MSG);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject)));
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = preg_replace_callback_array($pattern, $subject, $limit, $count, $flags | PREG_UNMATCHED_AS_NULL);
|
||||||
|
if ($result === null) {
|
||||||
|
$pattern = array_keys($pattern);
|
||||||
|
throw PcreException::fromFunction('preg_replace_callback_array', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int-mask<PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_OFFSET_CAPTURE> $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE
|
||||||
|
* @return list<string>
|
||||||
|
*/
|
||||||
|
public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array
|
||||||
|
{
|
||||||
|
if (($flags & PREG_SPLIT_OFFSET_CAPTURE) !== 0) {
|
||||||
|
throw new \InvalidArgumentException('PREG_SPLIT_OFFSET_CAPTURE is not supported as it changes the type of $matches, use splitWithOffsets() instead');
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = preg_split($pattern, $subject, $limit, $flags);
|
||||||
|
if ($result === false) {
|
||||||
|
throw PcreException::fromFunction('preg_split', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int-mask<PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_OFFSET_CAPTURE> $flags PREG_SPLIT_NO_EMPTY or PREG_SPLIT_DELIM_CAPTURE, PREG_SPLIT_OFFSET_CAPTURE is always set
|
||||||
|
* @return list<array{string, int}>
|
||||||
|
* @phpstan-return list<array{string, int<0, max>}>
|
||||||
|
*/
|
||||||
|
public static function splitWithOffsets(string $pattern, string $subject, int $limit = -1, int $flags = 0): array
|
||||||
|
{
|
||||||
|
$result = preg_split($pattern, $subject, $limit, $flags | PREG_SPLIT_OFFSET_CAPTURE);
|
||||||
|
if ($result === false) {
|
||||||
|
throw PcreException::fromFunction('preg_split', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @template T of string|\Stringable
|
||||||
|
* @param string $pattern
|
||||||
|
* @param array<T> $array
|
||||||
|
* @param int-mask<PREG_GREP_INVERT> $flags PREG_GREP_INVERT
|
||||||
|
* @return array<T>
|
||||||
|
*/
|
||||||
|
public static function grep(string $pattern, array $array, int $flags = 0): array
|
||||||
|
{
|
||||||
|
$result = preg_grep($pattern, $array, $flags);
|
||||||
|
if ($result === false) {
|
||||||
|
throw PcreException::fromFunction('preg_grep', $pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of match() which returns a bool instead of int
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, string|null> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) static::match($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `isMatch()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, string> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) self::matchStrictGroups($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of matchAll() which returns a bool instead of int
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<string|null>> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) static::matchAll($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `isMatchAll()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<string>> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) self::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of matchWithOffsets() which returns a bool instead of int
|
||||||
|
*
|
||||||
|
* Runs preg_match with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, array{string|null, int<-1, max>}> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) static::matchWithOffsets($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of matchAllWithOffsets() which returns a bool instead of int
|
||||||
|
*
|
||||||
|
* Runs preg_match_all with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param array<mixed> $matches Set by method
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*
|
||||||
|
* @param-out array<int|string, list<array{string|null, int<-1, max>}>> $matches
|
||||||
|
*/
|
||||||
|
public static function isMatchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) static::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkOffsetCapture(int $flags, string $useFunctionName): void
|
||||||
|
{
|
||||||
|
if (($flags & PREG_OFFSET_CAPTURE) !== 0) {
|
||||||
|
throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the type of $matches, use ' . $useFunctionName . '() instead');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkSetOrder(int $flags): void
|
||||||
|
{
|
||||||
|
if (($flags & PREG_SET_ORDER) !== 0) {
|
||||||
|
throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the type of $matches');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<int|string, string|null|array{string|null, int}> $matches
|
||||||
|
* @return array<int|string, string>
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*/
|
||||||
|
private static function enforceNonNullMatches(string $pattern, array $matches, string $variantMethod)
|
||||||
|
{
|
||||||
|
foreach ($matches as $group => $match) {
|
||||||
|
if (is_string($match) || (is_array($match) && is_string($match[0]))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var array<string> */
|
||||||
|
return $matches;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<int|string, list<string|null>> $matches
|
||||||
|
* @return array<int|string, list<string>>
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*/
|
||||||
|
private static function enforceNonNullMatchAll(string $pattern, array $matches, string $variantMethod)
|
||||||
|
{
|
||||||
|
foreach ($matches as $group => $groupMatches) {
|
||||||
|
foreach ($groupMatches as $match) {
|
||||||
|
if (null === $match) {
|
||||||
|
throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var array<int|string, list<string>> */
|
||||||
|
return $matches;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,176 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
class Regex
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
*/
|
||||||
|
public static function isMatch(string $pattern, string $subject, int $offset = 0): bool
|
||||||
|
{
|
||||||
|
return (bool) Preg::match($pattern, $subject, $matches, 0, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*/
|
||||||
|
public static function match(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchResult
|
||||||
|
{
|
||||||
|
self::checkOffsetCapture($flags, 'matchWithOffsets');
|
||||||
|
|
||||||
|
$count = Preg::match($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchResult($count, $matches);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `match()` which returns non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*/
|
||||||
|
public static function matchStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchStrictGroupsResult
|
||||||
|
{
|
||||||
|
// @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
|
||||||
|
$count = Preg::matchStrictGroups($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchStrictGroupsResult($count, $matches);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs preg_match with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported
|
||||||
|
*/
|
||||||
|
public static function matchWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchWithOffsetsResult
|
||||||
|
{
|
||||||
|
$count = Preg::matchWithOffsets($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchWithOffsetsResult($count, $matches);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
*/
|
||||||
|
public static function matchAll(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllResult
|
||||||
|
{
|
||||||
|
self::checkOffsetCapture($flags, 'matchAllWithOffsets');
|
||||||
|
self::checkSetOrder($flags);
|
||||||
|
|
||||||
|
$count = Preg::matchAll($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchAllResult($count, $matches);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `matchAll()` which returns non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL> $flags PREG_UNMATCHED_AS_NULL is always set, no other flags are supported
|
||||||
|
* @throws UnexpectedNullMatchException
|
||||||
|
*/
|
||||||
|
public static function matchAllStrictGroups(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllStrictGroupsResult
|
||||||
|
{
|
||||||
|
self::checkOffsetCapture($flags, 'matchAllWithOffsets');
|
||||||
|
self::checkSetOrder($flags);
|
||||||
|
|
||||||
|
// @phpstan-ignore composerPcre.maybeUnsafeStrictGroups
|
||||||
|
$count = Preg::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchAllStrictGroupsResult($count, $matches);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs preg_match_all with PREG_OFFSET_CAPTURE
|
||||||
|
*
|
||||||
|
* @param non-empty-string $pattern
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_UNMATCHED_AS_NULL and PREG_MATCH_OFFSET are always set, no other flags are supported
|
||||||
|
*/
|
||||||
|
public static function matchAllWithOffsets(string $pattern, string $subject, int $flags = 0, int $offset = 0): MatchAllWithOffsetsResult
|
||||||
|
{
|
||||||
|
self::checkSetOrder($flags);
|
||||||
|
|
||||||
|
$count = Preg::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset);
|
||||||
|
|
||||||
|
return new MatchAllWithOffsetsResult($count, $matches);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param string|string[] $pattern
|
||||||
|
* @param string|string[] $replacement
|
||||||
|
* @param string $subject
|
||||||
|
*/
|
||||||
|
public static function replace($pattern, $replacement, $subject, int $limit = -1): ReplaceResult
|
||||||
|
{
|
||||||
|
$result = Preg::replace($pattern, $replacement, $subject, $limit, $count);
|
||||||
|
|
||||||
|
return new ReplaceResult($count, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string|string[] $pattern
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array<int|string, array{string|null, int<-1, max>}>): string) : callable(array<int|string, string|null>): string) $replacement
|
||||||
|
* @param string $subject
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*/
|
||||||
|
public static function replaceCallback($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0): ReplaceResult
|
||||||
|
{
|
||||||
|
$result = Preg::replaceCallback($pattern, $replacement, $subject, $limit, $count, $flags);
|
||||||
|
|
||||||
|
return new ReplaceResult($count, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variant of `replaceCallback()` which outputs non-null matches (or throws)
|
||||||
|
*
|
||||||
|
* @param string $pattern
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (callable(array<int|string, array{string, int<0, max>}>): string) : callable(array<int|string, string>): string) $replacement
|
||||||
|
* @param string $subject
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*/
|
||||||
|
public static function replaceCallbackStrictGroups($pattern, callable $replacement, $subject, int $limit = -1, int $flags = 0): ReplaceResult
|
||||||
|
{
|
||||||
|
$result = Preg::replaceCallbackStrictGroups($pattern, $replacement, $subject, $limit, $count, $flags);
|
||||||
|
|
||||||
|
return new ReplaceResult($count, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ($flags is PREG_OFFSET_CAPTURE ? (array<string, callable(array<int|string, array{string|null, int<-1, max>}>): string>) : array<string, callable(array<int|string, string|null>): string>) $pattern
|
||||||
|
* @param string $subject
|
||||||
|
* @param int-mask<PREG_UNMATCHED_AS_NULL|PREG_OFFSET_CAPTURE> $flags PREG_OFFSET_CAPTURE is supported, PREG_UNMATCHED_AS_NULL is always set
|
||||||
|
*/
|
||||||
|
public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, int $flags = 0): ReplaceResult
|
||||||
|
{
|
||||||
|
$result = Preg::replaceCallbackArray($pattern, $subject, $limit, $count, $flags);
|
||||||
|
|
||||||
|
return new ReplaceResult($count, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkOffsetCapture(int $flags, string $useFunctionName): void
|
||||||
|
{
|
||||||
|
if (($flags & PREG_OFFSET_CAPTURE) !== 0) {
|
||||||
|
throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the return type, use '.$useFunctionName.'() instead');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkSetOrder(int $flags): void
|
||||||
|
{
|
||||||
|
if (($flags & PREG_SET_ORDER) !== 0) {
|
||||||
|
throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the return type');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
final class ReplaceResult
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var 0|positive-int
|
||||||
|
*/
|
||||||
|
public $count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $matched;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param 0|positive-int $count
|
||||||
|
*/
|
||||||
|
public function __construct(int $count, string $result)
|
||||||
|
{
|
||||||
|
$this->count = $count;
|
||||||
|
$this->matched = (bool) $count;
|
||||||
|
$this->result = $result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of composer/pcre.
|
||||||
|
*
|
||||||
|
* (c) Composer <https://github.com/composer>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Pcre;
|
||||||
|
|
||||||
|
class UnexpectedNullMatchException extends PcreException
|
||||||
|
{
|
||||||
|
public static function fromFunction($function, $pattern)
|
||||||
|
{
|
||||||
|
throw new \LogicException('fromFunction should not be called on '.self::class.', use '.PcreException::class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,10 @@ if (!(PHP_VERSION_ID >= 80200)) {
|
||||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PHP_INT_SIZE !== 8) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a 64-bit build of PHP.';
|
||||||
|
}
|
||||||
|
|
||||||
if ($issues) {
|
if ($issues) {
|
||||||
if (!headers_sent()) {
|
if (!headers_sent()) {
|
||||||
header('HTTP/1.1 500 Internal Server Error');
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
|
||||||
|
[*.{yml,md,xml}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.{rst,php}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[composer.json]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[composer.lock]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
|
@ -0,0 +1,6 @@
|
||||||
|
.gitignore text eol=lf
|
||||||
|
.gitattributes text eol=lf
|
||||||
|
*.md text eol=lf
|
||||||
|
*.php text eol=lf
|
||||||
|
*.yml text eol=lf
|
||||||
|
*.xml text eol=lf
|
|
@ -0,0 +1,132 @@
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||||
|
identity and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
- Demonstrating empathy and kindness toward other people
|
||||||
|
- Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
- Giving and gracefully accepting constructive feedback
|
||||||
|
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
- Focusing on what is best not just for us as individuals, but for the overall
|
||||||
|
community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
- The use of sexualized language or imagery, and sexual attention or advances of
|
||||||
|
any kind
|
||||||
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
- Public or private harassment
|
||||||
|
- Publishing others' private information, such as a physical or email address,
|
||||||
|
without their explicit permission
|
||||||
|
- Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at
|
||||||
|
jonatan@maennchen.ch.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series of
|
||||||
|
actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or permanent
|
||||||
|
ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||||
|
community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.1, available at
|
||||||
|
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by
|
||||||
|
[Mozilla's code of conduct enforcement ladder][mozilla coc].
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
[https://www.contributor-covenant.org/faq][faq]. Translations are available at
|
||||||
|
[https://www.contributor-covenant.org/translations][translations].
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||||
|
[mozilla coc]: https://github.com/mozilla/diversity
|
||||||
|
[faq]: https://www.contributor-covenant.org/faq
|
||||||
|
[translations]: https://www.contributor-covenant.org/translations
|
|
@ -0,0 +1,139 @@
|
||||||
|
# Contributing to ZipStream-PHP
|
||||||
|
|
||||||
|
## Welcome!
|
||||||
|
|
||||||
|
We look forward to your contributions! Here are some examples how you can
|
||||||
|
contribute:
|
||||||
|
|
||||||
|
- [Report a bug](https://github.com/maennchen/ZipStream-PHP/issues/new?labels=bug&template=BUG.md)
|
||||||
|
- [Propose a new feature](https://github.com/maennchen/ZipStream-PHP/issues/new?labels=enhancement&template=FEATURE.md)
|
||||||
|
- [Send a pull request](https://github.com/maennchen/ZipStream-PHP/pulls)
|
||||||
|
|
||||||
|
## We have a Code of Conduct
|
||||||
|
|
||||||
|
Please note that this project is released with a
|
||||||
|
[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this
|
||||||
|
project you agree to abide by its terms.
|
||||||
|
|
||||||
|
## Any contributions you make will be under the MIT License
|
||||||
|
|
||||||
|
When you submit code changes, your submissions are understood to be under the
|
||||||
|
same [MIT License](https://github.com/maennchen/ZipStream-PHP/blob/main/LICENSE)
|
||||||
|
that covers the project. By contributing to this project, you agree that your
|
||||||
|
contributions will be licensed under its MIT License.
|
||||||
|
|
||||||
|
## Write bug reports with detail, background, and sample code
|
||||||
|
|
||||||
|
In your bug report, please provide the following:
|
||||||
|
|
||||||
|
- A quick summary and/or background
|
||||||
|
- Steps to reproduce
|
||||||
|
- Be specific!
|
||||||
|
- Give sample code if you can.
|
||||||
|
- What you expected would happen
|
||||||
|
- What actually happens
|
||||||
|
- Notes (possibly including why you think this might be happening, or stuff you
|
||||||
|
- tried that didn't work)
|
||||||
|
|
||||||
|
Please do not report a bug for a version of ZIPStream-PHP that is no longer
|
||||||
|
supported (`< 3.0.0`). Please do not report a bug if you are using a version of
|
||||||
|
PHP that is not supported by the version of ZipStream-PHP you are using.
|
||||||
|
|
||||||
|
Please post code and output as text
|
||||||
|
([using proper markup](https://guides.github.com/features/mastering-markdown/)).
|
||||||
|
Do not post screenshots of code or output.
|
||||||
|
|
||||||
|
Please include the output of `composer info | sort`.
|
||||||
|
|
||||||
|
## Workflow for Pull Requests
|
||||||
|
|
||||||
|
1. Fork the repository.
|
||||||
|
2. Create your branch from `main` if you plan to implement new functionality or
|
||||||
|
change existing code significantly; create your branch from the oldest branch
|
||||||
|
that is affected by the bug if you plan to fix a bug.
|
||||||
|
3. Implement your change and add tests for it.
|
||||||
|
4. Ensure the test suite passes.
|
||||||
|
5. Ensure the code complies with our coding guidelines (see below).
|
||||||
|
6. Send that pull request!
|
||||||
|
|
||||||
|
Please make sure you have
|
||||||
|
[set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
|
||||||
|
for use with Git. Strings such as `silly nick name <root@localhost>` look really
|
||||||
|
stupid in the commit history of a project.
|
||||||
|
|
||||||
|
We encourage you to
|
||||||
|
[sign your Git commits with your GPG key](https://docs.github.com/en/github/authenticating-to-github/signing-commits).
|
||||||
|
|
||||||
|
Pull requests for new features must be based on the `main` branch.
|
||||||
|
|
||||||
|
We are trying to keep backwards compatibility breaks in ZipStream-PHP to a
|
||||||
|
minimum. Please take this into account when proposing changes.
|
||||||
|
|
||||||
|
Due to time constraints, we are not always able to respond as quickly as we
|
||||||
|
would like. Please do not take delays personal and feel free to remind us if you
|
||||||
|
feel that we forgot to respond.
|
||||||
|
|
||||||
|
## Coding Guidelines
|
||||||
|
|
||||||
|
This project comes with a configuration file (located at `/psalm.yml` in the
|
||||||
|
repository) that you can use to perform static analysis (with a focus on type
|
||||||
|
checking):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ .composer run test:lint
|
||||||
|
```
|
||||||
|
|
||||||
|
This project comes with a configuration file (located at
|
||||||
|
`/.php-cs-fixer.dist.php` in the repository) that you can use to (re)format your
|
||||||
|
source code for compliance with this project's coding guidelines:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer run format
|
||||||
|
```
|
||||||
|
|
||||||
|
Please understand that we will not accept a pull request when its changes
|
||||||
|
violate this project's coding guidelines.
|
||||||
|
|
||||||
|
## Using ZipStream-PHP from a Git checkout
|
||||||
|
|
||||||
|
The following commands can be used to perform the initial checkout of
|
||||||
|
ZipStream-PHP:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone git@github.com:maennchen/ZipStream-PHP.git
|
||||||
|
|
||||||
|
$ cd ZipStream-PHP
|
||||||
|
```
|
||||||
|
|
||||||
|
Install ZipStream-PHP's dependencies using [Composer](https://getcomposer.org/):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer install
|
||||||
|
$ composer run install:tools # Install phpDocumentor using phive
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running ZipStream-PHP's test suite
|
||||||
|
|
||||||
|
After following the steps shown above, ZipStream-PHP's test suite is run like
|
||||||
|
this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer run test:unit
|
||||||
|
```
|
||||||
|
|
||||||
|
There's some slow tests in the test suite that test the handling of big files in
|
||||||
|
the archives. To skip them use the following command instead:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer run test:unit:fast
|
||||||
|
```
|
||||||
|
|
||||||
|
## Generating ZipStream-PHP Documentation
|
||||||
|
|
||||||
|
To generate the documentation for the library, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ composer run docs:generate
|
||||||
|
```
|
||||||
|
|
||||||
|
The guide documentation pages can be found in the `/guides/` directory.
|
|
@ -0,0 +1 @@
|
||||||
|
github: maennchen
|
|
@ -0,0 +1,71 @@
|
||||||
|
name: 🐞 Bug Report
|
||||||
|
description: Something is broken?
|
||||||
|
labels: ["bug"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
- Create a discussion instead if you are looking for support:
|
||||||
|
https://github.com/maennchen/ZipStream-PHP/discussions
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: ZipStream-PHP version
|
||||||
|
placeholder: x.y.z
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: php-version
|
||||||
|
attributes:
|
||||||
|
label: PHP version
|
||||||
|
placeholder: x.y.z
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: constraints
|
||||||
|
attributes:
|
||||||
|
label: Constraints for Bug Report
|
||||||
|
options:
|
||||||
|
- label: |
|
||||||
|
I'm using a version of ZipStream that is currently supported:
|
||||||
|
https://github.com/maennchen/ZipStream-PHP#version-support
|
||||||
|
required: true
|
||||||
|
- label: |
|
||||||
|
I'm using a version of PHP that has active support:
|
||||||
|
https://www.php.net/supported-versions.php
|
||||||
|
required: true
|
||||||
|
- label: |
|
||||||
|
I'm using a version of PHP that is compatible with your used
|
||||||
|
ZipStream version.
|
||||||
|
required: true
|
||||||
|
- label: |
|
||||||
|
I'm using the latest release of the used ZipStream major version.
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: summary
|
||||||
|
attributes:
|
||||||
|
label: Summary
|
||||||
|
description: Provide a summary describing the problem you are experiencing.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: current-behaviour
|
||||||
|
attributes:
|
||||||
|
label: Current behavior
|
||||||
|
description: What is the current (buggy) behavior?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: reproduction
|
||||||
|
attributes:
|
||||||
|
label: How to reproduce
|
||||||
|
description: Provide steps to reproduce the bug.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behaviour
|
||||||
|
attributes:
|
||||||
|
label: Expected behavior
|
||||||
|
description: What was the expected (correct) behavior?
|
||||||
|
validations:
|
||||||
|
required: true
|
|
@ -0,0 +1,11 @@
|
||||||
|
name: 🎉 Feature Request
|
||||||
|
description: You have a neat idea that should be implemented?
|
||||||
|
labels: ["enhancement"]
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Provide a summary of the feature you would like to see implemented.
|
||||||
|
validations:
|
||||||
|
required: true
|
|
@ -0,0 +1,6 @@
|
||||||
|
Please go the the `Preview` tab and select the appropriate sub-template:
|
||||||
|
|
||||||
|
* [🐞 Failing Test](?expand=1&template=FAILING_TEST.md)
|
||||||
|
* [🐞 Bug Fix](?expand=1&template=FIX.md)
|
||||||
|
* [⚙ Improvement](?expand=1&template=IMPROVEMENT.md)
|
||||||
|
* [🎉 New Feature](?expand=1&template=NEW_FEATURE.md)
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!---
|
||||||
|
name: 🐞 Failing Test
|
||||||
|
about: You found a bug and have a failing test?
|
||||||
|
labels: bug, tests
|
||||||
|
--->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please do not send a pull request for an issue in a version of ZipStream-PHP
|
||||||
|
that is no longer supported.
|
||||||
|
See: https://github.com/maennchen/ZipStream-PHP#version-support
|
||||||
|
- Please target the oldest branch of ZipStream-PHP that is still supported and
|
||||||
|
where the test fails.
|
||||||
|
-->
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!---
|
||||||
|
name: 🐞 Bug Fix
|
||||||
|
about: You have a fix for a bug?
|
||||||
|
labels: bug
|
||||||
|
--->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please do not send a pull request for an issue in a version of ZipStream-PHP
|
||||||
|
that is no longer supported.
|
||||||
|
See: https://github.com/maennchen/ZipStream-PHP#version-support
|
||||||
|
- Please target the oldest branch of ZipStream-PHP that is still supported and
|
||||||
|
affected by this bug.
|
||||||
|
-->
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!---
|
||||||
|
name: ⚙ Improvement
|
||||||
|
about: You have some improvement to make ZipStream-PHP better?
|
||||||
|
labels: enhancement
|
||||||
|
--->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the `main` branch of ZipStream-PHP.
|
||||||
|
-->
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!---
|
||||||
|
name: 🎉 New Feature
|
||||||
|
about: You have implemented some neat idea that you want to make part of ZipStream-PHP?
|
||||||
|
labels: type/enhancement
|
||||||
|
--->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the `main` branch of ZipStream-PHP.
|
||||||
|
-->
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
[](https://github.com/ossf/oss-vulnerability-guide/blob/main/finder-guide.md)
|
||||||
|
[](https://github.com/maennchen/ZipStream-PHP/security/advisories/new)
|
||||||
|
[](mailto:jonatan@maennchen.ch)
|
||||||
|
|
||||||
|
This repository follows the
|
||||||
|
[OpenSSF Vulnerability Disclosure guide](https://github.com/ossf/oss-vulnerability-guide/tree/main).
|
||||||
|
You can learn more about it in the
|
||||||
|
[Finders Guide](https://github.com/ossf/oss-vulnerability-guide/blob/main/finder-guide.md).
|
||||||
|
|
||||||
|
Please report vulnerabilities via the
|
||||||
|
[GitHub Security Vulnerability Reporting](https://github.com/maennchen/ZipStream-PHP/security/advisories/new)
|
||||||
|
or via email to [`jonatan@maennchen.ch`](mailto:jonatan@maennchen.ch) if this does
|
||||||
|
not work for you.
|
||||||
|
|
||||||
|
Our vulnerability management team will respond within 3 working days of your
|
||||||
|
report. If the issue is confirmed as a vulnerability, we will open a Security
|
||||||
|
Advisory. This project follows a 90 day disclosure timeline.
|
||||||
|
|
||||||
|
If you have questions about reporting security issues, email the vulnerability
|
||||||
|
management team: [`jonatan@maennchen.ch`](mailto:jonatan@maennchen.ch)
|
|
@ -0,0 +1,15 @@
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "composer"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
groups:
|
||||||
|
github-actions:
|
||||||
|
applies-to: version-updates
|
||||||
|
patterns:
|
||||||
|
- "*"
|
|
@ -0,0 +1,14 @@
|
||||||
|
annotations:
|
||||||
|
- checks:
|
||||||
|
- fuzzing
|
||||||
|
reasons:
|
||||||
|
- reason: not-applicable # PHP is memory safe
|
||||||
|
- checks:
|
||||||
|
- packaging
|
||||||
|
reasons:
|
||||||
|
- reason: not-supported # Using Composer
|
||||||
|
- checks:
|
||||||
|
- signed-releases
|
||||||
|
reasons:
|
||||||
|
- reason: not-applicable # Releases are distributed via Composer
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
|
||||||
|
name: "Main Branch"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: "Test"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_test.yml
|
||||||
|
|
||||||
|
docs:
|
||||||
|
name: "Docs"
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_docs.yml
|
|
@ -0,0 +1,30 @@
|
||||||
|
on:
|
||||||
|
workflow_call: {}
|
||||||
|
|
||||||
|
name: "Dependabot"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
automerge_dependabot:
|
||||||
|
name: "Automerge PRs"
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- uses: fastify/github-action-merge-dependabot@c3bde0759d4f24db16f7b250b2122bc2df57e817 # v3.11.0
|
||||||
|
with:
|
||||||
|
github-token: ${{ github.token }}
|
||||||
|
use-github-auto-merge: true
|
||||||
|
# Major Updates need to be merged manually
|
||||||
|
target: minor
|
|
@ -0,0 +1,51 @@
|
||||||
|
on:
|
||||||
|
workflow_call: {}
|
||||||
|
|
||||||
|
name: "Documentation"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
name: "Generate"
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: SetUp PHP
|
||||||
|
id: setup-php
|
||||||
|
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
|
||||||
|
with:
|
||||||
|
php-version: "8.3"
|
||||||
|
tools: phive
|
||||||
|
- name: Cache Tools
|
||||||
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||||
|
id: cache
|
||||||
|
with:
|
||||||
|
path: ~/.phive
|
||||||
|
key: tools-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-${{ hashFiles('**/phars.xml') }}
|
||||||
|
restore-keys: |
|
||||||
|
tools-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
tools-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
tools-
|
||||||
|
- name: Install Tools
|
||||||
|
run: composer run install:tools
|
||||||
|
- name: Generate Docs
|
||||||
|
run: composer run docs:generate
|
||||||
|
- uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: docs
|
||||||
|
path: docs
|
||||||
|
- name: Package for GitHub Pages
|
||||||
|
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
|
||||||
|
with:
|
||||||
|
path: docs
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
releaseName:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
stable:
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
name: "Release"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create:
|
||||||
|
name: Create Release
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Create prerelease
|
||||||
|
if: ${{ !inputs.stable }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
gh release create \
|
||||||
|
--repo ${{ github.repository }} \
|
||||||
|
--title ${{ inputs.releaseName }} \
|
||||||
|
--prerelease \
|
||||||
|
--generate-notes \
|
||||||
|
${{ inputs.releaseName }}
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
|
if: ${{ inputs.stable }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
gh release create \
|
||||||
|
--repo ${{ github.repository }} \
|
||||||
|
--title ${{ inputs.releaseName }} \
|
||||||
|
--generate-notes \
|
||||||
|
${{ inputs.releaseName }}
|
||||||
|
|
||||||
|
upload_release:
|
||||||
|
name: "Upload"
|
||||||
|
|
||||||
|
needs: ["create"]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: write
|
||||||
|
attestations: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||||
|
with:
|
||||||
|
name: docs
|
||||||
|
path: docs
|
||||||
|
- run: |
|
||||||
|
tar -czvf docs.tar.gz docs
|
||||||
|
- name: "Attest Documentation"
|
||||||
|
id: attestation
|
||||||
|
uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
|
||||||
|
with:
|
||||||
|
subject-path: "docs.tar.gz"
|
||||||
|
- name: Copy Attestation
|
||||||
|
run: cp "$ATTESTATION" docs.tar.gz.sigstore
|
||||||
|
env:
|
||||||
|
ATTESTATION: "${{ steps.attestation.outputs.bundle-path }}"
|
||||||
|
- name: Upload
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
gh release upload --clobber "${{ github.ref_name }}" \
|
||||||
|
docs.tar.gz docs.tar.gz.sigstore
|
|
@ -0,0 +1,181 @@
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
|
||||||
|
name: "Test"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
phpunit:
|
||||||
|
name: PHPUnit (PHP ${{ matrix.php }} on ${{ matrix.os }})
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
continue-on-error: ${{ matrix.experimental }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php: ["8.2", "8.3", "8.4"]
|
||||||
|
os: [ubuntu-latest]
|
||||||
|
experimental: [false]
|
||||||
|
include:
|
||||||
|
- php: nightly
|
||||||
|
os: ubuntu-latest
|
||||||
|
experimental: true
|
||||||
|
- php: "8.4"
|
||||||
|
os: windows-latest
|
||||||
|
experimental: false
|
||||||
|
- php: "8.4"
|
||||||
|
os: macos-latest
|
||||||
|
experimental: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: SetUp PHP
|
||||||
|
id: setup-php
|
||||||
|
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
|
||||||
|
with:
|
||||||
|
php-version: "${{ matrix.php }}"
|
||||||
|
tools: phpunit
|
||||||
|
coverage: xdebug
|
||||||
|
extensions: xdebug,zip
|
||||||
|
- name: Get composer cache directory
|
||||||
|
id: composer-cache-common
|
||||||
|
if: "${{ runner.os != 'Windows' }}"
|
||||||
|
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
- name: Get composer cache directory
|
||||||
|
id: composer-cache-windows
|
||||||
|
if: "${{ runner.os == 'Windows' }}"
|
||||||
|
run: echo "dir=$(composer config cache-files-dir)" >> $env:GITHUB_OUTPUT
|
||||||
|
- name: Cache Deps
|
||||||
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||||
|
id: cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache-common.outputs.dir }}${{ steps.composer-cache-windows.outputs.dir }}
|
||||||
|
key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-
|
||||||
|
- name: Install Deps
|
||||||
|
if: matrix.php != 'nightly'
|
||||||
|
run: composer install --prefer-dist
|
||||||
|
- name: Install Deps (ignore PHP requirement)
|
||||||
|
if: matrix.php == 'nightly'
|
||||||
|
run: composer install --prefer-dist --ignore-platform-req=php+
|
||||||
|
- name: Run PHPUnit
|
||||||
|
run: composer run test:unit:cov
|
||||||
|
- name: Upload coverage results to Coveralls
|
||||||
|
env:
|
||||||
|
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
COVERALLS_PARALLEL: true
|
||||||
|
COVERALLS_FLAG_NAME: ${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}
|
||||||
|
run: composer run coverage:report
|
||||||
|
continue-on-error: ${{ matrix.experimental }}
|
||||||
|
|
||||||
|
mark_coverage_done:
|
||||||
|
needs: ["phpunit"]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Coveralls Finished
|
||||||
|
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.github_token }}
|
||||||
|
parallel-finished: true
|
||||||
|
|
||||||
|
psalm:
|
||||||
|
name: Run Psalm
|
||||||
|
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: SetUp PHP
|
||||||
|
id: setup-php
|
||||||
|
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
|
||||||
|
with:
|
||||||
|
php-version: "8.3"
|
||||||
|
- name: Get composer cache directory
|
||||||
|
id: composer-cache
|
||||||
|
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
- name: Cache Deps
|
||||||
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||||
|
id: cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-
|
||||||
|
- name: Install Deps
|
||||||
|
run: composer install --prefer-dist
|
||||||
|
- name: Run Psalm
|
||||||
|
run: composer run test:lint -- --report=results.sarif
|
||||||
|
- name: "Upload SARIF"
|
||||||
|
uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3
|
||||||
|
with:
|
||||||
|
sarif_file: results.sarif
|
||||||
|
|
||||||
|
php-cs:
|
||||||
|
name: Run PHP-CS
|
||||||
|
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: SetUp PHP
|
||||||
|
id: setup-php
|
||||||
|
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
|
||||||
|
with:
|
||||||
|
php-version: "8.3"
|
||||||
|
- name: Get composer cache directory
|
||||||
|
id: composer-cache
|
||||||
|
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
- name: Cache Deps
|
||||||
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||||
|
id: cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
|
key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
|
||||||
|
deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-${{ steps.setup-php.outputs.php-version }}-
|
||||||
|
deps-
|
||||||
|
- name: Install Deps
|
||||||
|
run: composer install --prefer-dist
|
||||||
|
- name: Run PHP-CS
|
||||||
|
run: composer run test:formatted
|
|
@ -0,0 +1,50 @@
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
workflow_dispatch: {}
|
||||||
|
|
||||||
|
name: "Pull Request"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: "Test"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_test.yml
|
||||||
|
|
||||||
|
docs:
|
||||||
|
name: "Docs"
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_docs.yml
|
||||||
|
|
||||||
|
dependabot:
|
||||||
|
name: "Dependabot"
|
||||||
|
|
||||||
|
if: ${{ github.actor == 'dependabot[bot]'}}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_dependabot.yml
|
||||||
|
|
||||||
|
dependency-review:
|
||||||
|
name: Dependency Review
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: 'Checkout Repository'
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: 'Dependency Review'
|
||||||
|
uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0
|
|
@ -0,0 +1,78 @@
|
||||||
|
# This workflow uses actions that are not certified by GitHub. They are provided
|
||||||
|
# by a third-party and are governed by separate terms of service, privacy
|
||||||
|
# policy, and support documentation.
|
||||||
|
|
||||||
|
name: Scorecard supply-chain security
|
||||||
|
on:
|
||||||
|
# For Branch-Protection check. Only the default branch is supported. See
|
||||||
|
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
|
||||||
|
branch_protection_rule:
|
||||||
|
# To guarantee Maintained check is occasionally updated. See
|
||||||
|
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
|
||||||
|
schedule:
|
||||||
|
- cron: '28 11 * * 3'
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
|
||||||
|
# Declare default permissions as read only.
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analysis:
|
||||||
|
name: Scorecard analysis
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
# Needed to upload the results to code-scanning dashboard.
|
||||||
|
security-events: write
|
||||||
|
# Needed to publish results and get a badge (see publish_results below).
|
||||||
|
id-token: write
|
||||||
|
# Uncomment the permissions below if installing in a private repository.
|
||||||
|
# contents: read
|
||||||
|
# actions: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: "Checkout code"
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: "Run analysis"
|
||||||
|
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
|
||||||
|
with:
|
||||||
|
results_file: results.sarif
|
||||||
|
results_format: sarif
|
||||||
|
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
|
||||||
|
# - you want to enable the Branch-Protection check on a *public* repository, or
|
||||||
|
# - you are installing Scorecard on a *private* repository
|
||||||
|
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
|
||||||
|
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
|
||||||
|
|
||||||
|
# Public repositories:
|
||||||
|
# - Publish results to OpenSSF REST API for easy access by consumers
|
||||||
|
# - Allows the repository to include the Scorecard badge.
|
||||||
|
# - See https://github.com/ossf/scorecard-action#publishing-results.
|
||||||
|
# For private repositories:
|
||||||
|
# - `publish_results` will always be set to `false`, regardless
|
||||||
|
# of the value entered here.
|
||||||
|
publish_results: true
|
||||||
|
|
||||||
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||||
|
# format to the repository Actions tab.
|
||||||
|
- name: "Upload artifact"
|
||||||
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
||||||
|
with:
|
||||||
|
name: SARIF file
|
||||||
|
path: results.sarif
|
||||||
|
retention-days: 5
|
||||||
|
|
||||||
|
# Upload the results to GitHub's code scanning dashboard (optional).
|
||||||
|
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
|
||||||
|
- name: "Upload to code-scanning"
|
||||||
|
uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5
|
||||||
|
with:
|
||||||
|
sarif_file: results.sarif
|
|
@ -0,0 +1,29 @@
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+"
|
||||||
|
|
||||||
|
name: "Beta Tag"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs:
|
||||||
|
name: "Docs"
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_docs.yml
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: "Release"
|
||||||
|
|
||||||
|
needs: ["docs"]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: write
|
||||||
|
attestations: write
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_release.yml
|
||||||
|
with:
|
||||||
|
releaseName: "${{ github.ref_name }}"
|
|
@ -0,0 +1,55 @@
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+"
|
||||||
|
|
||||||
|
name: "Stable Tag"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs:
|
||||||
|
name: "Docs"
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_docs.yml
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: "Release"
|
||||||
|
|
||||||
|
needs: ["docs"]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: write
|
||||||
|
attestations: write
|
||||||
|
|
||||||
|
uses: ./.github/workflows/part_release.yml
|
||||||
|
with:
|
||||||
|
releaseName: "${{ github.ref_name }}"
|
||||||
|
stable: true
|
||||||
|
|
||||||
|
deploy_pages:
|
||||||
|
name: "Deploy to GitHub Pages"
|
||||||
|
|
||||||
|
needs: ["release", "docs"]
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<phive xmlns="https://phar.io/phive">
|
||||||
|
<phar name="phpdocumentor" version="^3.3.1" installed="3.6.0" location="./tools/phpdocumentor" copy="false"/>
|
||||||
|
</phive>
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP-CS-Fixer config for ZipStream-PHP
|
||||||
|
* @author Nicolas CARPi <nico-git@deltablot.email>
|
||||||
|
* @copyright 2022 Nicolas CARPi
|
||||||
|
* @see https://github.com/maennchen/ZipStream-PHP
|
||||||
|
* @license MIT
|
||||||
|
* @package maennchen/ZipStream-PHP
|
||||||
|
*/
|
||||||
|
|
||||||
|
use PhpCsFixer\Config;
|
||||||
|
use PhpCsFixer\Finder;
|
||||||
|
use PhpCsFixer\Runner;
|
||||||
|
|
||||||
|
$finder = Finder::create()
|
||||||
|
->exclude('.github')
|
||||||
|
->exclude('.phpdoc')
|
||||||
|
->exclude('docs')
|
||||||
|
->exclude('tools')
|
||||||
|
->exclude('vendor')
|
||||||
|
->in(__DIR__);
|
||||||
|
|
||||||
|
$config = new Config();
|
||||||
|
return $config->setRules([
|
||||||
|
'@PER' => true,
|
||||||
|
'@PER:risky' => true,
|
||||||
|
'@PHP83Migration' => true,
|
||||||
|
'@PHP84Migration' => true,
|
||||||
|
'@PHPUnit84Migration:risky' => true,
|
||||||
|
'array_syntax' => ['syntax' => 'short'],
|
||||||
|
'class_attributes_separation' => true,
|
||||||
|
'declare_strict_types' => true,
|
||||||
|
'dir_constant' => true,
|
||||||
|
'is_null' => true,
|
||||||
|
'no_homoglyph_names' => true,
|
||||||
|
'no_null_property_initialization' => true,
|
||||||
|
'no_php4_constructor' => true,
|
||||||
|
'no_unused_imports' => true,
|
||||||
|
'no_useless_else' => true,
|
||||||
|
'non_printable_character' => true,
|
||||||
|
'ordered_imports' => true,
|
||||||
|
'ordered_class_elements' => true,
|
||||||
|
'php_unit_construct' => true,
|
||||||
|
'pow_to_exponentiation' => true,
|
||||||
|
'psr_autoloading' => true,
|
||||||
|
'random_api_migration' => true,
|
||||||
|
'return_assignment' => true,
|
||||||
|
'self_accessor' => true,
|
||||||
|
'semicolon_after_instruction' => true,
|
||||||
|
'short_scalar_cast' => true,
|
||||||
|
'simplified_null_return' => true,
|
||||||
|
'single_class_element_per_statement' => true,
|
||||||
|
'single_line_comment_style' => true,
|
||||||
|
'single_quote' => true,
|
||||||
|
'space_after_semicolon' => true,
|
||||||
|
'standardize_not_equals' => true,
|
||||||
|
'strict_param' => true,
|
||||||
|
'ternary_operator_spaces' => true,
|
||||||
|
'trailing_comma_in_multiline' => true,
|
||||||
|
'trim_array_spaces' => true,
|
||||||
|
'unary_operator_spaces' => true,
|
||||||
|
'global_namespace_import' => [
|
||||||
|
'import_classes' => true,
|
||||||
|
'import_functions' => true,
|
||||||
|
'import_constants' => true,
|
||||||
|
],
|
||||||
|
])
|
||||||
|
->setFinder($finder)
|
||||||
|
->setRiskyAllowed(true)
|
||||||
|
->setParallelConfig(Runner\Parallel\ParallelConfigFactory::detect());
|
|
@ -0,0 +1,15 @@
|
||||||
|
{% extends 'layout.html.twig' %}
|
||||||
|
|
||||||
|
{% set topMenu = {
|
||||||
|
"menu": [
|
||||||
|
{ "name": "Guides", "url": "https://maennchen.dev/ZipStream-PHP/guide/index.html"},
|
||||||
|
{ "name": "API", "url": "https://maennchen.dev/ZipStream-PHP/classes/ZipStream-ZipStream.html"},
|
||||||
|
{ "name": "Issues", "url": "https://github.com/maennchen/ZipStream-PHP/issues"},
|
||||||
|
],
|
||||||
|
"social": [
|
||||||
|
{ "iconClass": "fab fa-github", "url": "https://github.com/maennchen/ZipStream-PHP"},
|
||||||
|
{ "iconClass": "fas fa-envelope-open-text", "url": "https://github.com/maennchen/ZipStream-PHP/discussions"},
|
||||||
|
{ "iconClass": "fas fa-money-bill", "url": "https://github.com/sponsors/maennchen"},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
%}
|
|
@ -0,0 +1 @@
|
||||||
|
php 8.4.3
|
|
@ -0,0 +1,24 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (C) 2007-2009 Paul Duncan <pabs@pablotron.org>
|
||||||
|
Copyright (C) 2014 Jonatan Männchen <jonatan@maennchen.ch>
|
||||||
|
Copyright (C) 2014 Jesse G. Donat <donatj@gmail.com>
|
||||||
|
Copyright (C) 2018 Nicolas CARPi <nicolas.carpi@curie.fr>
|
||||||
|
|
||||||
|
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.
|
|
@ -0,0 +1,157 @@
|
||||||
|
# ZipStream-PHP
|
||||||
|
|
||||||
|
[](https://github.com/maennchen/ZipStream-PHP/actions/workflows/branch_main.yml)
|
||||||
|
[](https://coveralls.io/github/maennchen/ZipStream-PHP?branch=main)
|
||||||
|
[](https://packagist.org/packages/maennchen/zipstream-php)
|
||||||
|
[](https://packagist.org/packages/maennchen/zipstream-php)
|
||||||
|
[](https://www.bestpractices.dev/projects/9524)
|
||||||
|
[](https://scorecard.dev/viewer/?uri=github.com/maennchen/ZipStream-PHP)
|
||||||
|
|
||||||
|
## Unstable Branch
|
||||||
|
|
||||||
|
The `main` branch is not stable. Please see the
|
||||||
|
[releases](https://github.com/maennchen/ZipStream-PHP/releases) for a stable
|
||||||
|
version.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
A fast and simple streaming zip file downloader for PHP. Using this library will
|
||||||
|
save you from having to write the Zip to disk. You can directly send it to the
|
||||||
|
user, which is much faster. It can work with S3 buckets or any PSR7 Stream.
|
||||||
|
|
||||||
|
Please see the [LICENSE](LICENSE) file for licensing and warranty information.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Simply add a dependency on maennchen/zipstream-php to your project's
|
||||||
|
`composer.json` file if you use Composer to manage the dependencies of your
|
||||||
|
project. Use following command to add the package to your project's dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
composer require maennchen/zipstream-php
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
For detailed instructions, please check the
|
||||||
|
[Documentation](https://maennchen.github.io/ZipStream-PHP/).
|
||||||
|
|
||||||
|
```php
|
||||||
|
// Autoload the dependencies
|
||||||
|
require 'vendor/autoload.php';
|
||||||
|
|
||||||
|
// create a new zipstream object
|
||||||
|
$zip = new ZipStream\ZipStream(
|
||||||
|
outputName: 'example.zip',
|
||||||
|
|
||||||
|
// enable output of HTTP headers
|
||||||
|
sendHttpHeaders: true,
|
||||||
|
);
|
||||||
|
|
||||||
|
// create a file named 'hello.txt'
|
||||||
|
$zip->addFile(
|
||||||
|
fileName: 'hello.txt',
|
||||||
|
data: 'This is the contents of hello.txt',
|
||||||
|
);
|
||||||
|
|
||||||
|
// add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
|
||||||
|
$zip->addFileFromPath(
|
||||||
|
fileName: 'some_image.jpg',
|
||||||
|
path: 'path/to/image.jpg',
|
||||||
|
);
|
||||||
|
|
||||||
|
// finish the zip stream
|
||||||
|
$zip->finish();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Upgrade to version 3.1.2
|
||||||
|
|
||||||
|
- Minimum PHP Version: `8.2`
|
||||||
|
|
||||||
|
## Upgrade to version 3.0.0
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Minimum PHP Version: `8.1`
|
||||||
|
- Only 64bit Architecture is supported.
|
||||||
|
- The class `ZipStream\Option\Method` has been replaced with the enum
|
||||||
|
`ZipStream\CompressionMethod`.
|
||||||
|
- Most clases have been flagged as `@internal` and should not be used from the
|
||||||
|
outside.
|
||||||
|
If you're using internal resources to extend this library, please open an
|
||||||
|
issue so that a clean interface can be added & published.
|
||||||
|
The externally available classes & enums are:
|
||||||
|
- `ZipStream\CompressionMethod`
|
||||||
|
- `ZipStream\Exception*`
|
||||||
|
- `ZipStream\ZipStream`
|
||||||
|
|
||||||
|
### Archive Options
|
||||||
|
|
||||||
|
- The class `ZipStream\Option\Archive` has been replaced in favor of named
|
||||||
|
arguments in the `ZipStream\ZipStream` constuctor.
|
||||||
|
- The archive options `largeFileSize` & `largeFileMethod` has been removed. If
|
||||||
|
you want different `compressionMethods` based on the file size, you'll have to
|
||||||
|
implement this yourself.
|
||||||
|
- The archive option `httpHeaderCallback` changed the type from `callable` to
|
||||||
|
`Closure`.
|
||||||
|
- The archive option `zeroHeader` has been replaced with the option
|
||||||
|
`defaultEnableZeroHeader` and can be overridden for every file. Its default
|
||||||
|
value changed from `false` to `true`.
|
||||||
|
- The archive option `statFiles` was removed since the library no longer checks
|
||||||
|
filesizes this way.
|
||||||
|
- The archive option `deflateLevel` has been replaced with the option
|
||||||
|
`defaultDeflateLevel` and can be overridden for every file.
|
||||||
|
- The first argument (`name`) of the `ZipStream\ZipStream` constuctor has been
|
||||||
|
replaced with the named argument `outputName`.
|
||||||
|
- Headers are now also sent if the `outputName` is empty. If you do not want to
|
||||||
|
automatically send http headers, set `sendHttpHeaders` to `false`.
|
||||||
|
|
||||||
|
### File Options
|
||||||
|
|
||||||
|
- The class `ZipStream\Option\File` has been replaced in favor of named
|
||||||
|
arguments in the `ZipStream\ZipStream->addFile*` functions.
|
||||||
|
- The file option `method` has been renamed to `compressionMethod`.
|
||||||
|
- The file option `time` has been renamed to `lastModificationDateTime`.
|
||||||
|
- The file option `size` has been renamed to `maxSize`.
|
||||||
|
|
||||||
|
## Upgrade to version 2.0.0
|
||||||
|
|
||||||
|
https://github.com/maennchen/ZipStream-PHP/tree/2.0.0#upgrade-to-version-200
|
||||||
|
|
||||||
|
## Upgrade to version 1.0.0
|
||||||
|
|
||||||
|
https://github.com/maennchen/ZipStream-PHP/tree/2.0.0#upgrade-to-version-100
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
ZipStream-PHP is a collaborative project. Please take a look at the
|
||||||
|
[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) file.
|
||||||
|
|
||||||
|
## Version Support
|
||||||
|
|
||||||
|
Versions are supported according to the table below.
|
||||||
|
|
||||||
|
Please do not open any pull requests contradicting the current version support
|
||||||
|
status.
|
||||||
|
|
||||||
|
Careful: Always check the `README` on `main` for up-to-date information.
|
||||||
|
|
||||||
|
| Version | New Features | Bugfixes | Security |
|
||||||
|
|---------|--------------|----------|----------|
|
||||||
|
| *3* | ✓ | ✓ | ✓ |
|
||||||
|
| *2* | ✗ | ✗ | ✓ |
|
||||||
|
| *1* | ✗ | ✗ | ✗ |
|
||||||
|
| *0* | ✗ | ✗ | ✗ |
|
||||||
|
|
||||||
|
This library aligns itself with the PHP core support. New features and bugfixes
|
||||||
|
will only target PHP versions according to their current status.
|
||||||
|
|
||||||
|
See: https://www.php.net/supported-versions.php
|
||||||
|
|
||||||
|
## About the Authors
|
||||||
|
|
||||||
|
- Paul Duncan <pabs@pablotron.org> - https://pablotron.org/
|
||||||
|
- Jonatan Männchen <jonatan@maennchen.ch> - https://maennchen.dev
|
||||||
|
- Jesse G. Donat <donatj@gmail.com> - https://donatstudios.com
|
||||||
|
- Nicolas CARPi <nico-git@deltablot.email> - https://www.deltablot.com
|
||||||
|
- Nik Barham <nik@brokencube.co.uk> - https://www.brokencube.co.uk
|
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
"name": "maennchen/zipstream-php",
|
||||||
|
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
|
||||||
|
"keywords": ["zip", "stream"],
|
||||||
|
"type": "library",
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": [{
|
||||||
|
"name": "Paul Duncan",
|
||||||
|
"email": "pabs@pablotron.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jonatan Männchen",
|
||||||
|
"email": "jonatan@maennchen.ch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jesse Donat",
|
||||||
|
"email": "donatj@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "András Kolesár",
|
||||||
|
"email": "kolesar@kolesar.hu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php-64bit": "^8.2",
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-zlib": "*"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^11.0",
|
||||||
|
"guzzlehttp/guzzle": "^7.5",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"mikey179/vfsstream": "^1.6",
|
||||||
|
"php-coveralls/php-coveralls": "^2.5",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.16",
|
||||||
|
"vimeo/psalm": "^6.0",
|
||||||
|
"brianium/paratest": "^7.7"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/http-message": "^2.0",
|
||||||
|
"guzzlehttp/psr7": "^2.4"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"format": "php-cs-fixer fix",
|
||||||
|
"test": [
|
||||||
|
"@test:unit",
|
||||||
|
"@test:formatted",
|
||||||
|
"@test:lint"
|
||||||
|
],
|
||||||
|
"test:unit:setup-cov": "@putenv XDEBUG_MODE=coverage",
|
||||||
|
"test:unit": "paratest --functional",
|
||||||
|
"test:unit:cov": ["@test:unit:setup-cov", "@test:unit --coverage-clover=coverage.clover.xml --coverage-html cov"],
|
||||||
|
"test:unit:slow": "@test:unit --group slow",
|
||||||
|
"test:unit:slow:cov": ["@test:unit:setup-cov", "@test:unit --coverage-clover=coverage.clover.xml --coverage-html cov --group slow"],
|
||||||
|
"test:unit:fast": "@test:unit --exclude-group slow",
|
||||||
|
"test:unit:fast:cov": ["@test:unit:setup-cov", "@test:unit --coverage-clover=coverage.clover.xml --coverage-html cov --exclude-group slow"],
|
||||||
|
"test:formatted": "@format --dry-run --stop-on-violation --using-cache=no",
|
||||||
|
"test:lint": "psalm --stats --show-info=true --find-unused-psalm-suppress",
|
||||||
|
"coverage:report": "php-coveralls --coverage_clover=coverage.clover.xml --json_path=coveralls-upload.json --insecure",
|
||||||
|
"install:tools": "phive install --trust-gpg-keys 0x67F861C3D889C656 --trust-gpg-keys 0x8AC0BAA79732DD42",
|
||||||
|
"docs:generate": "tools/phpdocumentor --sourcecode"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"ZipStream\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload-dev": {
|
||||||
|
"psr-4": { "ZipStream\\Test\\": "test/" }
|
||||||
|
},
|
||||||
|
"archive": {
|
||||||
|
"exclude": [
|
||||||
|
"/composer.lock",
|
||||||
|
"/docs",
|
||||||
|
"/.gitattributes",
|
||||||
|
"/.github",
|
||||||
|
"/.gitignore",
|
||||||
|
"/guides",
|
||||||
|
"/.phive",
|
||||||
|
"/.php-cs-fixer.cache",
|
||||||
|
"/.php-cs-fixer.dist.php",
|
||||||
|
"/.phpdoc",
|
||||||
|
"/phpdoc.dist.xml",
|
||||||
|
"/.phpunit.result.cache",
|
||||||
|
"/phpunit.xml.dist",
|
||||||
|
"/psalm.xml",
|
||||||
|
"/test",
|
||||||
|
"/tools",
|
||||||
|
"/.tool-versions",
|
||||||
|
"/vendor"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
Adding Content-Length header
|
||||||
|
=============
|
||||||
|
|
||||||
|
Adding a ``Content-Length`` header for ``ZipStream`` can be achieved by
|
||||||
|
using the options ``SIMULATION_STRICT`` or ``SIMULATION_LAX`` in the
|
||||||
|
``operationMode`` parameter.
|
||||||
|
|
||||||
|
In the ``SIMULATION_STRICT`` mode, ``ZipStream`` will not allow to calculate the
|
||||||
|
size based on reading the whole file. ``SIMULATION_LAX`` will read the whole
|
||||||
|
file if neccessary.
|
||||||
|
|
||||||
|
``SIMULATION_STRICT`` is therefore useful to make sure that the size can be
|
||||||
|
calculated efficiently.
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
use ZipStream\OperationMode;
|
||||||
|
use ZipStream\ZipStream;
|
||||||
|
|
||||||
|
$zip = new ZipStream(
|
||||||
|
operationMode: OperationMode::SIMULATE_STRICT, // or SIMULATE_LAX
|
||||||
|
defaultEnableZeroHeader: false,
|
||||||
|
sendHttpHeaders: true,
|
||||||
|
outputStream: $stream,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Normally add files
|
||||||
|
$zip->addFile('sample.txt', 'Sample String Data');
|
||||||
|
|
||||||
|
// Use addFileFromCallback and exactSize if you want to defer opening of
|
||||||
|
// the file resource
|
||||||
|
$zip->addFileFromCallback(
|
||||||
|
'sample.txt',
|
||||||
|
exactSize: 18,
|
||||||
|
callback: function () {
|
||||||
|
return fopen('...');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Read resulting file size
|
||||||
|
$size = $zip->finish();
|
||||||
|
|
||||||
|
// Tell it to the browser
|
||||||
|
header('Content-Length: '. $size);
|
||||||
|
|
||||||
|
// Execute the Simulation and stream the actual zip to the client
|
||||||
|
$zip->executeSimulation();
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
Usage with FlySystem
|
||||||
|
===============
|
||||||
|
|
||||||
|
For saving or uploading the generated zip, you can use the
|
||||||
|
`Flysystem <https://flysystem.thephpleague.com>`_ package, and its many
|
||||||
|
adapters.
|
||||||
|
|
||||||
|
For that you will need to provide another stream than the ``php://output``
|
||||||
|
default one, and pass it to Flysystem ``putStream`` method.
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
// Open Stream only once for read and write since it's a memory stream and
|
||||||
|
// the content is lost when closing the stream / opening another one
|
||||||
|
$tempStream = fopen('php://memory', 'w+');
|
||||||
|
|
||||||
|
// Create Zip Archive
|
||||||
|
$zipStream = new ZipStream(
|
||||||
|
outputStream: $tempStream,
|
||||||
|
outputName: 'test.zip',
|
||||||
|
);
|
||||||
|
$zipStream->addFile('test.txt', 'text');
|
||||||
|
$zipStream->finish();
|
||||||
|
|
||||||
|
// Store File
|
||||||
|
// (see Flysystem documentation, and all its framework integration)
|
||||||
|
// Can be any adapter (AWS, Google, Ftp, etc.)
|
||||||
|
$adapter = new Local(__DIR__.'/path/to/folder');
|
||||||
|
$filesystem = new Filesystem($adapter);
|
||||||
|
|
||||||
|
$filesystem->writeStream('test.zip', $tempStream)
|
||||||
|
|
||||||
|
// Close Stream
|
||||||
|
fclose($tempStream);
|
|
@ -0,0 +1,16 @@
|
||||||
|
Usage with nginx
|
||||||
|
=============
|
||||||
|
|
||||||
|
If you are using nginx as a webserver, it will try to buffer the response.
|
||||||
|
So you'll want to disable this with a custom header:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
header('X-Accel-Buffering: no');
|
||||||
|
# or with the Response class from Symfony
|
||||||
|
$response->headers->set('X-Accel-Buffering', 'no');
|
||||||
|
|
||||||
|
Alternatively, you can tweak the
|
||||||
|
`fastcgi cache parameters <https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffers>`_
|
||||||
|
within nginx config.
|
||||||
|
|
||||||
|
See `original issue <https://github.com/maennchen/ZipStream-PHP/issues/77>`_.
|
|
@ -0,0 +1,66 @@
|
||||||
|
Available options
|
||||||
|
===============
|
||||||
|
|
||||||
|
Here is the full list of options available to you. You can also have a look at
|
||||||
|
``src/ZipStream.php`` file.
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
use ZipStream\ZipStream;
|
||||||
|
|
||||||
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
|
$zip = new ZipStream(
|
||||||
|
// Define output stream
|
||||||
|
// (argument is eiter a resource or implementing
|
||||||
|
// `Psr\Http\Message\StreamInterface`)
|
||||||
|
//
|
||||||
|
// Setup with `psr/http-message` & `guzzlehttp/psr7` dependencies
|
||||||
|
// required when using `Psr\Http\Message\StreamInterface`.
|
||||||
|
outputStream: $filePointer,
|
||||||
|
|
||||||
|
// Set the deflate level (default is 6; use -1 to disable it)
|
||||||
|
defaultDeflateLevel: 6,
|
||||||
|
|
||||||
|
// Add a comment to the zip file
|
||||||
|
comment: 'This is a comment.',
|
||||||
|
|
||||||
|
// Send http headers (default is true)
|
||||||
|
sendHttpHeaders: false,
|
||||||
|
|
||||||
|
// HTTP Content-Disposition.
|
||||||
|
// Defaults to 'attachment', where FILENAME is the specified filename.
|
||||||
|
// Note that this does nothing if you are not sending HTTP headers.
|
||||||
|
contentDisposition: 'attachment',
|
||||||
|
|
||||||
|
// Output Name for HTTP Content-Disposition
|
||||||
|
// Defaults to no name
|
||||||
|
outputName: "example.zip",
|
||||||
|
|
||||||
|
// HTTP Content-Type.
|
||||||
|
// Defaults to 'application/x-zip'.
|
||||||
|
// Note that this does nothing if you are not sending HTTP headers.
|
||||||
|
contentType: 'application/x-zip',
|
||||||
|
|
||||||
|
// Set the function called for setting headers.
|
||||||
|
// Default is the `header()` of PHP
|
||||||
|
httpHeaderCallback: header(...),
|
||||||
|
|
||||||
|
// Enable streaming files with single read where general purpose bit 3
|
||||||
|
// indicates local file header contain zero values in crc and size
|
||||||
|
// fields, these appear only after file contents in data descriptor
|
||||||
|
// block.
|
||||||
|
// Set to true if your input stream is remote
|
||||||
|
// (used with addFileFromStream()).
|
||||||
|
// Default is false.
|
||||||
|
defaultEnableZeroHeader: false,
|
||||||
|
|
||||||
|
// Enable zip64 extension, allowing very large archives
|
||||||
|
// (> 4Gb or file count > 64k)
|
||||||
|
// Default is true
|
||||||
|
enableZip64: true,
|
||||||
|
|
||||||
|
// Flush output buffer after every write
|
||||||
|
// Default is false
|
||||||
|
flushOutput: true,
|
||||||
|
);
|
|
@ -0,0 +1,21 @@
|
||||||
|
Usage with PSR 7 Streams
|
||||||
|
===============
|
||||||
|
|
||||||
|
PSR-7 streams are `standardized streams <https://www.php-fig.org/psr/psr-7/>`_.
|
||||||
|
|
||||||
|
ZipStream-PHP supports working with these streams with the function
|
||||||
|
``addFileFromPsr7Stream``.
|
||||||
|
|
||||||
|
For all parameters of the function see the API documentation.
|
||||||
|
|
||||||
|
Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
$stream = $response->getBody();
|
||||||
|
// add a file named 'streamfile.txt' from the content of the stream
|
||||||
|
$zip->addFileFromPsr7Stream(
|
||||||
|
fileName: 'streamfile.txt',
|
||||||
|
stream: $stream,
|
||||||
|
);
|
|
@ -0,0 +1,39 @@
|
||||||
|
Stream Output
|
||||||
|
===============
|
||||||
|
|
||||||
|
Stream to S3 Bucket
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
use Aws\S3\S3Client;
|
||||||
|
use Aws\Credentials\CredentialProvider;
|
||||||
|
use ZipStream\ZipStream;
|
||||||
|
|
||||||
|
$bucket = 'your bucket name';
|
||||||
|
$client = new S3Client([
|
||||||
|
'region' => 'your region',
|
||||||
|
'version' => 'latest',
|
||||||
|
'bucketName' => $bucket,
|
||||||
|
'credentials' => CredentialProvider::defaultProvider(),
|
||||||
|
]);
|
||||||
|
$client->registerStreamWrapper();
|
||||||
|
|
||||||
|
$zipFile = fopen("s3://$bucket/example.zip", 'w');
|
||||||
|
|
||||||
|
$zip = new ZipStream(
|
||||||
|
enableZip64: false,
|
||||||
|
outputStream: $zipFile,
|
||||||
|
);
|
||||||
|
|
||||||
|
$zip->addFile(
|
||||||
|
fileName: 'file1.txt',
|
||||||
|
data: 'File1 data',
|
||||||
|
);
|
||||||
|
$zip->addFile(
|
||||||
|
fileName: 'file2.txt',
|
||||||
|
data: 'File2 data',
|
||||||
|
);
|
||||||
|
$zip->finish();
|
||||||
|
|
||||||
|
fclose($zipFile);
|
|
@ -0,0 +1,130 @@
|
||||||
|
Usage with Symfony
|
||||||
|
===============
|
||||||
|
|
||||||
|
Overview for using ZipStream in Symfony
|
||||||
|
--------
|
||||||
|
|
||||||
|
Using ZipStream in Symfony requires use of Symfony's ``StreamedResponse`` when
|
||||||
|
used in controller actions.
|
||||||
|
|
||||||
|
Wrap your call to the relevant ``ZipStream`` stream method (i.e. ``addFile``,
|
||||||
|
``addFileFromPath``, ``addFileFromStream``) in Symfony's ``StreamedResponse``
|
||||||
|
function passing in any required arguments for your use case.
|
||||||
|
|
||||||
|
Using Symfony's ``StreamedResponse`` will allow Symfony to stream output from
|
||||||
|
ZipStream correctly to users' browsers and avoid a corrupted final zip landing
|
||||||
|
on the users' end.
|
||||||
|
|
||||||
|
Example for using ``ZipStream`` in a controller action to zip stream files
|
||||||
|
stored in an AWS S3 bucket by key:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||||
|
use Aws\S3\S3Client;
|
||||||
|
use ZipStream;
|
||||||
|
|
||||||
|
//...
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Route("/zipstream", name="zipstream")
|
||||||
|
*/
|
||||||
|
public function zipStreamAction()
|
||||||
|
{
|
||||||
|
// sample test file on s3
|
||||||
|
$s3keys = array(
|
||||||
|
"ziptestfolder/file1.txt"
|
||||||
|
);
|
||||||
|
|
||||||
|
$s3Client = $this->get('app.amazon.s3'); //s3client service
|
||||||
|
$s3Client->registerStreamWrapper(); //required
|
||||||
|
|
||||||
|
// using StreamedResponse to wrap ZipStream functionality
|
||||||
|
// for files on AWS s3.
|
||||||
|
$response = new StreamedResponse(function() use($s3keys, $s3Client)
|
||||||
|
{
|
||||||
|
// Define suitable options for ZipStream Archive.
|
||||||
|
// this is needed to prevent issues with truncated zip files
|
||||||
|
//initialise zipstream with output zip filename and options.
|
||||||
|
$zip = new ZipStream\ZipStream(
|
||||||
|
outputName: 'test.zip',
|
||||||
|
defaultEnableZeroHeader: true,
|
||||||
|
contentType: 'application/octet-stream',
|
||||||
|
);
|
||||||
|
|
||||||
|
//loop keys - useful for multiple files
|
||||||
|
foreach ($s3keys as $key) {
|
||||||
|
// Get the file name in S3 key so we can save it to the zip
|
||||||
|
//file using the same name.
|
||||||
|
$fileName = basename($key);
|
||||||
|
|
||||||
|
// concatenate s3path.
|
||||||
|
// replace with your bucket name or get from parameters file.
|
||||||
|
$bucket = 'bucketname';
|
||||||
|
$s3path = "s3://" . $bucket . "/" . $key;
|
||||||
|
|
||||||
|
//addFileFromStream
|
||||||
|
if ($streamRead = fopen($s3path, 'r')) {
|
||||||
|
$zip->addFileFromStream(
|
||||||
|
fileName: $fileName,
|
||||||
|
stream: $streamRead,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
die('Could not open stream for reading');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$zip->finish();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
In the above example, files on AWS S3 are being streamed from S3 to the Symfon
|
||||||
|
application via ``fopen`` call when the s3Client has ``registerStreamWrapper``
|
||||||
|
applied. This stream is then passed to ``ZipStream`` via the
|
||||||
|
``addFileFromStream`` function, which ZipStream then streams as a zip to the
|
||||||
|
client browser via Symfony's ``StreamedResponse``. No Zip is created server
|
||||||
|
side, which makes this approach a more efficient solution for streaming zips to
|
||||||
|
the client browser especially for larger files.
|
||||||
|
|
||||||
|
For the above use case you will need to have installed
|
||||||
|
`aws/aws-sdk-php-symfony <https://github.com/aws/aws-sdk-php-symfony>`_ to
|
||||||
|
support accessing S3 objects in your Symfony web application. This is not
|
||||||
|
required for locally stored files on you server you intend to stream via
|
||||||
|
``ZipStream``.
|
||||||
|
|
||||||
|
See official Symfony documentation for details on
|
||||||
|
`Symfony's StreamedResponse <https://symfony.com/doc/current/components/http_foundation.html#streaming-a-response>`_
|
||||||
|
``Symfony\Component\HttpFoundation\StreamedResponse``.
|
||||||
|
|
||||||
|
Note from `S3 documentation <https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/s3-stream-wrapper.html>`_:
|
||||||
|
|
||||||
|
Streams opened in "r" mode only allow data to be read from the stream, and
|
||||||
|
are not seekable by default. This is so that data can be downloaded from
|
||||||
|
Amazon S3 in a truly streaming manner, where previously read bytes do not
|
||||||
|
need to be buffered into memory. If you need a stream to be seekable, you
|
||||||
|
can pass seekable into the stream context options of a function.
|
||||||
|
|
||||||
|
Make sure to configure your S3 context correctly!
|
||||||
|
|
||||||
|
Uploading a file
|
||||||
|
--------
|
||||||
|
|
||||||
|
You need to add correct permissions
|
||||||
|
(see `#120 <https://github.com/maennchen/ZipStream-PHP/issues/120>`_)
|
||||||
|
|
||||||
|
**example code**
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
$path = "s3://{$adapter->getBucket()}/{$this->getArchivePath()}";
|
||||||
|
|
||||||
|
// the important bit
|
||||||
|
$outputContext = stream_context_create([
|
||||||
|
's3' => ['ACL' => 'public-read'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
fopen($path, 'w', null, $outputContext);
|
|
@ -0,0 +1,22 @@
|
||||||
|
Usage with Varnish
|
||||||
|
=============
|
||||||
|
|
||||||
|
Serving a big zip with varnish in between can cause random stream close.
|
||||||
|
This can be solved by adding attached code to the vcl file.
|
||||||
|
|
||||||
|
To avoid the problem, add the following to your varnish config file:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
sub vcl_recv {
|
||||||
|
# Varnish can’t intercept the discussion anymore
|
||||||
|
# helps for streaming big zips
|
||||||
|
if (req.url ~ "\.(tar|gz|zip|7z|exe)$") {
|
||||||
|
return (pipe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Varnish can’t intercept the discussion anymore
|
||||||
|
# helps for streaming big zips
|
||||||
|
sub vcl_pipe {
|
||||||
|
set bereq.http.connection = "close";
|
||||||
|
return (pipe);
|
||||||
|
}
|
|
@ -0,0 +1,126 @@
|
||||||
|
ZipStream PHP
|
||||||
|
=============
|
||||||
|
|
||||||
|
A fast and simple streaming zip file downloader for PHP. Using this library will
|
||||||
|
save you from having to write the Zip to disk. You can directly send it to the
|
||||||
|
user, which is much faster. It can work with S3 buckets or any PSR7 Stream.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
|
||||||
|
index
|
||||||
|
Symfony
|
||||||
|
Options
|
||||||
|
StreamOutput
|
||||||
|
FlySystem
|
||||||
|
PSR7Streams
|
||||||
|
Nginx
|
||||||
|
Varnish
|
||||||
|
ContentLength
|
||||||
|
|
||||||
|
Installation
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Simply add a dependency on ``maennchen/zipstream-php`` to your project's
|
||||||
|
``composer.json`` file if you use Composer to manage the dependencies of your
|
||||||
|
project. Use following command to add the package to your project's
|
||||||
|
dependencies:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
composer require maennchen/zipstream-php
|
||||||
|
|
||||||
|
If you want to use``addFileFromPsr7Stream```
|
||||||
|
(``Psr\Http\Message\StreamInterface``) or use a stream instead of a
|
||||||
|
``resource`` as ``outputStream``, the following dependencies must be installed
|
||||||
|
as well:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
composer require psr/http-message guzzlehttp/psr7
|
||||||
|
|
||||||
|
If ``composer install`` yields the following error, your installation is missing
|
||||||
|
the `mbstring extension <https://www.php.net/manual/en/book.mbstring.php>`_,
|
||||||
|
either `install it <https://www.php.net/manual/en/mbstring.installation.php>`_
|
||||||
|
or run the follwoing command:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
Your requirements could not be resolved to an installable set of packages.
|
||||||
|
|
||||||
|
Problem 1
|
||||||
|
- Root composer.json requires PHP extension ext-mbstring * but it is
|
||||||
|
missing from your system. Install or enable PHP's mbstrings extension.
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
composer require symfony/polyfill-mbstring
|
||||||
|
|
||||||
|
Usage Intro
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Here's a simple example:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
// Autoload the dependencies
|
||||||
|
require 'vendor/autoload.php';
|
||||||
|
|
||||||
|
// create a new zipstream object
|
||||||
|
$zip = new ZipStream\ZipStream(
|
||||||
|
outputName: 'example.zip',
|
||||||
|
|
||||||
|
// enable output of HTTP headers
|
||||||
|
sendHttpHeaders: true,
|
||||||
|
);
|
||||||
|
|
||||||
|
// create a file named 'hello.txt'
|
||||||
|
$zip->addFile(
|
||||||
|
fileName: 'hello.txt',
|
||||||
|
data: 'This is the contents of hello.txt',
|
||||||
|
);
|
||||||
|
|
||||||
|
// add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
|
||||||
|
$zip->addFileFromPath(
|
||||||
|
fileName: 'some_image.jpg',
|
||||||
|
path: 'path/to/image.jpg',
|
||||||
|
);
|
||||||
|
|
||||||
|
// add a file named 'goodbye.txt' from an open stream resource
|
||||||
|
$filePointer = tmpfile();
|
||||||
|
fwrite($filePointer, 'The quick brown fox jumped over the lazy dog.');
|
||||||
|
rewind($filePointer);
|
||||||
|
$zip->addFileFromStream(
|
||||||
|
fileName: 'goodbye.txt',
|
||||||
|
stream: $filePointer,
|
||||||
|
);
|
||||||
|
fclose($filePointer);
|
||||||
|
|
||||||
|
// add a file named 'streamfile.txt' from the body of a `guzzle` response
|
||||||
|
// Setup with `psr/http-message` & `guzzlehttp/psr7` dependencies required.
|
||||||
|
$zip->addFileFromPsr7Stream(
|
||||||
|
fileName: 'streamfile.txt',
|
||||||
|
stream: $response->getBody(),
|
||||||
|
);
|
||||||
|
|
||||||
|
// finish the zip stream
|
||||||
|
$zip->finish();
|
||||||
|
|
||||||
|
You can also add comments, modify file timestamps, and customize (or
|
||||||
|
disable) the HTTP headers. It is also possible to specify the storage method
|
||||||
|
when adding files, the current default storage method is ``DEFLATE``
|
||||||
|
i.e files are stored with Compression mode 0x08.
|
||||||
|
|
||||||
|
Known Issues
|
||||||
|
---------------
|
||||||
|
|
||||||
|
The native Mac OS archive extraction tool prior to macOS 10.15 might not open
|
||||||
|
archives in some conditions. A workaround is to disable the Zip64 feature with
|
||||||
|
the option ``enableZip64: false``. This limits the archive to 4 Gb and 64k files
|
||||||
|
but will allow users on macOS 10.14 and below to open them without issue.
|
||||||
|
See `#116 <https://github.com/maennchen/ZipStream-PHP/issues/116>`_.
|
||||||
|
|
||||||
|
The linux ``unzip`` utility might not handle properly unicode characters.
|
||||||
|
It is recommended to extract with another tool like
|
||||||
|
`7-zip <https://www.7-zip.org/>`_.
|
||||||
|
See `#146 <https://github.com/maennchen/ZipStream-PHP/issues/146>`_.
|
||||||
|
|
||||||
|
It is the responsability of the client code to make sure that files are not
|
||||||
|
saved with the same path, as it is not possible for the library to figure it out
|
||||||
|
while streaming a zip.
|
||||||
|
See `#154 <https://github.com/maennchen/ZipStream-PHP/issues/154>`_.
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<phpdocumentor
|
||||||
|
configVersion="3"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="https://www.phpdoc.org"
|
||||||
|
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/phpDocumentor/phpDocumentor/master/data/xsd/phpdoc.xsd"
|
||||||
|
>
|
||||||
|
<title>💾 ZipStream-PHP</title>
|
||||||
|
<paths>
|
||||||
|
<output>docs</output>
|
||||||
|
</paths>
|
||||||
|
<version number="3.0.0">
|
||||||
|
<folder>latest</folder>
|
||||||
|
<api>
|
||||||
|
<source dsn=".">
|
||||||
|
<path>src</path>
|
||||||
|
</source>
|
||||||
|
<output>api</output>
|
||||||
|
<ignore hidden="true" symlinks="true">
|
||||||
|
<path>tests/**/*</path>
|
||||||
|
<path>vendor/**/*</path>
|
||||||
|
</ignore>
|
||||||
|
<extensions>
|
||||||
|
<extension>php</extension>
|
||||||
|
</extensions>
|
||||||
|
<visibility>public</visibility>
|
||||||
|
<default-package-name>ZipStream</default-package-name>
|
||||||
|
<include-source>true</include-source>
|
||||||
|
</api>
|
||||||
|
<guide>
|
||||||
|
<source dsn=".">
|
||||||
|
<path>guides</path>
|
||||||
|
</source>
|
||||||
|
<output>guide</output>
|
||||||
|
</guide>
|
||||||
|
</version>
|
||||||
|
<setting name="guides.enabled" value="true"/>
|
||||||
|
<template name="default" />
|
||||||
|
</phpdocumentor>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="test/bootstrap.php" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.1/phpunit.xsd" cacheDirectory=".phpunit.cache">
|
||||||
|
<coverage/>
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="Application">
|
||||||
|
<directory>test</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
<logging/>
|
||||||
|
<source>
|
||||||
|
<include>
|
||||||
|
<directory suffix=".php">src</directory>
|
||||||
|
</include>
|
||||||
|
</source>
|
||||||
|
</phpunit>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<psalm
|
||||||
|
errorLevel="1"
|
||||||
|
resolveFromConfigFile="true"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="https://getpsalm.org/schema/config"
|
||||||
|
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
||||||
|
findUnusedBaselineEntry="true"
|
||||||
|
findUnusedCode="true"
|
||||||
|
phpVersion="8.2.0"
|
||||||
|
>
|
||||||
|
<!-- TODO: Update phpVersion when raising the minimum supported version -->
|
||||||
|
<projectFiles>
|
||||||
|
<directory name="src" />
|
||||||
|
<ignoreFiles>
|
||||||
|
<directory name="vendor" />
|
||||||
|
</ignoreFiles>
|
||||||
|
</projectFiles>
|
||||||
|
<issueHandlers>
|
||||||
|
<!-- Turn off dead code warnings for externally called functions -->
|
||||||
|
<PossiblyUnusedProperty errorLevel="suppress" />
|
||||||
|
<PossiblyUnusedMethod errorLevel="suppress" />
|
||||||
|
<PossiblyUnusedReturnValue errorLevel="suppress" />
|
||||||
|
</issueHandlers>
|
||||||
|
</psalm>
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
use DateTimeInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
abstract class CentralDirectoryFileHeader
|
||||||
|
{
|
||||||
|
private const SIGNATURE = 0x02014b50;
|
||||||
|
|
||||||
|
public static function generate(
|
||||||
|
int $versionMadeBy,
|
||||||
|
int $versionNeededToExtract,
|
||||||
|
int $generalPurposeBitFlag,
|
||||||
|
CompressionMethod $compressionMethod,
|
||||||
|
DateTimeInterface $lastModificationDateTime,
|
||||||
|
int $crc32,
|
||||||
|
int $compressedSize,
|
||||||
|
int $uncompressedSize,
|
||||||
|
string $fileName,
|
||||||
|
string $extraField,
|
||||||
|
string $fileComment,
|
||||||
|
int $diskNumberStart,
|
||||||
|
int $internalFileAttributes,
|
||||||
|
int $externalFileAttributes,
|
||||||
|
int $relativeOffsetOfLocalHeader,
|
||||||
|
): string {
|
||||||
|
return PackField::pack(
|
||||||
|
new PackField(format: 'V', value: self::SIGNATURE),
|
||||||
|
new PackField(format: 'v', value: $versionMadeBy),
|
||||||
|
new PackField(format: 'v', value: $versionNeededToExtract),
|
||||||
|
new PackField(format: 'v', value: $generalPurposeBitFlag),
|
||||||
|
new PackField(format: 'v', value: $compressionMethod->value),
|
||||||
|
new PackField(format: 'V', value: Time::dateTimeToDosTime($lastModificationDateTime)),
|
||||||
|
new PackField(format: 'V', value: $crc32),
|
||||||
|
new PackField(format: 'V', value: $compressedSize),
|
||||||
|
new PackField(format: 'V', value: $uncompressedSize),
|
||||||
|
new PackField(format: 'v', value: strlen($fileName)),
|
||||||
|
new PackField(format: 'v', value: strlen($extraField)),
|
||||||
|
new PackField(format: 'v', value: strlen($fileComment)),
|
||||||
|
new PackField(format: 'v', value: $diskNumberStart),
|
||||||
|
new PackField(format: 'v', value: $internalFileAttributes),
|
||||||
|
new PackField(format: 'V', value: $externalFileAttributes),
|
||||||
|
new PackField(format: 'V', value: $relativeOffsetOfLocalHeader),
|
||||||
|
) . $fileName . $extraField . $fileComment;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
enum CompressionMethod: int
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The file is stored (no compression)
|
||||||
|
*/
|
||||||
|
case STORE = 0x00;
|
||||||
|
|
||||||
|
// 0x01: legacy algorithm - The file is Shrunk
|
||||||
|
// 0x02: legacy algorithm - The file is Reduced with compression factor 1
|
||||||
|
// 0x03: legacy algorithm - The file is Reduced with compression factor 2
|
||||||
|
// 0x04: legacy algorithm - The file is Reduced with compression factor 3
|
||||||
|
// 0x05: legacy algorithm - The file is Reduced with compression factor 4
|
||||||
|
// 0x06: legacy algorithm - The file is Imploded
|
||||||
|
// 0x07: Reserved for Tokenizing compression algorithm
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The file is Deflated
|
||||||
|
*/
|
||||||
|
case DEFLATE = 0x08;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Enhanced Deflating using Deflate64(tm)
|
||||||
|
// */
|
||||||
|
// case DEFLATE_64 = 0x09;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * PKWARE Data Compression Library Imploding (old IBM TERSE)
|
||||||
|
// */
|
||||||
|
// case PKWARE = 0x0a;
|
||||||
|
|
||||||
|
// // 0x0b: Reserved by PKWARE
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * File is compressed using BZIP2 algorithm
|
||||||
|
// */
|
||||||
|
// case BZIP2 = 0x0c;
|
||||||
|
|
||||||
|
// // 0x0d: Reserved by PKWARE
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * LZMA
|
||||||
|
// */
|
||||||
|
// case LZMA = 0x0e;
|
||||||
|
|
||||||
|
// // 0x0f: Reserved by PKWARE
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * IBM z/OS CMPSC Compression
|
||||||
|
// */
|
||||||
|
// case IBM_ZOS_CMPSC = 0x10;
|
||||||
|
|
||||||
|
// // 0x11: Reserved by PKWARE
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * File is compressed using IBM TERSE
|
||||||
|
// */
|
||||||
|
// case IBM_TERSE = 0x12;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * IBM LZ77 z Architecture
|
||||||
|
// */
|
||||||
|
// case IBM_LZ77 = 0x13;
|
||||||
|
|
||||||
|
// // 0x14: deprecated (use method 93 for zstd)
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Zstandard (zstd) Compression
|
||||||
|
// */
|
||||||
|
// case ZSTD = 0x5d;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * MP3 Compression
|
||||||
|
// */
|
||||||
|
// case MP3 = 0x5e;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * XZ Compression
|
||||||
|
// */
|
||||||
|
// case XZ = 0x5f;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * JPEG variant
|
||||||
|
// */
|
||||||
|
// case JPEG = 0x60;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * WavPack compressed data
|
||||||
|
// */
|
||||||
|
// case WAV_PACK = 0x61;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * PPMd version I, Rev 1
|
||||||
|
// */
|
||||||
|
// case PPMD_1_1 = 0x62;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * AE-x encryption marker
|
||||||
|
// */
|
||||||
|
// case AE_X_ENCRYPTION = 0x63;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
abstract class DataDescriptor
|
||||||
|
{
|
||||||
|
private const SIGNATURE = 0x08074b50;
|
||||||
|
|
||||||
|
public static function generate(
|
||||||
|
int $crc32UncompressedData,
|
||||||
|
int $compressedSize,
|
||||||
|
int $uncompressedSize,
|
||||||
|
): string {
|
||||||
|
return PackField::pack(
|
||||||
|
new PackField(format: 'V', value: self::SIGNATURE),
|
||||||
|
new PackField(format: 'V', value: $crc32UncompressedData),
|
||||||
|
new PackField(format: 'V', value: $compressedSize),
|
||||||
|
new PackField(format: 'V', value: $uncompressedSize),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
abstract class EndOfCentralDirectory
|
||||||
|
{
|
||||||
|
private const SIGNATURE = 0x06054b50;
|
||||||
|
|
||||||
|
public static function generate(
|
||||||
|
int $numberOfThisDisk,
|
||||||
|
int $numberOfTheDiskWithCentralDirectoryStart,
|
||||||
|
int $numberOfCentralDirectoryEntriesOnThisDisk,
|
||||||
|
int $numberOfCentralDirectoryEntries,
|
||||||
|
int $sizeOfCentralDirectory,
|
||||||
|
int $centralDirectoryStartOffsetOnDisk,
|
||||||
|
string $zipFileComment,
|
||||||
|
): string {
|
||||||
|
/** @psalm-suppress MixedArgument */
|
||||||
|
return PackField::pack(
|
||||||
|
new PackField(format: 'V', value: static::SIGNATURE),
|
||||||
|
new PackField(format: 'v', value: $numberOfThisDisk),
|
||||||
|
new PackField(format: 'v', value: $numberOfTheDiskWithCentralDirectoryStart),
|
||||||
|
new PackField(format: 'v', value: $numberOfCentralDirectoryEntriesOnThisDisk),
|
||||||
|
new PackField(format: 'v', value: $numberOfCentralDirectoryEntries),
|
||||||
|
new PackField(format: 'V', value: $sizeOfCentralDirectory),
|
||||||
|
new PackField(format: 'V', value: $centralDirectoryStartOffsetOnDisk),
|
||||||
|
new PackField(format: 'v', value: strlen($zipFileComment)),
|
||||||
|
) . $zipFileComment;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
abstract class Exception extends \Exception {}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use DateTimeInterface;
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a file wasn't found
|
||||||
|
*/
|
||||||
|
class DosTimeOverflowException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public readonly DateTimeInterface $dateTime
|
||||||
|
) {
|
||||||
|
parent::__construct('The date ' . $dateTime->format(DateTimeInterface::ATOM) . " can't be represented as DOS time / date.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a file wasn't found
|
||||||
|
*/
|
||||||
|
class FileNotFoundException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public readonly string $path
|
||||||
|
) {
|
||||||
|
parent::__construct("The file with the path $path wasn't found.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a file wasn't found
|
||||||
|
*/
|
||||||
|
class FileNotReadableException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public readonly string $path
|
||||||
|
) {
|
||||||
|
parent::__construct("The file with the path $path isn't readable.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a file is not as large as it was specified.
|
||||||
|
*/
|
||||||
|
class FileSizeIncorrectException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public readonly int $expectedSize,
|
||||||
|
public readonly int $actualSize
|
||||||
|
) {
|
||||||
|
parent::__construct("File is {$actualSize} instead of {$expectedSize} bytes large. Adjust `exactSize` parameter.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a counter value exceeds storage size
|
||||||
|
*/
|
||||||
|
class OverflowException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct('File size exceeds limit of 32 bit integer. Please enable "zip64" option.');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a resource like `fread` returns false
|
||||||
|
*/
|
||||||
|
class ResourceActionException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ?resource
|
||||||
|
*/
|
||||||
|
public $resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param resource $resource
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public readonly string $function,
|
||||||
|
$resource = null,
|
||||||
|
) {
|
||||||
|
$this->resource = $resource;
|
||||||
|
parent::__construct('Function ' . $function . 'failed on resource.');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a strict simulation is executed and the file
|
||||||
|
* information can't be determined without reading the entire file.
|
||||||
|
*/
|
||||||
|
class SimulationFileUnknownException extends Exception
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct('The details of the strict simulation file could not be determined without reading the entire file.');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a stream can't be read.
|
||||||
|
*/
|
||||||
|
class StreamNotReadableException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct('The stream could not be read.');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream\Exception;
|
||||||
|
|
||||||
|
use ZipStream\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Exception gets invoked if a non seekable stream is
|
||||||
|
* provided and zero headers are disabled.
|
||||||
|
*/
|
||||||
|
class StreamNotSeekableException extends Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct('enableZeroHeader must be enable to add non seekable streams');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,430 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ZipStream;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use DateTimeInterface;
|
||||||
|
use DeflateContext;
|
||||||
|
use RuntimeException;
|
||||||
|
use ZipStream\Exception\FileSizeIncorrectException;
|
||||||
|
use ZipStream\Exception\OverflowException;
|
||||||
|
use ZipStream\Exception\ResourceActionException;
|
||||||
|
use ZipStream\Exception\SimulationFileUnknownException;
|
||||||
|
use ZipStream\Exception\StreamNotReadableException;
|
||||||
|
use ZipStream\Exception\StreamNotSeekableException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
class File
|
||||||
|
{
|
||||||
|
private const CHUNKED_READ_BLOCK_SIZE = 0x1000000;
|
||||||
|
|
||||||
|
private Version $version;
|
||||||
|
|
||||||
|
private int $compressedSize = 0;
|
||||||
|
|
||||||
|
private int $uncompressedSize = 0;
|
||||||
|
|
||||||
|
private int $crc = 0;
|
||||||
|
|
||||||
|
private int $generalPurposeBitFlag = 0;
|
||||||
|
|
||||||
|
private readonly string $fileName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var resource|null
|
||||||
|
*/
|
||||||
|
private $stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Closure $dataCallback
|
||||||
|
* @psalm-param Closure(): resource $dataCallback
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
string $fileName,
|
||||||
|
private readonly Closure $dataCallback,
|
||||||
|
private readonly OperationMode $operationMode,
|
||||||
|
private readonly int $startOffset,
|
||||||
|
private readonly CompressionMethod $compressionMethod,
|
||||||
|
private readonly string $comment,
|
||||||
|
private readonly DateTimeInterface $lastModificationDateTime,
|
||||||
|
private readonly int $deflateLevel,
|
||||||
|
private readonly ?int $maxSize,
|
||||||
|
private readonly ?int $exactSize,
|
||||||
|
private readonly bool $enableZip64,
|
||||||
|
private readonly bool $enableZeroHeader,
|
||||||
|
private readonly Closure $send,
|
||||||
|
private readonly Closure $recordSentBytes,
|
||||||
|
) {
|
||||||
|
$this->fileName = self::filterFilename($fileName);
|
||||||
|
$this->checkEncoding();
|
||||||
|
|
||||||
|
if ($this->enableZeroHeader) {
|
||||||
|
$this->generalPurposeBitFlag |= GeneralPurposeBitFlag::ZERO_HEADER;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->version = $this->compressionMethod === CompressionMethod::DEFLATE ? Version::DEFLATE : Version::STORE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function cloneSimulationExecution(): self
|
||||||
|
{
|
||||||
|
return new self(
|
||||||
|
$this->fileName,
|
||||||
|
$this->dataCallback,
|
||||||
|
OperationMode::NORMAL,
|
||||||
|
$this->startOffset,
|
||||||
|
$this->compressionMethod,
|
||||||
|
$this->comment,
|
||||||
|
$this->lastModificationDateTime,
|
||||||
|
$this->deflateLevel,
|
||||||
|
$this->maxSize,
|
||||||
|
$this->exactSize,
|
||||||
|
$this->enableZip64,
|
||||||
|
$this->enableZeroHeader,
|
||||||
|
$this->send,
|
||||||
|
$this->recordSentBytes,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function process(): string
|
||||||
|
{
|
||||||
|
$forecastSize = $this->forecastSize();
|
||||||
|
|
||||||
|
if ($this->enableZeroHeader) {
|
||||||
|
// No calculation required
|
||||||
|
} elseif ($this->isSimulation() && $forecastSize !== null) {
|
||||||
|
$this->uncompressedSize = $forecastSize;
|
||||||
|
$this->compressedSize = $forecastSize;
|
||||||
|
} else {
|
||||||
|
$this->readStream(send: false);
|
||||||
|
if (rewind($this->unpackStream()) === false) {
|
||||||
|
throw new ResourceActionException('rewind', $this->unpackStream());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addFileHeader();
|
||||||
|
|
||||||
|
$detectedSize = $forecastSize ?? ($this->compressedSize > 0 ? $this->compressedSize : null);
|
||||||
|
|
||||||
|
if (
|
||||||
|
$this->isSimulation() &&
|
||||||
|
$detectedSize !== null
|
||||||
|
) {
|
||||||
|
$this->uncompressedSize = $detectedSize;
|
||||||
|
$this->compressedSize = $detectedSize;
|
||||||
|
($this->recordSentBytes)($detectedSize);
|
||||||
|
} else {
|
||||||
|
$this->readStream(send: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addFileFooter();
|
||||||
|
return $this->getCdrFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return resource
|
||||||
|
*/
|
||||||
|
private function unpackStream()
|
||||||
|
{
|
||||||
|
if ($this->stream) {
|
||||||
|
return $this->stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->operationMode === OperationMode::SIMULATE_STRICT) {
|
||||||
|
throw new SimulationFileUnknownException();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->stream = ($this->dataCallback)();
|
||||||
|
|
||||||
|
if (!$this->enableZeroHeader && !stream_get_meta_data($this->stream)['seekable']) {
|
||||||
|
throw new StreamNotSeekableException();
|
||||||
|
}
|
||||||
|
if (!(
|
||||||
|
str_contains(stream_get_meta_data($this->stream)['mode'], 'r')
|
||||||
|
|| str_contains(stream_get_meta_data($this->stream)['mode'], 'w+')
|
||||||
|
|| str_contains(stream_get_meta_data($this->stream)['mode'], 'a+')
|
||||||
|
|| str_contains(stream_get_meta_data($this->stream)['mode'], 'x+')
|
||||||
|
|| str_contains(stream_get_meta_data($this->stream)['mode'], 'c+')
|
||||||
|
)) {
|
||||||
|
throw new StreamNotReadableException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function forecastSize(): ?int
|
||||||
|
{
|
||||||
|
if ($this->compressionMethod !== CompressionMethod::STORE) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ($this->exactSize !== null) {
|
||||||
|
return $this->exactSize;
|
||||||
|
}
|
||||||
|
$fstat = fstat($this->unpackStream());
|
||||||
|
if (!$fstat || !array_key_exists('size', $fstat) || $fstat['size'] < 1) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->maxSize !== null && $this->maxSize < $fstat['size']) {
|
||||||
|
return $this->maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $fstat['size'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and send zip header for this file.
|
||||||
|
*/
|
||||||
|
private function addFileHeader(): void
|
||||||
|
{
|
||||||
|
$forceEnableZip64 = $this->enableZeroHeader && $this->enableZip64;
|
||||||
|
|
||||||
|
$footer = $this->buildZip64ExtraBlock($forceEnableZip64);
|
||||||
|
|
||||||
|
$zip64Enabled = $footer !== '';
|
||||||
|
|
||||||
|
if ($zip64Enabled) {
|
||||||
|
$this->version = Version::ZIP64;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->generalPurposeBitFlag & GeneralPurposeBitFlag::EFS) {
|
||||||
|
// Put the tricky entry to
|
||||||
|
// force Linux unzip to lookup EFS flag.
|
||||||
|
$footer .= Zs\ExtendedInformationExtraField::generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = LocalFileHeader::generate(
|
||||||
|
versionNeededToExtract: $this->version->value,
|
||||||
|
generalPurposeBitFlag: $this->generalPurposeBitFlag,
|
||||||
|
compressionMethod: $this->compressionMethod,
|
||||||
|
lastModificationDateTime: $this->lastModificationDateTime,
|
||||||
|
crc32UncompressedData: $this->crc,
|
||||||
|
compressedSize: $zip64Enabled
|
||||||
|
? 0xFFFFFFFF
|
||||||
|
: $this->compressedSize,
|
||||||
|
uncompressedSize: $zip64Enabled
|
||||||
|
? 0xFFFFFFFF
|
||||||
|
: $this->uncompressedSize,
|
||||||
|
fileName: $this->fileName,
|
||||||
|
extraField: $footer,
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
($this->send)($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Strip characters that are not legal in Windows filenames
|
||||||
|
* to prevent compatibility issues
|
||||||
|
*/
|
||||||
|
private static function filterFilename(
|
||||||
|
/**
|
||||||
|
* Unprocessed filename
|
||||||
|
*/
|
||||||
|
string $fileName
|
||||||
|
): string {
|
||||||
|
// strip leading slashes from file name
|
||||||
|
// (fixes bug in windows archive viewer)
|
||||||
|
$fileName = ltrim($fileName, '/');
|
||||||
|
|
||||||
|
return str_replace(['\\', ':', '*', '?', '"', '<', '>', '|'], '_', $fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function checkEncoding(): void
|
||||||
|
{
|
||||||
|
// Sets Bit 11: Language encoding flag (EFS). If this bit is set,
|
||||||
|
// the filename and comment fields for this file
|
||||||
|
// MUST be encoded using UTF-8. (see APPENDIX D)
|
||||||
|
if (mb_check_encoding($this->fileName, 'UTF-8') &&
|
||||||
|
mb_check_encoding($this->comment, 'UTF-8')) {
|
||||||
|
$this->generalPurposeBitFlag |= GeneralPurposeBitFlag::EFS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildZip64ExtraBlock(bool $force = false): string
|
||||||
|
{
|
||||||
|
$outputZip64ExtraBlock = false;
|
||||||
|
|
||||||
|
$originalSize = null;
|
||||||
|
if ($force || $this->uncompressedSize > 0xFFFFFFFF) {
|
||||||
|
$outputZip64ExtraBlock = true;
|
||||||
|
$originalSize = $this->uncompressedSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
$compressedSize = null;
|
||||||
|
if ($force || $this->compressedSize > 0xFFFFFFFF) {
|
||||||
|
$outputZip64ExtraBlock = true;
|
||||||
|
$compressedSize = $this->compressedSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If this file will start over 4GB limit in ZIP file,
|
||||||
|
// CDR record will have to use Zip64 extension to describe offset
|
||||||
|
// to keep consistency we use the same value here
|
||||||
|
$relativeHeaderOffset = null;
|
||||||
|
if ($this->startOffset > 0xFFFFFFFF) {
|
||||||
|
$outputZip64ExtraBlock = true;
|
||||||
|
$relativeHeaderOffset = $this->startOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$outputZip64ExtraBlock) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->enableZip64) {
|
||||||
|
throw new OverflowException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Zip64\ExtendedInformationExtraField::generate(
|
||||||
|
originalSize: $originalSize,
|
||||||
|
compressedSize: $compressedSize,
|
||||||
|
relativeHeaderOffset: $relativeHeaderOffset,
|
||||||
|
diskStartNumber: null,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function addFileFooter(): void
|
||||||
|
{
|
||||||
|
if (($this->compressedSize > 0xFFFFFFFF || $this->uncompressedSize > 0xFFFFFFFF) && $this->version !== Version::ZIP64) {
|
||||||
|
throw new OverflowException();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->enableZeroHeader) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->version === Version::ZIP64) {
|
||||||
|
$footer = Zip64\DataDescriptor::generate(
|
||||||
|
crc32UncompressedData: $this->crc,
|
||||||
|
compressedSize: $this->compressedSize,
|
||||||
|
uncompressedSize: $this->uncompressedSize,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$footer = DataDescriptor::generate(
|
||||||
|
crc32UncompressedData: $this->crc,
|
||||||
|
compressedSize: $this->compressedSize,
|
||||||
|
uncompressedSize: $this->uncompressedSize,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
($this->send)($footer);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function readStream(bool $send): void
|
||||||
|
{
|
||||||
|
$this->compressedSize = 0;
|
||||||
|
$this->uncompressedSize = 0;
|
||||||
|
$hash = hash_init('crc32b');
|
||||||
|
|
||||||
|
$deflate = $this->compressionInit();
|
||||||
|
|
||||||
|
while (
|
||||||
|
!feof($this->unpackStream()) &&
|
||||||
|
($this->maxSize === null || $this->uncompressedSize < $this->maxSize) &&
|
||||||
|
($this->exactSize === null || $this->uncompressedSize < $this->exactSize)
|
||||||
|
) {
|
||||||
|
$readLength = min(
|
||||||
|
($this->maxSize ?? PHP_INT_MAX) - $this->uncompressedSize,
|
||||||
|
($this->exactSize ?? PHP_INT_MAX) - $this->uncompressedSize,
|
||||||
|
self::CHUNKED_READ_BLOCK_SIZE
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = fread($this->unpackStream(), $readLength);
|
||||||
|
|
||||||
|
if ($data === false) {
|
||||||
|
throw new ResourceActionException('fread', $this->unpackStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
hash_update($hash, $data);
|
||||||
|
|
||||||
|
$this->uncompressedSize += strlen($data);
|
||||||
|
|
||||||
|
if ($deflate) {
|
||||||
|
$data = deflate_add(
|
||||||
|
$deflate,
|
||||||
|
$data,
|
||||||
|
feof($this->unpackStream()) ? ZLIB_FINISH : ZLIB_NO_FLUSH
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($data === false) {
|
||||||
|
throw new RuntimeException('deflate_add failed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->compressedSize += strlen($data);
|
||||||
|
|
||||||
|
if ($send) {
|
||||||
|
($this->send)($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->exactSize !== null && $this->uncompressedSize !== $this->exactSize) {
|
||||||
|
throw new FileSizeIncorrectException(expectedSize: $this->exactSize, actualSize: $this->uncompressedSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->crc = hexdec(hash_final($hash));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function compressionInit(): ?DeflateContext
|
||||||
|
{
|
||||||
|
switch ($this->compressionMethod) {
|
||||||
|
case CompressionMethod::STORE:
|
||||||
|
// Noting to do
|
||||||
|
return null;
|
||||||
|
case CompressionMethod::DEFLATE:
|
||||||
|
$deflateContext = deflate_init(
|
||||||
|
ZLIB_ENCODING_RAW,
|
||||||
|
['level' => $this->deflateLevel]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!$deflateContext) {
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
throw new RuntimeException("Can't initialize deflate context.");
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
|
}
|
||||||
|
|
||||||
|
// False positive, resource is no longer returned from this function
|
||||||
|
return $deflateContext;
|
||||||
|
default:
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
throw new RuntimeException('Unsupported Compression Method ' . print_r($this->compressionMethod, true));
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getCdrFile(): string
|
||||||
|
{
|
||||||
|
$footer = $this->buildZip64ExtraBlock();
|
||||||
|
|
||||||
|
return CentralDirectoryFileHeader::generate(
|
||||||
|
versionMadeBy: ZipStream::ZIP_VERSION_MADE_BY,
|
||||||
|
versionNeededToExtract: $this->version->value,
|
||||||
|
generalPurposeBitFlag: $this->generalPurposeBitFlag,
|
||||||
|
compressionMethod: $this->compressionMethod,
|
||||||
|
lastModificationDateTime: $this->lastModificationDateTime,
|
||||||
|
crc32: $this->crc,
|
||||||
|
compressedSize: $this->compressedSize > 0xFFFFFFFF
|
||||||
|
? 0xFFFFFFFF
|
||||||
|
: $this->compressedSize,
|
||||||
|
uncompressedSize: $this->uncompressedSize > 0xFFFFFFFF
|
||||||
|
? 0xFFFFFFFF
|
||||||
|
: $this->uncompressedSize,
|
||||||
|
fileName: $this->fileName,
|
||||||
|
extraField: $footer,
|
||||||
|
fileComment: $this->comment,
|
||||||
|
diskNumberStart: 0,
|
||||||
|
internalFileAttributes: 0,
|
||||||
|
externalFileAttributes: 32,
|
||||||
|
relativeOffsetOfLocalHeader: $this->startOffset > 0xFFFFFFFF
|
||||||
|
? 0xFFFFFFFF
|
||||||
|
: $this->startOffset,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function isSimulation(): bool
|
||||||
|
{
|
||||||
|
return $this->operationMode === OperationMode::SIMULATE_LAX || $this->operationMode === OperationMode::SIMULATE_STRICT;
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue