new update

This commit is contained in:
IruyCode 2025-05-05 11:24:51 +01:00
parent 091128e73b
commit 459f98f8a0
1084 changed files with 28945 additions and 38233 deletions

5
.puppeteerrc.cjs Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
};

View File

@ -26,32 +26,26 @@
class ClientController extends Controller class ClientController extends Controller
{ {
public function showReportingForAmbitsProject($ambitId, $projectId) public function showReportingForAmbitsProject($ambitId, $projectId)
{ {
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first(); $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
// $receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get(); // $receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get();
return view('userClient.showReportingAllEquipmentsForAmbitProject', compact('ambitId', 'projectId', 'dataAmbit')); return view('userClient.showReportingAllEquipmentsForAmbitProject', compact('ambitId', 'projectId', 'dataAmbit'));
} }
public function getEquipmentsOfAmbit(Request $request) public function getEquipmentsOfAmbit(Request $request)
{ {
$projectId = $request->get('projectId'); $projectId = $request->get('projectId');
$ambitId = $request->get('ambitId'); $ambitId = $request->get('ambitId');
//Recebe os dados do Ambito //Recebe os dados do Ambito
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first(); $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
$receiveDataEquipments = Equipment:: $receiveDataEquipments = Equipment::join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')
join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')
->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipment_work_historys.ispt_number') // Adicionei 'equipment_work_historys.ispt_number' aqui ->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipment_work_historys.ispt_number') // Adicionei 'equipment_work_historys.ispt_number' aqui
->pluck('equipmentWorkHistorys_id'); ->pluck('equipmentWorkHistorys_id');
$filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id) $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments)->get();
->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments)
->get();
$equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id'); $equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id');
@ -76,34 +70,83 @@ public function getEquipmentsOfAmbit(Request $request)
->make(true); ->make(true);
} }
// Antigo com pdf normal, porem nao funciona bem
// public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
// {
// // Obter o caminho da imagem do usuário ou uma imagem padrão
// // Primeiro precisa identificar se quem esta a visualizar o relatorio e o Admin ou o Cliente
// $userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg');
// // Pega a data e hora atual
// $dataAtual = Carbon::now();
// // Se quiser formatar a data, pode fazer assim:
// $dataFormatada = $dataAtual->format('Y-m-d H:i:s');
// $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
// $receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId) // Adicionado 'equipments.' para remover a ambiguidade
// ->join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')
// ->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipments.*') // Pegando o ID da tabela equipment_work_historys e todos os campos da tabela equipments
// ->get();
// $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)
// ->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments->pluck('equipmentWorkHistorys_id')) // Usando equipmentWorkHistorys_id em vez de equipment_id
// ->get();
// $equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id');
// // Agora, em vez de buscar diretamente em Equipment, vamos pegar os detalhes via EquipmentWorkHistory
// $equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)
// ->where('equipment_status_project', 2)
// ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
// ->select([
// 'equipments.*',
// 'equipment_work_historys.*',
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 10), 'n/a') as dim"),
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 9), 'n/a') as dn"),
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 11), 'n/a') as pid"),
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 23), 'n/a') as scaffold"),
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 13), 'n/a') as isolation"),
// DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 15), 'n/a') as crane"),
// ])
// ->get();
// $detalsProject = CompanyProject::where('company_projects_id', $projectId)->first();
// $pdf = PDF::loadView('userClient.pdfReportings.equipmentsForAmbitPdf', [
// 'equipmentDetails' => $equipmentDetails,
// 'userLogoPath' => $userLogoPath,
// 'dataAmbit' => $dataAmbit,
// 'projectId' => $projectId,
// 'detalsProject' => $detalsProject,
// 'dataFormatada' => $dataFormatada
// ])->setPaper('a4', 'landscape');
// return $pdf->stream('relatorio_teste.pdf');
// // return view('userClient.pdfReportings.showReportingAllEquipmentsForAmbitProject', [
// // 'userLogoPath' => $userLogoPath,
// // 'dataAmbit' => $dataAmbit,
// // 'projectId' => $projectId
// // ]);
// }
public function showReportingForAmbitsProjectPdf($ambitId, $projectId) public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
{ {
// Obter o caminho da imagem do usuário ou uma imagem padrão
// Primeiro precisa identificar se quem esta a visualizar o relatorio e o Admin ou o Cliente
$userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg'); $userLogoPath = Auth::user()->user_logo ? public_path('user_logos/' . Auth::user()->user_logo) : public_path('user_logos/logoISPT4.0.jpg');
// Pega a data e hora atual
$dataAtual = Carbon::now(); $dataAtual = Carbon::now();
// Se quiser formatar a data, pode fazer assim:
$dataFormatada = $dataAtual->format('Y-m-d H:i:s'); $dataFormatada = $dataAtual->format('Y-m-d H:i:s');
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first(); $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
$receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId) // Adicionado 'equipments.' para remover a ambiguidade $receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId)->join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipments.*')->get();
->join('equipment_work_historys', 'equipments.equipment_id', '=', 'equipment_work_historys.equipment_id')
->select('equipment_work_historys.equipmentWorkHistorys_id', 'equipments.*') // Pegando o ID da tabela equipment_work_historys e todos os campos da tabela equipments
->get();
$filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id) $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments->pluck('equipmentWorkHistorys_id'))->get();
->whereIn('equipmentWorkHistorys_id', $receiveDataEquipments->pluck('equipmentWorkHistorys_id')) // Usando equipmentWorkHistorys_id em vez de equipment_id
->get();
$equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id'); $equipmentWorkHistoryIds = $filteredAssociations->pluck('equipmentWorkHistorys_id');
// Agora, em vez de buscar diretamente em Equipment, vamos pegar os detalhes via EquipmentWorkHistory
$equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds) $equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)
->where('equipment_status_project', 2) ->where('equipment_status_project', 2)
->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
@ -119,25 +162,21 @@ public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
]) ])
->get(); ->get();
$detalsProject = CompanyProject::where('company_projects_id', $projectId)->first(); $detalsProject = CompanyProject::where('company_projects_id', $projectId)->first();
// Usar PdfWrapper
$pdf = PDF::loadView('userClient.pdfReportings.equipmentsForAmbitPdf', [ $pdfWrapper = new \App\Services\PdfWrapper();
'equipmentDetails' => $equipmentDetails, return $pdfWrapper
'userLogoPath' => $userLogoPath, ->loadView('userClient.pdfReportings.equipmentsForAmbitPdf', [
'dataAmbit' => $dataAmbit, 'equipmentDetails' => $equipmentDetails,
'projectId' => $projectId, 'userLogoPath' => $userLogoPath,
'detalsProject' => $detalsProject, 'dataAmbit' => $dataAmbit,
'dataFormatada' => $dataFormatada 'projectId' => $projectId,
])->setPaper('a4', 'landscape'); 'detalsProject' => $detalsProject,
return $pdf->stream('relatorio_teste.pdf'); 'dataFormatada' => $dataFormatada,
])
// return view('userClient.pdfReportings.showReportingAllEquipmentsForAmbitProject', [ ->setOrientation('landscape')
// 'userLogoPath' => $userLogoPath, ->stream('relatorio_teste.pdf');
// 'dataAmbit' => $dataAmbit,
// 'projectId' => $projectId
// ]);
} }
public function getDataAllEquipmentsForAmbitOfProject(Request $request) public function getDataAllEquipmentsForAmbitOfProject(Request $request)
@ -165,7 +204,7 @@ public function getDataAllEquipmentsForAmbitOfProject(Request $request)
->whereHas('equipmentAssociationAmbit', function ($q) use ($dataAmbit) { ->whereHas('equipmentAssociationAmbit', function ($q) use ($dataAmbit) {
$q->where('ambits_id', $dataAmbit); $q->where('ambits_id', $dataAmbit);
}) })
->select(['equipment_id', 'ispt_number', 'unit_id', 'equipment_tag']); // Selecionar apenas as colunas necessárias ->select(['equipment_id', 'ispt_number', 'unit_id', 'equipment_tag']); // Selecionar apenas as colunas necessárias
// Utilize o Yajra DataTables para formatar a resposta // Utilize o Yajra DataTables para formatar a resposta
return DataTables::of($equipmentsQuery) return DataTables::of($equipmentsQuery)
@ -178,15 +217,13 @@ public function getDataAmbitsOfProject(Request $request)
// Recebe o id do Projecto atual // Recebe o id do Projecto atual
$projectId = $request->get('projectId'); $projectId = $request->get('projectId');
// Recebe os IDS passados de todos os âmbitos do projeto atual // Recebe os IDS passados de todos os âmbitos do projeto atual
$AmbitsIdString = $request->get('AmbitsIdString'); $AmbitsIdString = $request->get('AmbitsIdString');
// Converter de string para Array // Converter de string para Array
$AmbitsIdArray = explode(",", $AmbitsIdString); $AmbitsIdArray = explode(',', $AmbitsIdString);
//Busca todos os Ambitos relativos aos ids enviados por request //Busca todos os Ambitos relativos aos ids enviados por request
$query = AmbitsEquipment::whereIn('ambits_id', $AmbitsIdArray) $query = AmbitsEquipment::whereIn('ambits_id', $AmbitsIdArray)->select(['ambits_id', 'ambits_description']);
->select(['ambits_id', 'ambits_description']);
return Datatables::of($query) return Datatables::of($query)
@ -200,9 +237,9 @@ public function getDataAmbitsOfProject(Request $request)
->where('equipment_work_historys.equipment_status_project', 2) ->where('equipment_work_historys.equipment_status_project', 2)
->where('equipment_work_historys.company_projects_id', $projectId) ->where('equipment_work_historys.company_projects_id', $projectId)
// Depois, juntar-se com equipments // Depois, juntar-se com equipments
->join('equipments','equipment_work_historys.equipment_id', '=', 'equipments.equipment_id') ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
//filtrar pela company_projects_id //filtrar pela company_projects_id
->count(); // Retorna a contagem de equipamentos que atendem às condições ->count(); // Retorna a contagem de equipamentos que atendem às condições
}) })
->addColumn('action', function ($dataAmbitProject) use ($projectId) { ->addColumn('action', function ($dataAmbitProject) use ($projectId) {
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showReportingForAmbitsProject', ['ambitId' => $dataAmbitProject->ambits_id, 'projectId' => $projectId]) . '"><i class="fa-solid fa-eye text-primary"></i></a>'; $actionBtn = '<a title="Detalhes do equipamento" href="' . route('showReportingForAmbitsProject', ['ambitId' => $dataAmbitProject->ambits_id, 'projectId' => $projectId]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
@ -211,10 +248,8 @@ public function getDataAmbitsOfProject(Request $request)
->make(true); ->make(true);
} }
public function showReportingEquipmentProject($dataEquipment) public function showReportingEquipmentProject($dataEquipment)
{ {
dd($dataEquipment); dd($dataEquipment);
// return view('showReportingEquipmentProject'); // return view('showReportingEquipmentProject');
} }
@ -223,15 +258,12 @@ public function getDataEquipmentsOfProject(Request $request)
{ {
$projectId = $request->get('projectId'); $projectId = $request->get('projectId');
$initialQuery = Equipment:: $initialQuery = Equipment::whereHas('equipmentWorkHistory', function ($query) use ($projectId) {
whereHas('equipmentWorkHistory', function ($query) use ($projectId) { //Para a tabela com status = pending' deve ir equipamentos com status = 1 pois estao pendentes para Aprovar
//Para a tabela com status = pending' deve ir equipamentos com status = 1 pois estao pendentes para Aprovar // Para os restantes equipamentos vao para a tabela que lista os equipamentos da Obra,porem apenas os equipmentos com status = 0
// Para os restantes equipamentos vao para a tabela que lista os equipamentos da Obra,porem apenas os equipmentos com status = 0 //Equipamentos concluidos e aprovados, nao vao entrar em nenhuma das 2 listas ate agora.
//Equipamentos concluidos e aprovados, nao vao entrar em nenhuma das 2 listas ate agora. $query->where('equipment_status_project', 2)->where('company_projects_id', $projectId);
$query });
->where('equipment_status_project', 2)
->where('company_projects_id',$projectId);
});
$dataEquipentProject = $initialQuery->get(); $dataEquipentProject = $initialQuery->get();
@ -251,13 +283,13 @@ public function getDataEquipmentsOfProject(Request $request)
return $firstEquipmentWorkHistory ? $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description : 'N/A'; return $firstEquipmentWorkHistory ? $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description : 'N/A';
}) })
->addColumn('action', function ($dataEquipment) use ($projectId) { // Use a palavra-chave 'use' para passar $projectId ->addColumn('action', function ($dataEquipment) use ($projectId) {
// Use a palavra-chave 'use' para passar $projectId
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['equipmentStatus' => 2, 'projectID' => $projectId, 'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>'; $actionBtn = '<a title="Detalhes do equipamento" href="' . route('showAmbitDetailsProjectHistory', ['equipmentStatus' => 2, 'projectID' => $projectId, 'equipmentID' => $dataEquipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
return $actionBtn; return $actionBtn;
}) })
->make(true); ->make(true);
// // Retornar a resposta para o DataTables // // Retornar a resposta para o DataTables
// return Datatables::of($dataEquipentProject) // return Datatables::of($dataEquipentProject)
@ -271,14 +303,10 @@ public function getDataEquipmentsOfProject(Request $request)
// }) // })
// ->make(true); // ->make(true);
} }
public function showDataDetailsProjectClient($projectID) public function showDataDetailsProjectClient($projectID)
{ {
// Recebe os detalhes do Projecto. // Recebe os detalhes do Projecto.
$receiveDataProject = CompanyProject::where('company_projects_id', $projectID)->first(); $receiveDataProject = CompanyProject::where('company_projects_id', $projectID)->first();
@ -301,17 +329,15 @@ public function showDataDetailsProjectClient($projectID)
// Recebe os todos os ambitos do projecto // Recebe os todos os ambitos do projecto
$AmbitsId = $receiveEquipmentAssociatedAmbit->pluck('ambits_id')->unique()->toArray(); $AmbitsId = $receiveEquipmentAssociatedAmbit->pluck('ambits_id')->unique()->toArray();
// Vamos passar os ids dos Ambitos para a view, para envialos para a Tabela Yajra. e carregar com base nos Ambitos // Vamos passar os ids dos Ambitos para a view, para envialos para a Tabela Yajra. e carregar com base nos Ambitos
$AmbitsIdString = implode(",", $AmbitsId); $AmbitsIdString = implode(',', $AmbitsId);
// Recebe os dados de cada Ambito // Recebe os dados de cada Ambito
$receiveDataAmbitsProject = AmbitsEquipment::whereIn('ambits_id', $AmbitsId)->get(); $receiveDataAmbitsProject = AmbitsEquipment::whereIn('ambits_id', $AmbitsId)->get();
return view('userClient.showDataDetailsProjectClient', compact('receiveDetailsCompany', 'receiveDataProject', 'receiveUnitsOfProject', 'receiveAllTypeEquipments', 'receiveDataAmbitsProject', 'AmbitsIdString')); return view('userClient.showDataDetailsProjectClient', compact('receiveDetailsCompany', 'receiveDataProject', 'receiveUnitsOfProject', 'receiveAllTypeEquipments', 'receiveDataAmbitsProject', 'AmbitsIdString'));
} }
public function getDataProjectsClient(Request $request) public function getDataProjectsClient(Request $request)
{ {
// Filtros ... // Filtros ...
$allPlantsClient = $request->get('allPlantsClient'); $allPlantsClient = $request->get('allPlantsClient');
$receiveAllPlants = $request->get('receiveAllPlants'); $receiveAllPlants = $request->get('receiveAllPlants');
@ -324,7 +350,7 @@ public function getDataProjectsClient(Request $request)
$allPlantsClient = Plant::where('company_id', $clientID)->pluck('plant_id')->toArray(); $allPlantsClient = Plant::where('company_id', $clientID)->pluck('plant_id')->toArray();
$query = CompanyProject::with('plant') // Assegure-se de que a relação está correta. $query = CompanyProject::with('plant') // Assegure-se de que a relação está correta.
->whereIn('plant_id', $allPlantsClient) ->whereIn('plant_id', $allPlantsClient)
->whereNotNull('end_date') ->whereNotNull('end_date')
->select(['company_projects_id', 'plant_id', 'project_company_name', 'company_project_description', 'project_company_responsible', 'date_started', 'end_date']); ->select(['company_projects_id', 'plant_id', 'project_company_name', 'company_project_description', 'project_company_responsible', 'date_started', 'end_date']);
@ -332,7 +358,8 @@ public function getDataProjectsClient(Request $request)
$dataProjectsClient = $query->get(); $dataProjectsClient = $query->get();
return Datatables::of($dataProjectsClient) return Datatables::of($dataProjectsClient)
->addColumn('plant_name', function ($item) { // Ajuste na função anônima ->addColumn('plant_name', function ($item) {
// Ajuste na função anônima
return $item->plant ? $item->plant->plant_name : 'N/A'; // Acessando plant_name return $item->plant ? $item->plant->plant_name : 'N/A'; // Acessando plant_name
}) })
->addColumn('action', function ($projectClient) { ->addColumn('action', function ($projectClient) {
@ -341,7 +368,6 @@ public function getDataProjectsClient(Request $request)
}) })
->make(true); ->make(true);
} }
// public function getDataProjects(Request $request) // public function getDataProjects(Request $request)
@ -414,8 +440,6 @@ public function getDataProjects(Request $request)
//ExecutionProject //ExecutionProject
} }
public function receiveProjectsClient() public function receiveProjectsClient()
{ {
$client = Auth::user()->user_id; $client = Auth::user()->user_id;
@ -456,7 +480,6 @@ public function receiveManageAssetsClient()
$allEquipmentType = EquipmentType::all(); $allEquipmentType = EquipmentType::all();
return view('userClient.manageAssetsClient', compact('client', 'allPlantsClient', 'allUnitsClient', 'allEquipmentType', 'allEquipmentsClient')); return view('userClient.manageAssetsClient', compact('client', 'allPlantsClient', 'allUnitsClient', 'allEquipmentType', 'allEquipmentsClient'));
} }
public function reportingDataClient($clientID = null) public function reportingDataClient($clientID = null)
@ -465,15 +488,13 @@ public function reportingDataClient($clientID = null)
// Se clientID não foi passado, usamos o ID do usuário autenticado // Se clientID não foi passado, usamos o ID do usuário autenticado
if (is_null($clientID)) { if (is_null($clientID)) {
$clientID = Auth::user()->user_id; $clientID = Auth::user()->user_id;
$recebeAssociationCompany = AssociationCompanyUser::where('user_id', $clientID)->first(); $recebeAssociationCompany = AssociationCompanyUser::where('user_id', $clientID)->first();
$receiveCompany = Company::where('company_id',$recebeAssociationCompany->company_id)->first(); $receiveCompany = Company::where('company_id', $recebeAssociationCompany->company_id)->first();
$clientID = $recebeAssociationCompany->company_id;
$clientID = $recebeAssociationCompany->company_id;
} }
$companyDetails = Company::where('company_id', $clientID)->first(); $companyDetails = Company::where('company_id', $clientID)->first();
// Busca todas as Instalacoes com base no id do CLIENTE // Busca todas as Instalacoes com base no id do CLIENTE
@ -485,31 +506,22 @@ public function reportingDataClient($clientID = null)
$allProjectsClient = CompanyProject::whereIn('plant_id', $plantsIds)->get(); $allProjectsClient = CompanyProject::whereIn('plant_id', $plantsIds)->get();
// Obtém todos os anos distintos da coluna 'date_started' // Obtém todos os anos distintos da coluna 'date_started'
$yearsProjects = CompanyProject::selectRaw('YEAR(date_started) as year') $yearsProjects = CompanyProject::selectRaw('YEAR(date_started) as year')->distinct()->orderBy('year', 'desc')->pluck('year');
->distinct()
->orderBy('year', 'desc')
->pluck('year');
return view('userClient.reportingDataClient', compact('clientID', 'allPlantsClient', 'yearsProjects')); return view('userClient.reportingDataClient', compact('clientID', 'allPlantsClient', 'yearsProjects'));
} }
public function receiveMonths($yearsProjects) public function receiveMonths($yearsProjects)
{ {
// Obtenha todos os meses distintos da coluna 'date_started' para o ano especificado // Obtenha todos os meses distintos da coluna 'date_started' para o ano especificado
$monthsData = CompanyProject::selectRaw('MONTH(date_started) as month') $monthsData = CompanyProject::selectRaw('MONTH(date_started) as month')->whereYear('date_started', $yearsProjects)->distinct()->orderBy('month', 'asc')->get();
->whereYear('date_started', $yearsProjects)
->distinct()
->orderBy('month', 'asc')
->get();
// Formatar os dados para enviar como JSON // Formatar os dados para enviar como JSON
$formattedData = $monthsData->map(function ($item) { $formattedData = $monthsData->map(function ($item) {
$monthName = date("F", mktime(0, 0, 0, $item->month, 1)); // Converta o número do mês para o nome do mês $monthName = date('F', mktime(0, 0, 0, $item->month, 1)); // Converta o número do mês para o nome do mês
return [ return [
'id' => $item->month, // Você pode optar por enviar o número do mês 'id' => $item->month, // Você pode optar por enviar o número do mês
'name' => $monthName // ou o nome do mês, dependendo do que a sua aplicação necessita 'name' => $monthName, // ou o nome do mês, dependendo do que a sua aplicação necessita
]; ];
}); });
@ -517,24 +529,16 @@ public function receiveMonths($yearsProjects)
return response()->json($formattedData); return response()->json($formattedData);
} }
public function receiveDays($yearProjects, $monthsProjects) public function receiveDays($yearProjects, $monthsProjects)
{ {
// Obtenha todos os dias distintos para o mês e ano especificados // Obtenha todos os dias distintos para o mês e ano especificados
$daysData = CompanyProject::selectRaw('DAY(date_started) as day') $daysData = CompanyProject::selectRaw('DAY(date_started) as day')->whereYear('date_started', $yearProjects)->whereMonth('date_started', $monthsProjects)->distinct()->orderBy('day', 'asc')->get();
->whereYear('date_started', $yearProjects)
->whereMonth('date_started', $monthsProjects)
->distinct()
->orderBy('day', 'asc')
->get();
// Formatar os dados para enviar como JSON // Formatar os dados para enviar como JSON
$formattedData = $daysData->map(function ($item) { $formattedData = $daysData->map(function ($item) {
return [ return [
'id' => $item->day, // O número do dia 'id' => $item->day, // O número do dia
'name' => $item->day // O nome do dia, que neste caso é apenas o número 'name' => $item->day, // O nome do dia, que neste caso é apenas o número
]; ];
}); });

View File

@ -66,6 +66,9 @@ public function generate(): Browsershot
->waitUntilNetworkIdle(); ->waitUntilNetworkIdle();
} }
// Save the PDF to the server in the public folder // Save the PDF to the server in the public folder
public function save(string $path): void public function save(string $path): void
{ {

17
node_modules/.bin/browsers generated vendored
View File

@ -1 +1,16 @@
../@puppeteer/browsers/lib/cjs/main-cli.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" "$@"
else
exec node "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" "$@"
fi

17
node_modules/.bin/browsers.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@puppeteer\browsers\lib\cjs\main-cli.js" %*

28
node_modules/.bin/browsers.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" $args
} else {
& "$basedir/node$exe" "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" $args
} else {
& "node$exe" "$basedir/../@puppeteer/browsers/lib/cjs/main-cli.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/esbuild generated vendored
View File

@ -1 +1,16 @@
../esbuild/bin/esbuild #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@"
else
exec node "$basedir/../esbuild/bin/esbuild" "$@"
fi

17
node_modules/.bin/esbuild.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*

28
node_modules/.bin/esbuild.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
} else {
& "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args
} else {
& "node$exe" "$basedir/../esbuild/bin/esbuild" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/escodegen generated vendored
View File

@ -1 +1,16 @@
../escodegen/bin/escodegen.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../escodegen/bin/escodegen.js" "$@"
else
exec node "$basedir/../escodegen/bin/escodegen.js" "$@"
fi

17
node_modules/.bin/escodegen.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\escodegen\bin\escodegen.js" %*

28
node_modules/.bin/escodegen.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
} else {
& "$basedir/node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
} else {
& "node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/esgenerate generated vendored
View File

@ -1 +1,16 @@
../escodegen/bin/esgenerate.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../escodegen/bin/esgenerate.js" "$@"
else
exec node "$basedir/../escodegen/bin/esgenerate.js" "$@"
fi

17
node_modules/.bin/esgenerate.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\escodegen\bin\esgenerate.js" %*

28
node_modules/.bin/esgenerate.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
} else {
& "$basedir/node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
} else {
& "node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/esparse generated vendored
View File

@ -1 +1,16 @@
../esprima/bin/esparse.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@"
else
exec node "$basedir/../esprima/bin/esparse.js" "$@"
fi

17
node_modules/.bin/esparse.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esparse.js" %*

28
node_modules/.bin/esparse.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
} else {
& "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../esprima/bin/esparse.js" $args
} else {
& "node$exe" "$basedir/../esprima/bin/esparse.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/esvalidate generated vendored
View File

@ -1 +1,16 @@
../esprima/bin/esvalidate.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@"
else
exec node "$basedir/../esprima/bin/esvalidate.js" "$@"
fi

17
node_modules/.bin/esvalidate.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esvalidate.js" %*

28
node_modules/.bin/esvalidate.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
} else {
& "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
} else {
& "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/extract-zip generated vendored
View File

@ -1 +1,16 @@
../extract-zip/cli.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../extract-zip/cli.js" "$@"
else
exec node "$basedir/../extract-zip/cli.js" "$@"
fi

17
node_modules/.bin/extract-zip.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\extract-zip\cli.js" %*

28
node_modules/.bin/extract-zip.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../extract-zip/cli.js" $args
} else {
& "$basedir/node$exe" "$basedir/../extract-zip/cli.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../extract-zip/cli.js" $args
} else {
& "node$exe" "$basedir/../extract-zip/cli.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/js-yaml generated vendored
View File

@ -1 +1,16 @@
../js-yaml/bin/js-yaml.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
else
exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
fi

17
node_modules/.bin/js-yaml.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*

28
node_modules/.bin/js-yaml.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
} else {
& "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
} else {
& "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/nanoid generated vendored
View File

@ -1 +1,16 @@
../nanoid/bin/nanoid.cjs #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@"
else
exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@"
fi

17
node_modules/.bin/nanoid.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*

28
node_modules/.bin/nanoid.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
} else {
& "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
} else {
& "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/puppeteer generated vendored
View File

@ -1 +1,16 @@
../puppeteer/lib/esm/puppeteer/node/cli.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" "$@"
else
exec node "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" "$@"
fi

17
node_modules/.bin/puppeteer.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\puppeteer\lib\esm\puppeteer\node\cli.js" %*

28
node_modules/.bin/puppeteer.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" $args
} else {
& "$basedir/node$exe" "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" $args
} else {
& "node$exe" "$basedir/../puppeteer/lib/esm/puppeteer/node/cli.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/rollup generated vendored
View File

@ -1 +1,16 @@
../rollup/dist/bin/rollup #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@"
else
exec node "$basedir/../rollup/dist/bin/rollup" "$@"
fi

17
node_modules/.bin/rollup.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %*

28
node_modules/.bin/rollup.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
} else {
& "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
} else {
& "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/semver generated vendored
View File

@ -1 +1,16 @@
../semver/bin/semver.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
else
exec node "$basedir/../semver/bin/semver.js" "$@"
fi

17
node_modules/.bin/semver.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %*

28
node_modules/.bin/semver.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
} else {
& "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../semver/bin/semver.js" $args
} else {
& "node$exe" "$basedir/../semver/bin/semver.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

17
node_modules/.bin/vite generated vendored
View File

@ -1 +1,16 @@
../vite/bin/vite.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi

17
node_modules/.bin/vite.cmd generated vendored Normal file
View File

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %*

28
node_modules/.bin/vite.ps1 generated vendored Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
} else {
& "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../vite/bin/vite.js" $args
} else {
& "node$exe" "$basedir/../vite/bin/vite.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

473
node_modules/.package-lock.json generated vendored
View File

@ -53,19 +53,36 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/@esbuild/win32-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@puppeteer/browsers": { "node_modules/@puppeteer/browsers": {
"version": "2.2.3", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz",
"integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==", "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==",
"license": "Apache-2.0",
"dependencies": { "dependencies": {
"debug": "4.3.4", "debug": "^4.3.5",
"extract-zip": "2.0.1", "extract-zip": "^2.0.1",
"progress": "2.0.3", "progress": "^2.0.3",
"proxy-agent": "6.4.0", "proxy-agent": "^6.4.0",
"semver": "7.6.0", "semver": "^7.6.3",
"tar-fs": "3.0.5", "tar-fs": "^3.0.6",
"unbzip2-stream": "1.4.3", "unbzip2-stream": "^1.4.3",
"yargs": "17.7.2" "yargs": "^17.7.2"
}, },
"bin": { "bin": {
"browsers": "lib/cjs/main-cli.js" "browsers": "lib/cjs/main-cli.js"
@ -77,7 +94,8 @@
"node_modules/@tootallnate/quickjs-emscripten": { "node_modules/@tootallnate/quickjs-emscripten": {
"version": "0.23.0", "version": "0.23.0",
"resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
"integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
"license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.12.12", "version": "20.12.12",
@ -92,18 +110,17 @@
"version": "2.10.3", "version": "2.10.3",
"resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
"integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"license": "MIT",
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/agent-base": { "node_modules/agent-base": {
"version": "7.1.1", "version": "7.1.3",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
"integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
"dependencies": { "license": "MIT",
"debug": "^4.3.4"
},
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
} }
@ -112,6 +129,7 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@ -136,6 +154,7 @@
"version": "0.13.4", "version": "0.13.4",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
"integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"license": "MIT",
"dependencies": { "dependencies": {
"tslib": "^2.0.1" "tslib": "^2.0.1"
}, },
@ -161,49 +180,81 @@
} }
}, },
"node_modules/b4a": { "node_modules/b4a": {
"version": "1.6.6", "version": "1.6.7",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
"integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
"license": "Apache-2.0"
}, },
"node_modules/bare-events": { "node_modules/bare-events": {
"version": "2.2.2", "version": "2.5.4",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
"integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
"license": "Apache-2.0",
"optional": true "optional": true
}, },
"node_modules/bare-fs": { "node_modules/bare-fs": {
"version": "2.3.0", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz", "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.2.tgz",
"integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==", "integrity": "sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==",
"license": "Apache-2.0",
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"bare-events": "^2.0.0", "bare-events": "^2.5.4",
"bare-path": "^2.0.0", "bare-path": "^3.0.0",
"bare-stream": "^1.0.0" "bare-stream": "^2.6.4"
},
"engines": {
"bare": ">=1.16.0"
},
"peerDependencies": {
"bare-buffer": "*"
},
"peerDependenciesMeta": {
"bare-buffer": {
"optional": true
}
} }
}, },
"node_modules/bare-os": { "node_modules/bare-os": {
"version": "2.3.0", "version": "3.6.1",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz", "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
"integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==", "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
"optional": true "license": "Apache-2.0",
"optional": true,
"engines": {
"bare": ">=1.14.0"
}
}, },
"node_modules/bare-path": { "node_modules/bare-path": {
"version": "2.1.2", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz", "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
"integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==", "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
"license": "Apache-2.0",
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"bare-os": "^2.1.0" "bare-os": "^3.0.1"
} }
}, },
"node_modules/bare-stream": { "node_modules/bare-stream": {
"version": "1.0.0", "version": "2.6.5",
"resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz", "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
"integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==", "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
"license": "Apache-2.0",
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"streamx": "^2.16.1" "streamx": "^2.21.0"
},
"peerDependencies": {
"bare-buffer": "*",
"bare-events": "*"
},
"peerDependenciesMeta": {
"bare-buffer": {
"optional": true
},
"bare-events": {
"optional": true
}
} }
}, },
"node_modules/base64-js": { "node_modules/base64-js": {
@ -223,12 +274,14 @@
"type": "consulting", "type": "consulting",
"url": "https://feross.org/support" "url": "https://feross.org/support"
} }
] ],
"license": "MIT"
}, },
"node_modules/basic-ftp": { "node_modules/basic-ftp": {
"version": "5.0.5", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
"integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
"license": "MIT",
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
} }
@ -251,6 +304,7 @@
"url": "https://feross.org/support" "url": "https://feross.org/support"
} }
], ],
"license": "MIT",
"dependencies": { "dependencies": {
"base64-js": "^1.3.1", "base64-js": "^1.3.1",
"ieee754": "^1.1.13" "ieee754": "^1.1.13"
@ -260,6 +314,7 @@
"version": "0.2.13", "version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"license": "MIT",
"engines": { "engines": {
"node": "*" "node": "*"
} }
@ -286,13 +341,14 @@
} }
}, },
"node_modules/chromium-bidi": { "node_modules/chromium-bidi": {
"version": "0.5.19", "version": "0.6.3",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.19.tgz", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz",
"integrity": "sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==", "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==",
"license": "Apache-2.0",
"dependencies": { "dependencies": {
"mitt": "3.0.1", "mitt": "3.0.1",
"urlpattern-polyfill": "10.0.0", "urlpattern-polyfill": "10.0.0",
"zod": "3.22.4" "zod": "3.23.8"
}, },
"peerDependencies": { "peerDependencies": {
"devtools-protocol": "*" "devtools-protocol": "*"
@ -302,6 +358,7 @@
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"license": "ISC",
"dependencies": { "dependencies": {
"string-width": "^4.2.0", "string-width": "^4.2.0",
"strip-ansi": "^6.0.1", "strip-ansi": "^6.0.1",
@ -365,16 +422,18 @@
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
"integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
"license": "MIT",
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
} }
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"license": "MIT",
"dependencies": { "dependencies": {
"ms": "2.1.2" "ms": "^2.1.3"
}, },
"engines": { "engines": {
"node": ">=6.0" "node": ">=6.0"
@ -389,6 +448,7 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
"integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"ast-types": "^0.13.4", "ast-types": "^0.13.4",
"escodegen": "^2.1.0", "escodegen": "^2.1.0",
@ -408,19 +468,22 @@
} }
}, },
"node_modules/devtools-protocol": { "node_modules/devtools-protocol": {
"version": "0.0.1273771", "version": "0.0.1312386",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
"integrity": "sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==" "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
"license": "BSD-3-Clause"
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"license": "MIT"
}, },
"node_modules/end-of-stream": { "node_modules/end-of-stream": {
"version": "1.4.4", "version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"license": "MIT",
"dependencies": { "dependencies": {
"once": "^1.4.0" "once": "^1.4.0"
} }
@ -479,9 +542,10 @@
} }
}, },
"node_modules/escalade": { "node_modules/escalade": {
"version": "3.1.2", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"license": "MIT",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@ -498,6 +562,7 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
"integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"esprima": "^4.0.1", "esprima": "^4.0.1",
"estraverse": "^5.2.0", "estraverse": "^5.2.0",
@ -518,6 +583,7 @@
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"license": "BSD-2-Clause",
"bin": { "bin": {
"esparse": "bin/esparse.js", "esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js" "esvalidate": "bin/esvalidate.js"
@ -530,6 +596,7 @@
"version": "5.3.0", "version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"license": "BSD-2-Clause",
"engines": { "engines": {
"node": ">=4.0" "node": ">=4.0"
} }
@ -538,6 +605,7 @@
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"license": "BSD-2-Clause",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@ -546,6 +614,7 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"debug": "^4.1.1", "debug": "^4.1.1",
"get-stream": "^5.1.0", "get-stream": "^5.1.0",
@ -564,12 +633,14 @@
"node_modules/fast-fifo": { "node_modules/fast-fifo": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"license": "MIT"
}, },
"node_modules/fd-slicer": { "node_modules/fd-slicer": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"license": "MIT",
"dependencies": { "dependencies": {
"pend": "~1.2.0" "pend": "~1.2.0"
} }
@ -608,23 +679,11 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/fs-extra": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
"integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=14.14"
}
},
"node_modules/get-caller-file": { "node_modules/get-caller-file": {
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"license": "ISC",
"engines": { "engines": {
"node": "6.* || 8.* || >= 10.*" "node": "6.* || 8.* || >= 10.*"
} }
@ -633,6 +692,7 @@
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"license": "MIT",
"dependencies": { "dependencies": {
"pump": "^3.0.0" "pump": "^3.0.0"
}, },
@ -644,24 +704,19 @@
} }
}, },
"node_modules/get-uri": { "node_modules/get-uri": {
"version": "6.0.3", "version": "6.0.4",
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
"integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"basic-ftp": "^5.0.2", "basic-ftp": "^5.0.2",
"data-uri-to-buffer": "^6.0.2", "data-uri-to-buffer": "^6.0.2",
"debug": "^4.3.4", "debug": "^4.3.4"
"fs-extra": "^11.2.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
} }
}, },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/has-flag": { "node_modules/has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@ -674,6 +729,7 @@
"version": "7.0.2", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"license": "MIT",
"dependencies": { "dependencies": {
"agent-base": "^7.1.0", "agent-base": "^7.1.0",
"debug": "^4.3.4" "debug": "^4.3.4"
@ -683,11 +739,12 @@
} }
}, },
"node_modules/https-proxy-agent": { "node_modules/https-proxy-agent": {
"version": "7.0.4", "version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"license": "MIT",
"dependencies": { "dependencies": {
"agent-base": "^7.0.2", "agent-base": "^7.1.2",
"debug": "4" "debug": "4"
}, },
"engines": { "engines": {
@ -711,7 +768,8 @@
"type": "consulting", "type": "consulting",
"url": "https://feross.org/support" "url": "https://feross.org/support"
} }
] ],
"license": "BSD-3-Clause"
}, },
"node_modules/import-fresh": { "node_modules/import-fresh": {
"version": "3.3.0", "version": "3.3.0",
@ -732,6 +790,7 @@
"version": "9.0.5", "version": "9.0.5",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
"integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
"license": "MIT",
"dependencies": { "dependencies": {
"jsbn": "1.1.0", "jsbn": "1.1.0",
"sprintf-js": "^1.1.3" "sprintf-js": "^1.1.3"
@ -749,6 +808,7 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"license": "MIT",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@ -772,24 +832,14 @@
"node_modules/jsbn": { "node_modules/jsbn": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
"license": "MIT"
}, },
"node_modules/json-parse-even-better-errors": { "node_modules/json-parse-even-better-errors": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
}, },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/laravel-echo": { "node_modules/laravel-echo": {
"version": "1.16.1", "version": "1.16.1",
"resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.16.1.tgz", "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.16.1.tgz",
@ -823,6 +873,7 @@
"version": "7.18.3", "version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"license": "ISC",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
@ -851,12 +902,14 @@
"node_modules/mitt": { "node_modules/mitt": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
"integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
"license": "MIT"
}, },
"node_modules/ms": { "node_modules/ms": {
"version": "2.1.2", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "3.3.7", "version": "3.3.7",
@ -880,6 +933,7 @@
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
"integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"license": "MIT",
"engines": { "engines": {
"node": ">= 0.4.0" "node": ">= 0.4.0"
} }
@ -888,23 +942,25 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"license": "ISC",
"dependencies": { "dependencies": {
"wrappy": "1" "wrappy": "1"
} }
}, },
"node_modules/pac-proxy-agent": { "node_modules/pac-proxy-agent": {
"version": "7.0.1", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
"integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@tootallnate/quickjs-emscripten": "^0.23.0", "@tootallnate/quickjs-emscripten": "^0.23.0",
"agent-base": "^7.0.2", "agent-base": "^7.1.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"get-uri": "^6.0.1", "get-uri": "^6.0.1",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.6",
"pac-resolver": "^7.0.0", "pac-resolver": "^7.0.1",
"socks-proxy-agent": "^8.0.2" "socks-proxy-agent": "^8.0.5"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
@ -914,6 +970,7 @@
"version": "7.0.1", "version": "7.0.1",
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
"integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
"license": "MIT",
"dependencies": { "dependencies": {
"degenerator": "^5.0.0", "degenerator": "^5.0.0",
"netmask": "^2.0.2" "netmask": "^2.0.2"
@ -953,7 +1010,8 @@
"node_modules/pend": { "node_modules/pend": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"license": "MIT"
}, },
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.0.0", "version": "1.0.0",
@ -1004,23 +1062,25 @@
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"license": "MIT",
"engines": { "engines": {
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/proxy-agent": { "node_modules/proxy-agent": {
"version": "6.4.0", "version": "6.5.0",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
"integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
"license": "MIT",
"dependencies": { "dependencies": {
"agent-base": "^7.0.2", "agent-base": "^7.1.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"http-proxy-agent": "^7.0.1", "http-proxy-agent": "^7.0.1",
"https-proxy-agent": "^7.0.3", "https-proxy-agent": "^7.0.6",
"lru-cache": "^7.14.1", "lru-cache": "^7.14.1",
"pac-proxy-agent": "^7.0.1", "pac-proxy-agent": "^7.1.0",
"proxy-from-env": "^1.1.0", "proxy-from-env": "^1.1.0",
"socks-proxy-agent": "^8.0.2" "socks-proxy-agent": "^8.0.5"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
@ -1032,24 +1092,26 @@
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
}, },
"node_modules/pump": { "node_modules/pump": {
"version": "3.0.0", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"license": "MIT",
"dependencies": { "dependencies": {
"end-of-stream": "^1.1.0", "end-of-stream": "^1.1.0",
"once": "^1.3.1" "once": "^1.3.1"
} }
}, },
"node_modules/puppeteer": { "node_modules/puppeteer": {
"version": "22.8.2", "version": "22.15.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.8.2.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz",
"integrity": "sha512-yNZmKZHhCtBAjwuzonMyzgXLYxnvR+tbpatuyMffK+zmag84xyqE2EvPEWV1FvDXwW3m+/PT4Zp4KLerWWydQQ==", "integrity": "sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "2.2.3", "@puppeteer/browsers": "2.3.0",
"cosmiconfig": "9.0.0", "cosmiconfig": "^9.0.0",
"devtools-protocol": "0.0.1273771", "devtools-protocol": "0.0.1312386",
"puppeteer-core": "22.8.2" "puppeteer-core": "22.15.0"
}, },
"bin": { "bin": {
"puppeteer": "lib/esm/puppeteer/node/cli.js" "puppeteer": "lib/esm/puppeteer/node/cli.js"
@ -1059,15 +1121,16 @@
} }
}, },
"node_modules/puppeteer-core": { "node_modules/puppeteer-core": {
"version": "22.8.2", "version": "22.15.0",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.8.2.tgz", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz",
"integrity": "sha512-Gg9jUdJeF+UDbYPhwD602ky1LeS+AXDksl6sludrti1b7Sv/U4ZGY1LFyejarkIBCSHiPWL9SngXKCNcdZWBgQ==", "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==",
"license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "2.2.3", "@puppeteer/browsers": "2.3.0",
"chromium-bidi": "0.5.19", "chromium-bidi": "0.6.3",
"debug": "4.3.4", "debug": "^4.3.6",
"devtools-protocol": "0.0.1273771", "devtools-protocol": "0.0.1312386",
"ws": "8.17.0" "ws": "^8.18.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
@ -1081,15 +1144,11 @@
"tweetnacl": "^1.0.3" "tweetnacl": "^1.0.3"
} }
}, },
"node_modules/queue-tick": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
},
"node_modules/require-directory": { "node_modules/require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"license": "MIT",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@ -1119,12 +1178,10 @@
} }
}, },
"node_modules/semver": { "node_modules/semver": {
"version": "7.6.0", "version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dependencies": { "license": "ISC",
"lru-cache": "^6.0.0"
},
"bin": { "bin": {
"semver": "bin/semver.js" "semver": "bin/semver.js"
}, },
@ -1132,30 +1189,21 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/semver/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/smart-buffer": { "node_modules/smart-buffer": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"license": "MIT",
"engines": { "engines": {
"node": ">= 6.0.0", "node": ">= 6.0.0",
"npm": ">= 3.0.0" "npm": ">= 3.0.0"
} }
}, },
"node_modules/socks": { "node_modules/socks": {
"version": "2.8.3", "version": "2.8.4",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
"integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"ip-address": "^9.0.5", "ip-address": "^9.0.5",
"smart-buffer": "^4.2.0" "smart-buffer": "^4.2.0"
@ -1166,13 +1214,14 @@
} }
}, },
"node_modules/socks-proxy-agent": { "node_modules/socks-proxy-agent": {
"version": "8.0.3", "version": "8.0.5",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
"integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"license": "MIT",
"dependencies": { "dependencies": {
"agent-base": "^7.1.1", "agent-base": "^7.1.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"socks": "^2.7.1" "socks": "^2.8.3"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 14"
@ -1182,6 +1231,7 @@
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"license": "BSD-3-Clause",
"optional": true, "optional": true,
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -1199,15 +1249,17 @@
"node_modules/sprintf-js": { "node_modules/sprintf-js": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
"license": "BSD-3-Clause"
}, },
"node_modules/streamx": { "node_modules/streamx": {
"version": "2.16.1", "version": "2.22.0",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
"integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
"license": "MIT",
"dependencies": { "dependencies": {
"fast-fifo": "^1.1.0", "fast-fifo": "^1.3.2",
"queue-tick": "^1.0.1" "text-decoder": "^1.1.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"bare-events": "^2.2.0" "bare-events": "^2.2.0"
@ -1217,6 +1269,7 @@
"version": "4.2.3", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"license": "MIT",
"dependencies": { "dependencies": {
"emoji-regex": "^8.0.0", "emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0", "is-fullwidth-code-point": "^3.0.0",
@ -1230,6 +1283,7 @@
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"license": "MIT",
"dependencies": { "dependencies": {
"ansi-regex": "^5.0.1" "ansi-regex": "^5.0.1"
}, },
@ -1249,37 +1303,50 @@
} }
}, },
"node_modules/tar-fs": { "node_modules/tar-fs": {
"version": "3.0.5", "version": "3.0.8",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
"integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
"license": "MIT",
"dependencies": { "dependencies": {
"pump": "^3.0.0", "pump": "^3.0.0",
"tar-stream": "^3.1.5" "tar-stream": "^3.1.5"
}, },
"optionalDependencies": { "optionalDependencies": {
"bare-fs": "^2.1.1", "bare-fs": "^4.0.1",
"bare-path": "^2.1.0" "bare-path": "^3.0.0"
} }
}, },
"node_modules/tar-stream": { "node_modules/tar-stream": {
"version": "3.1.7", "version": "3.1.7",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"b4a": "^1.6.4", "b4a": "^1.6.4",
"fast-fifo": "^1.2.0", "fast-fifo": "^1.2.0",
"streamx": "^2.15.0" "streamx": "^2.15.0"
} }
}, },
"node_modules/text-decoder": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
"integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
"license": "Apache-2.0",
"dependencies": {
"b4a": "^1.6.4"
}
},
"node_modules/through": { "node_modules/through": {
"version": "2.3.8", "version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"license": "MIT"
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.6.2", "version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
}, },
"node_modules/tweetnacl": { "node_modules/tweetnacl": {
"version": "1.0.3", "version": "1.0.3",
@ -1290,6 +1357,7 @@
"version": "1.4.3", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
"integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
"license": "MIT",
"dependencies": { "dependencies": {
"buffer": "^5.2.1", "buffer": "^5.2.1",
"through": "^2.3.8" "through": "^2.3.8"
@ -1301,18 +1369,11 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"optional": true "optional": true
}, },
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/urlpattern-polyfill": { "node_modules/urlpattern-polyfill": {
"version": "10.0.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
"integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
"license": "MIT"
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "4.5.3", "version": "4.5.3",
@ -1383,6 +1444,7 @@
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"license": "MIT",
"dependencies": { "dependencies": {
"ansi-styles": "^4.0.0", "ansi-styles": "^4.0.0",
"string-width": "^4.1.0", "string-width": "^4.1.0",
@ -1399,6 +1461,7 @@
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"dependencies": { "dependencies": {
"color-convert": "^2.0.1" "color-convert": "^2.0.1"
}, },
@ -1413,6 +1476,7 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"color-name": "~1.1.4" "color-name": "~1.1.4"
}, },
@ -1423,17 +1487,20 @@
"node_modules/wrap-ansi/node_modules/color-name": { "node_modules/wrap-ansi/node_modules/color-name": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
}, },
"node_modules/wrappy": { "node_modules/wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"license": "ISC"
}, },
"node_modules/ws": { "node_modules/ws": {
"version": "8.17.0", "version": "8.18.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
"integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
"license": "MIT",
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
}, },
@ -1454,19 +1521,16 @@
"version": "5.0.8", "version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"license": "ISC",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yargs": { "node_modules/yargs": {
"version": "17.7.2", "version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"license": "MIT",
"dependencies": { "dependencies": {
"cliui": "^8.0.1", "cliui": "^8.0.1",
"escalade": "^3.1.1", "escalade": "^3.1.1",
@ -1484,6 +1548,7 @@
"version": "21.1.1", "version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"license": "ISC",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
@ -1492,15 +1557,17 @@
"version": "2.10.0", "version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"license": "MIT",
"dependencies": { "dependencies": {
"buffer-crc32": "~0.2.3", "buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0" "fd-slicer": "~1.1.0"
} }
}, },
"node_modules/zod": { "node_modules/zod": {
"version": "3.22.4", "version": "3.23.8",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
"integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"license": "MIT",
"funding": { "funding": {
"url": "https://github.com/sponsors/colinhacks" "url": "https://github.com/sponsors/colinhacks"
} }

3
node_modules/@esbuild/win32-x64/README.md generated vendored Normal file
View File

@ -0,0 +1,3 @@
# esbuild
This is the Windows 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details.

BIN
node_modules/@esbuild/win32-x64/esbuild.exe generated vendored Normal file

Binary file not shown.

17
node_modules/@esbuild/win32-x64/package.json generated vendored Normal file
View File

@ -0,0 +1,17 @@
{
"name": "@esbuild/win32-x64",
"version": "0.18.20",
"description": "The Windows 64-bit binary for esbuild, a JavaScript bundler.",
"repository": "https://github.com/evanw/esbuild",
"license": "MIT",
"preferUnplugged": true,
"engines": {
"node": ">=12"
},
"os": [
"win32"
],
"cpu": [
"x64"
]
}

View File

@ -20,7 +20,10 @@ export declare class CLI {
}; };
allowCachePathOverride?: boolean; allowCachePathOverride?: boolean;
pinnedBrowsers?: Partial<{ pinnedBrowsers?: Partial<{
[key in Browser]: string; [key in Browser]: {
buildId: string;
skipDownload: boolean;
};
}>; }>;
}, rl?: readline.Interface); }, rl?: readline.Interface);
run(argv: string[]): Promise<void>; run(argv: string[]): Promise<void>;

View File

@ -1 +1 @@
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,gCAAgC,CAAC;AAmCxC;;GAEG;AACH,qBAAa,GAAG;;gBASZ,IAAI,CAAC,EACD,MAAM,GACN;QACE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACnD,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;aAAE,GAAG,IAAI,OAAO,GAAG,MAAM;SAAC,CAAC,CAAC;KACtD,EACL,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwDnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAoRzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAqBvD"} {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,gCAAgC,CAAC;AAoCxC;;GAEG;AACH,qBAAa,GAAG;;gBAcZ,IAAI,CAAC,EACD,MAAM,GACN;QACE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACnD,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;aACtB,GAAG,IAAI,OAAO,GAAG;gBAChB,OAAO,EAAE,MAAM,CAAC;gBAChB,YAAY,EAAE,OAAO,CAAC;aACvB;SACF,CAAC,CAAC;KACJ,EACL,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwDnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAsTzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAqBvD"}

View File

@ -121,8 +121,10 @@ class CLI {
} }
#build(yargs) { #build(yargs) {
const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest'; const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest';
// If there are pinned browsers allow the positional arg to be optional
const browserArgType = this.#pinnedBrowsers ? '[browser]' : '<browser>';
return yargs return yargs
.command('install <browser>', 'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).', yargs => { .command(`install ${browserArgType}`, 'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).', yargs => {
this.#defineBrowserParameter(yargs); this.#defineBrowserParameter(yargs);
this.#definePlatformParameter(yargs); this.#definePlatformParameter(yargs);
this.#definePathParameter(yargs); this.#definePathParameter(yargs);
@ -130,6 +132,9 @@ class CLI {
type: 'string', type: 'string',
desc: 'Base URL to download from', desc: 'Base URL to download from',
}); });
if (this.#pinnedBrowsers) {
yargs.example('$0 install', 'Install all pinned browsers');
}
yargs.example('$0 install chrome', `Install the ${latestOrPinned} available build of the Chrome browser.`); yargs.example('$0 install chrome', `Install the ${latestOrPinned} available build of the Chrome browser.`);
yargs.example('$0 install chrome@latest', 'Install the latest available build for the Chrome browser.'); yargs.example('$0 install chrome@latest', 'Install the latest available build for the Chrome browser.');
yargs.example('$0 install chrome@stable', 'Install the latest available build for the Chrome browser from the stable channel.'); yargs.example('$0 install chrome@stable', 'Install the latest available build for the Chrome browser from the stable channel.');
@ -157,36 +162,31 @@ class CLI {
} }
}, async (argv) => { }, async (argv) => {
const args = argv; const args = argv;
args.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)(); if (this.#pinnedBrowsers && !args.browser) {
if (!args.platform) { // Use allSettled to avoid scenarios that
throw new Error(`Could not resolve the current platform`); // a browser may fail early and leave the other
} // installation in a faulty state
if (args.browser.buildId === 'pinned') { const result = await Promise.allSettled(Object.entries(this.#pinnedBrowsers).map(async ([browser, options]) => {
const pinnedVersion = this.#pinnedBrowsers?.[args.browser.name]; if (options.skipDownload) {
if (!pinnedVersion) { return;
throw new Error(`No pinned version found for ${args.browser.name}`); }
await this.#install({
...argv,
browser: {
name: browser,
buildId: options.buildId,
},
});
}));
for (const install of result) {
if (install.status === 'rejected') {
throw install.reason;
}
} }
args.browser.buildId = pinnedVersion;
} }
const originalBuildId = args.browser.buildId; else {
args.browser.buildId = await (0, browser_data_js_1.resolveBuildId)(args.browser.name, args.platform, args.browser.buildId); await this.#install(args);
await (0, install_js_1.install)({ }
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(args.browser.name, args.browser.buildId),
baseUrl: args.baseUrl,
buildIdAlias: originalBuildId !== args.browser.buildId
? originalBuildId
: undefined,
});
console.log(`${args.browser.name}@${args.browser.buildId} ${(0, launch_js_1.computeExecutablePath)({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`);
}) })
.command('launch <browser>', 'Launch the specified browser', yargs => { .command('launch <browser>', 'Launch the specified browser', yargs => {
this.#defineBrowserParameter(yargs); this.#defineBrowserParameter(yargs);
@ -259,6 +259,39 @@ class CLI {
? 'pinned' ? 'pinned'
: 'latest'; : 'latest';
} }
async #install(args) {
args.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
if (!args.browser) {
throw new Error(`No browser arg proveded`);
}
if (!args.platform) {
throw new Error(`Could not resolve the current platform`);
}
if (args.browser.buildId === 'pinned') {
const options = this.#pinnedBrowsers?.[args.browser.name];
if (!options || !options.buildId) {
throw new Error(`No pinned version found for ${args.browser.name}`);
}
args.browser.buildId = options.buildId;
}
const originalBuildId = args.browser.buildId;
args.browser.buildId = await (0, browser_data_js_1.resolveBuildId)(args.browser.name, args.platform, args.browser.buildId);
await (0, install_js_1.install)({
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(args.browser.name, args.browser.buildId),
baseUrl: args.baseUrl,
buildIdAlias: originalBuildId !== args.browser.buildId ? originalBuildId : undefined,
});
console.log(`${args.browser.name}@${args.browser.buildId} ${(0, launch_js_1.computeExecutablePath)({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`);
}
} }
exports.CLI = CLI; exports.CLI = CLI;
/** /**

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"} {"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"}

View File

@ -36,11 +36,9 @@ const child_process_1 = require("child_process");
const fs_1 = require("fs"); const fs_1 = require("fs");
const promises_1 = require("fs/promises"); const promises_1 = require("fs/promises");
const path = __importStar(require("path")); const path = __importStar(require("path"));
const util_1 = require("util");
const extract_zip_1 = __importDefault(require("extract-zip")); const extract_zip_1 = __importDefault(require("extract-zip"));
const tar_fs_1 = __importDefault(require("tar-fs")); const tar_fs_1 = __importDefault(require("tar-fs"));
const unbzip2_stream_1 = __importDefault(require("unbzip2-stream")); const unbzip2_stream_1 = __importDefault(require("unbzip2-stream"));
const exec = (0, util_1.promisify)(child_process_1.exec);
/** /**
* @internal * @internal
*/ */
@ -87,8 +85,13 @@ function extractTar(tarPath, folderPath) {
* @internal * @internal
*/ */
async function installDMG(dmgPath, folderPath) { async function installDMG(dmgPath, folderPath) {
const { stdout } = await exec(`hdiutil attach -nobrowse -noautoopen "${dmgPath}"`); const { stdout } = (0, child_process_1.spawnSync)(`hdiutil`, [
const volumes = stdout.match(/\/Volumes\/(.*)/m); 'attach',
'-nobrowse',
'-noautoopen',
dmgPath,
]);
const volumes = stdout.toString('utf8').match(/\/Volumes\/(.*)/m);
if (!volumes) { if (!volumes) {
throw new Error(`Could not find volume path in ${stdout}`); throw new Error(`Could not find volume path in ${stdout}`);
} }
@ -102,10 +105,10 @@ async function installDMG(dmgPath, folderPath) {
throw new Error(`Cannot find app in ${mountPath}`); throw new Error(`Cannot find app in ${mountPath}`);
} }
const mountedPath = path.join(mountPath, appName); const mountedPath = path.join(mountPath, appName);
await exec(`cp -R "${mountedPath}" "${folderPath}"`); (0, child_process_1.spawnSync)('cp', ['-R', mountedPath, folderPath]);
} }
finally { finally {
await exec(`hdiutil detach "${mountPath}" -quiet`); (0, child_process_1.spawnSync)('hdiutil', ['detach', mountPath, '-quiet']);
} }
} }
//# sourceMappingURL=fileUtil.js.map //# sourceMappingURL=fileUtil.js.map

View File

@ -1 +1 @@
{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"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"} {"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"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"}

View File

@ -1 +1 @@
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,OAAO,EACP,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAQ,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAwBnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AA8JnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAe3E"} {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EACL,OAAO,EACP,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAQ,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAwBnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AAgMnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAe3E"}

View File

@ -10,6 +10,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.canDownload = exports.getInstalledBrowsers = exports.uninstall = exports.install = void 0; exports.canDownload = exports.getInstalledBrowsers = exports.uninstall = exports.install = void 0;
const assert_1 = __importDefault(require("assert")); const assert_1 = __importDefault(require("assert"));
const child_process_1 = require("child_process");
const fs_1 = require("fs"); const fs_1 = require("fs");
const promises_1 = require("fs/promises"); const promises_1 = require("fs/promises");
const os_1 = __importDefault(require("os")); const os_1 = __importDefault(require("os"));
@ -119,6 +120,7 @@ async function installUrl(url, options) {
if (!(0, fs_1.existsSync)(installedBrowser.executablePath)) { if (!(0, fs_1.existsSync)(installedBrowser.executablePath)) {
throw new Error(`The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing`); throw new Error(`The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing`);
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} }
debugInstall(`Downloading binary from ${url}`); debugInstall(`Downloading binary from ${url}`);
@ -143,6 +145,7 @@ async function installUrl(url, options) {
metadata.aliases[options.buildIdAlias] = options.buildId; metadata.aliases[options.buildIdAlias] = options.buildId;
installedBrowser.writeMetadata(metadata); installedBrowser.writeMetadata(metadata);
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} }
finally { finally {
@ -151,6 +154,30 @@ async function installUrl(url, options) {
} }
} }
} }
async function runSetup(installedBrowser) {
// On Windows for Chrome invoke setup.exe to configure sandboxes.
if ((installedBrowser.platform === browser_data_js_1.BrowserPlatform.WIN32 ||
installedBrowser.platform === browser_data_js_1.BrowserPlatform.WIN64) &&
installedBrowser.browser === browser_data_js_1.Browser.CHROME &&
installedBrowser.platform === (0, detectPlatform_js_1.detectBrowserPlatform)()) {
try {
debugTime('permissions');
const browserDir = path_1.default.dirname(installedBrowser.executablePath);
const setupExePath = path_1.default.join(browserDir, 'setup.exe');
if (!(0, fs_1.existsSync)(setupExePath)) {
return;
}
(0, child_process_1.spawnSync)(path_1.default.join(browserDir, 'setup.exe'), [`--configure-browser-in-directory=` + browserDir], {
shell: true,
});
// TODO: Handle error here. Currently the setup.exe sometimes
// errors although it sets the permissions correctly.
}
finally {
debugTimeEnd('permissions');
}
}
}
/** /**
* *
* @public * @public

File diff suppressed because one or more lines are too long

View File

@ -20,7 +20,10 @@ export declare class CLI {
}; };
allowCachePathOverride?: boolean; allowCachePathOverride?: boolean;
pinnedBrowsers?: Partial<{ pinnedBrowsers?: Partial<{
[key in Browser]: string; [key in Browser]: {
buildId: string;
skipDownload: boolean;
};
}>; }>;
}, rl?: readline.Interface); }, rl?: readline.Interface);
run(argv: string[]): Promise<void>; run(argv: string[]): Promise<void>;

View File

@ -1 +1 @@
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,gCAAgC,CAAC;AAmCxC;;GAEG;AACH,qBAAa,GAAG;;gBASZ,IAAI,CAAC,EACD,MAAM,GACN;QACE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACnD,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;aAAE,GAAG,IAAI,OAAO,GAAG,MAAM;SAAC,CAAC,CAAC;KACtD,EACL,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwDnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAoRzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAqBvD"} {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,gCAAgC,CAAC;AAoCxC;;GAEG;AACH,qBAAa,GAAG;;gBAcZ,IAAI,CAAC,EACD,MAAM,GACN;QACE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACnD,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;aACtB,GAAG,IAAI,OAAO,GAAG;gBAChB,OAAO,EAAE,MAAM,CAAC;gBAChB,YAAY,EAAE,OAAO,CAAC;aACvB;SACF,CAAC,CAAC;KACJ,EACL,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwDnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAsTzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAqBvD"}

View File

@ -92,8 +92,10 @@ export class CLI {
} }
#build(yargs) { #build(yargs) {
const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest'; const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest';
// If there are pinned browsers allow the positional arg to be optional
const browserArgType = this.#pinnedBrowsers ? '[browser]' : '<browser>';
return yargs return yargs
.command('install <browser>', 'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).', yargs => { .command(`install ${browserArgType}`, 'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).', yargs => {
this.#defineBrowserParameter(yargs); this.#defineBrowserParameter(yargs);
this.#definePlatformParameter(yargs); this.#definePlatformParameter(yargs);
this.#definePathParameter(yargs); this.#definePathParameter(yargs);
@ -101,6 +103,9 @@ export class CLI {
type: 'string', type: 'string',
desc: 'Base URL to download from', desc: 'Base URL to download from',
}); });
if (this.#pinnedBrowsers) {
yargs.example('$0 install', 'Install all pinned browsers');
}
yargs.example('$0 install chrome', `Install the ${latestOrPinned} available build of the Chrome browser.`); yargs.example('$0 install chrome', `Install the ${latestOrPinned} available build of the Chrome browser.`);
yargs.example('$0 install chrome@latest', 'Install the latest available build for the Chrome browser.'); yargs.example('$0 install chrome@latest', 'Install the latest available build for the Chrome browser.');
yargs.example('$0 install chrome@stable', 'Install the latest available build for the Chrome browser from the stable channel.'); yargs.example('$0 install chrome@stable', 'Install the latest available build for the Chrome browser from the stable channel.');
@ -128,36 +133,31 @@ export class CLI {
} }
}, async (argv) => { }, async (argv) => {
const args = argv; const args = argv;
args.platform ??= detectBrowserPlatform(); if (this.#pinnedBrowsers && !args.browser) {
if (!args.platform) { // Use allSettled to avoid scenarios that
throw new Error(`Could not resolve the current platform`); // a browser may fail early and leave the other
} // installation in a faulty state
if (args.browser.buildId === 'pinned') { const result = await Promise.allSettled(Object.entries(this.#pinnedBrowsers).map(async ([browser, options]) => {
const pinnedVersion = this.#pinnedBrowsers?.[args.browser.name]; if (options.skipDownload) {
if (!pinnedVersion) { return;
throw new Error(`No pinned version found for ${args.browser.name}`); }
await this.#install({
...argv,
browser: {
name: browser,
buildId: options.buildId,
},
});
}));
for (const install of result) {
if (install.status === 'rejected') {
throw install.reason;
}
} }
args.browser.buildId = pinnedVersion;
} }
const originalBuildId = args.browser.buildId; else {
args.browser.buildId = await resolveBuildId(args.browser.name, args.platform, args.browser.buildId); await this.#install(args);
await install({ }
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(args.browser.name, args.browser.buildId),
baseUrl: args.baseUrl,
buildIdAlias: originalBuildId !== args.browser.buildId
? originalBuildId
: undefined,
});
console.log(`${args.browser.name}@${args.browser.buildId} ${computeExecutablePath({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`);
}) })
.command('launch <browser>', 'Launch the specified browser', yargs => { .command('launch <browser>', 'Launch the specified browser', yargs => {
this.#defineBrowserParameter(yargs); this.#defineBrowserParameter(yargs);
@ -230,6 +230,39 @@ export class CLI {
? 'pinned' ? 'pinned'
: 'latest'; : 'latest';
} }
async #install(args) {
args.platform ??= detectBrowserPlatform();
if (!args.browser) {
throw new Error(`No browser arg proveded`);
}
if (!args.platform) {
throw new Error(`Could not resolve the current platform`);
}
if (args.browser.buildId === 'pinned') {
const options = this.#pinnedBrowsers?.[args.browser.name];
if (!options || !options.buildId) {
throw new Error(`No pinned version found for ${args.browser.name}`);
}
args.browser.buildId = options.buildId;
}
const originalBuildId = args.browser.buildId;
args.browser.buildId = await resolveBuildId(args.browser.name, args.platform, args.browser.buildId);
await install({
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(args.browser.name, args.browser.buildId),
baseUrl: args.baseUrl,
buildIdAlias: originalBuildId !== args.browser.buildId ? originalBuildId : undefined,
});
console.log(`${args.browser.name}@${args.browser.buildId} ${computeExecutablePath({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`);
}
} }
/** /**
* @public * @public

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"} {"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"}

View File

@ -3,15 +3,13 @@
* Copyright 2023 Google Inc. * Copyright 2023 Google Inc.
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
import { exec as execChildProcess, spawnSync } from 'child_process'; import { spawnSync } from 'child_process';
import { createReadStream } from 'fs'; import { createReadStream } from 'fs';
import { mkdir, readdir } from 'fs/promises'; import { mkdir, readdir } from 'fs/promises';
import * as path from 'path'; import * as path from 'path';
import { promisify } from 'util';
import extractZip from 'extract-zip'; import extractZip from 'extract-zip';
import tar from 'tar-fs'; import tar from 'tar-fs';
import bzip from 'unbzip2-stream'; import bzip from 'unbzip2-stream';
const exec = promisify(execChildProcess);
/** /**
* @internal * @internal
*/ */
@ -57,8 +55,13 @@ function extractTar(tarPath, folderPath) {
* @internal * @internal
*/ */
async function installDMG(dmgPath, folderPath) { async function installDMG(dmgPath, folderPath) {
const { stdout } = await exec(`hdiutil attach -nobrowse -noautoopen "${dmgPath}"`); const { stdout } = spawnSync(`hdiutil`, [
const volumes = stdout.match(/\/Volumes\/(.*)/m); 'attach',
'-nobrowse',
'-noautoopen',
dmgPath,
]);
const volumes = stdout.toString('utf8').match(/\/Volumes\/(.*)/m);
if (!volumes) { if (!volumes) {
throw new Error(`Could not find volume path in ${stdout}`); throw new Error(`Could not find volume path in ${stdout}`);
} }
@ -72,10 +75,10 @@ async function installDMG(dmgPath, folderPath) {
throw new Error(`Cannot find app in ${mountPath}`); throw new Error(`Cannot find app in ${mountPath}`);
} }
const mountedPath = path.join(mountPath, appName); const mountedPath = path.join(mountPath, appName);
await exec(`cp -R "${mountedPath}" "${folderPath}"`); spawnSync('cp', ['-R', mountedPath, folderPath]);
} }
finally { finally {
await exec(`hdiutil detach "${mountPath}" -quiet`); spawnSync('hdiutil', ['detach', mountPath, '-quiet']);
} }
} }
//# sourceMappingURL=fileUtil.js.map //# sourceMappingURL=fileUtil.js.map

View File

@ -1 +1 @@
{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"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"} {"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"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"}

View File

@ -1 +1 @@
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,OAAO,EACP,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAQ,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAwBnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AA8JnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAe3E"} {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EACL,OAAO,EACP,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAQ,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAwBnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AAgMnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAe3E"}

View File

@ -4,6 +4,7 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
import assert from 'assert'; import assert from 'assert';
import { spawnSync } from 'child_process';
import { existsSync } from 'fs'; import { existsSync } from 'fs';
import { mkdir, unlink } from 'fs/promises'; import { mkdir, unlink } from 'fs/promises';
import os from 'os'; import os from 'os';
@ -112,6 +113,7 @@ async function installUrl(url, options) {
if (!existsSync(installedBrowser.executablePath)) { if (!existsSync(installedBrowser.executablePath)) {
throw new Error(`The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing`); throw new Error(`The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing`);
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} }
debugInstall(`Downloading binary from ${url}`); debugInstall(`Downloading binary from ${url}`);
@ -136,6 +138,7 @@ async function installUrl(url, options) {
metadata.aliases[options.buildIdAlias] = options.buildId; metadata.aliases[options.buildIdAlias] = options.buildId;
installedBrowser.writeMetadata(metadata); installedBrowser.writeMetadata(metadata);
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} }
finally { finally {
@ -144,6 +147,30 @@ async function installUrl(url, options) {
} }
} }
} }
async function runSetup(installedBrowser) {
// On Windows for Chrome invoke setup.exe to configure sandboxes.
if ((installedBrowser.platform === BrowserPlatform.WIN32 ||
installedBrowser.platform === BrowserPlatform.WIN64) &&
installedBrowser.browser === Browser.CHROME &&
installedBrowser.platform === detectBrowserPlatform()) {
try {
debugTime('permissions');
const browserDir = path.dirname(installedBrowser.executablePath);
const setupExePath = path.join(browserDir, 'setup.exe');
if (!existsSync(setupExePath)) {
return;
}
spawnSync(path.join(browserDir, 'setup.exe'), [`--configure-browser-in-directory=` + browserDir], {
shell: true,
});
// TODO: Handle error here. Currently the setup.exe sometimes
// errors although it sets the permissions correctly.
}
finally {
debugTimeEnd('permissions');
}
}
}
/** /**
* *
* @public * @public

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@puppeteer/browsers", "name": "@puppeteer/browsers",
"version": "2.2.3", "version": "2.3.0",
"description": "Download and launch browsers", "description": "Download and launch browsers",
"scripts": { "scripts": {
"build:docs": "wireit", "build:docs": "wireit",
@ -95,14 +95,14 @@
"!*.tsbuildinfo" "!*.tsbuildinfo"
], ],
"dependencies": { "dependencies": {
"debug": "4.3.4", "debug": "^4.3.5",
"extract-zip": "2.0.1", "extract-zip": "^2.0.1",
"progress": "2.0.3", "progress": "^2.0.3",
"proxy-agent": "6.4.0", "proxy-agent": "^6.4.0",
"tar-fs": "3.0.5", "tar-fs": "^3.0.6",
"unbzip2-stream": "1.4.3", "unbzip2-stream": "^1.4.3",
"yargs": "17.7.2", "yargs": "^17.7.2",
"semver": "7.6.0" "semver": "^7.6.3"
}, },
"devDependencies": { "devDependencies": {
"@types/debug": "4.1.12", "@types/debug": "4.1.12",

View File

@ -27,11 +27,12 @@ import {
launch, launch,
} from './launch.js'; } from './launch.js';
interface InstallBrowser {
name: Browser;
buildId: string;
}
interface InstallArgs { interface InstallArgs {
browser: { browser?: InstallBrowser;
name: Browser;
buildId: string;
};
path?: string; path?: string;
platform?: BrowserPlatform; platform?: BrowserPlatform;
baseUrl?: string; baseUrl?: string;
@ -60,7 +61,12 @@ export class CLI {
#rl?: readline.Interface; #rl?: readline.Interface;
#scriptName = ''; #scriptName = '';
#allowCachePathOverride = true; #allowCachePathOverride = true;
#pinnedBrowsers?: Partial<{[key in Browser]: string}>; #pinnedBrowsers?: Partial<{
[key in Browser]: {
buildId: string;
skipDownload: boolean;
};
}>;
#prefixCommand?: {cmd: string; description: string}; #prefixCommand?: {cmd: string; description: string};
constructor( constructor(
@ -71,7 +77,12 @@ export class CLI {
scriptName?: string; scriptName?: string;
prefixCommand?: {cmd: string; description: string}; prefixCommand?: {cmd: string; description: string};
allowCachePathOverride?: boolean; allowCachePathOverride?: boolean;
pinnedBrowsers?: Partial<{[key in Browser]: string}>; pinnedBrowsers?: Partial<{
[key in Browser]: {
buildId: string;
skipDownload: boolean;
};
}>;
}, },
rl?: readline.Interface rl?: readline.Interface
) { ) {
@ -152,9 +163,11 @@ export class CLI {
#build(yargs: Yargs.Argv<unknown>): Yargs.Argv<unknown> { #build(yargs: Yargs.Argv<unknown>): Yargs.Argv<unknown> {
const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest'; const latestOrPinned = this.#pinnedBrowsers ? 'pinned' : 'latest';
// If there are pinned browsers allow the positional arg to be optional
const browserArgType = this.#pinnedBrowsers ? '[browser]' : '<browser>';
return yargs return yargs
.command( .command(
'install <browser>', `install ${browserArgType}`,
'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).', 'Download and install the specified browser. If successful, the command outputs the actual browser buildId that was installed and the absolute path to the browser executable (format: <browser>@<buildID> <path>).',
yargs => { yargs => {
this.#defineBrowserParameter(yargs); this.#defineBrowserParameter(yargs);
@ -164,6 +177,9 @@ export class CLI {
type: 'string', type: 'string',
desc: 'Base URL to download from', desc: 'Base URL to download from',
}); });
if (this.#pinnedBrowsers) {
yargs.example('$0 install', 'Install all pinned browsers');
}
yargs.example( yargs.example(
'$0 install chrome', '$0 install chrome',
`Install the ${latestOrPinned} available build of the Chrome browser.` `Install the ${latestOrPinned} available build of the Chrome browser.`
@ -261,50 +277,35 @@ export class CLI {
}, },
async argv => { async argv => {
const args = argv as unknown as InstallArgs; const args = argv as unknown as InstallArgs;
args.platform ??= detectBrowserPlatform(); if (this.#pinnedBrowsers && !args.browser) {
if (!args.platform) { // Use allSettled to avoid scenarios that
throw new Error(`Could not resolve the current platform`); // a browser may fail early and leave the other
} // installation in a faulty state
if (args.browser.buildId === 'pinned') { const result = await Promise.allSettled(
const pinnedVersion = this.#pinnedBrowsers?.[args.browser.name]; Object.entries(this.#pinnedBrowsers).map(
if (!pinnedVersion) { async ([browser, options]) => {
throw new Error( if (options.skipDownload) {
`No pinned version found for ${args.browser.name}` return;
); }
await this.#install({
...argv,
browser: {
name: browser as Browser,
buildId: options.buildId,
},
});
}
)
);
for (const install of result) {
if (install.status === 'rejected') {
throw install.reason;
}
} }
args.browser.buildId = pinnedVersion; } else {
await this.#install(args);
} }
const originalBuildId = args.browser.buildId;
args.browser.buildId = await resolveBuildId(
args.browser.name,
args.platform,
args.browser.buildId
);
await install({
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(
args.browser.name,
args.browser.buildId
),
baseUrl: args.baseUrl,
buildIdAlias:
originalBuildId !== args.browser.buildId
? originalBuildId
: undefined,
});
console.log(
`${args.browser.name}@${
args.browser.buildId
} ${computeExecutablePath({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`
);
} }
) )
.command( .command(
@ -405,6 +406,50 @@ export class CLI {
? 'pinned' ? 'pinned'
: 'latest'; : 'latest';
} }
async #install(args: InstallArgs) {
args.platform ??= detectBrowserPlatform();
if (!args.browser) {
throw new Error(`No browser arg proveded`);
}
if (!args.platform) {
throw new Error(`Could not resolve the current platform`);
}
if (args.browser.buildId === 'pinned') {
const options = this.#pinnedBrowsers?.[args.browser.name];
if (!options || !options.buildId) {
throw new Error(`No pinned version found for ${args.browser.name}`);
}
args.browser.buildId = options.buildId;
}
const originalBuildId = args.browser.buildId;
args.browser.buildId = await resolveBuildId(
args.browser.name,
args.platform,
args.browser.buildId
);
await install({
browser: args.browser.name,
buildId: args.browser.buildId,
platform: args.platform,
cacheDir: args.path ?? this.#cachePath,
downloadProgressCallback: makeProgressCallback(
args.browser.name,
args.browser.buildId
),
baseUrl: args.baseUrl,
buildIdAlias:
originalBuildId !== args.browser.buildId ? originalBuildId : undefined,
});
console.log(
`${args.browser.name}@${args.browser.buildId} ${computeExecutablePath({
browser: args.browser.name,
buildId: args.browser.buildId,
cacheDir: args.path ?? this.#cachePath,
platform: args.platform,
})}`
);
}
} }
/** /**

View File

@ -4,18 +4,15 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
import {exec as execChildProcess, spawnSync} from 'child_process'; import {spawnSync} from 'child_process';
import {createReadStream} from 'fs'; import {createReadStream} from 'fs';
import {mkdir, readdir} from 'fs/promises'; import {mkdir, readdir} from 'fs/promises';
import * as path from 'path'; import * as path from 'path';
import {promisify} from 'util';
import extractZip from 'extract-zip'; import extractZip from 'extract-zip';
import tar from 'tar-fs'; import tar from 'tar-fs';
import bzip from 'unbzip2-stream'; import bzip from 'unbzip2-stream';
const exec = promisify(execChildProcess);
/** /**
* @internal * @internal
*/ */
@ -64,11 +61,14 @@ function extractTar(tarPath: string, folderPath: string): Promise<void> {
* @internal * @internal
*/ */
async function installDMG(dmgPath: string, folderPath: string): Promise<void> { async function installDMG(dmgPath: string, folderPath: string): Promise<void> {
const {stdout} = await exec( const {stdout} = spawnSync(`hdiutil`, [
`hdiutil attach -nobrowse -noautoopen "${dmgPath}"` 'attach',
); '-nobrowse',
'-noautoopen',
dmgPath,
]);
const volumes = stdout.match(/\/Volumes\/(.*)/m); const volumes = stdout.toString('utf8').match(/\/Volumes\/(.*)/m);
if (!volumes) { if (!volumes) {
throw new Error(`Could not find volume path in ${stdout}`); throw new Error(`Could not find volume path in ${stdout}`);
} }
@ -84,8 +84,8 @@ async function installDMG(dmgPath: string, folderPath: string): Promise<void> {
} }
const mountedPath = path.join(mountPath!, appName); const mountedPath = path.join(mountPath!, appName);
await exec(`cp -R "${mountedPath}" "${folderPath}"`); spawnSync('cp', ['-R', mountedPath, folderPath]);
} finally { } finally {
await exec(`hdiutil detach "${mountPath}" -quiet`); spawnSync('hdiutil', ['detach', mountPath, '-quiet']);
} }
} }

View File

@ -5,6 +5,7 @@
*/ */
import assert from 'assert'; import assert from 'assert';
import {spawnSync} from 'child_process';
import {existsSync} from 'fs'; import {existsSync} from 'fs';
import {mkdir, unlink} from 'fs/promises'; import {mkdir, unlink} from 'fs/promises';
import os from 'os'; import os from 'os';
@ -232,6 +233,7 @@ async function installUrl(
`The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing` `The browser folder (${outputPath}) exists but the executable (${installedBrowser.executablePath}) is missing`
); );
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} }
debugInstall(`Downloading binary from ${url}`); debugInstall(`Downloading binary from ${url}`);
@ -249,6 +251,7 @@ async function installUrl(
} finally { } finally {
debugTimeEnd('extract'); debugTimeEnd('extract');
} }
const installedBrowser = new InstalledBrowser( const installedBrowser = new InstalledBrowser(
cache, cache,
options.browser, options.browser,
@ -260,6 +263,8 @@ async function installUrl(
metadata.aliases[options.buildIdAlias] = options.buildId; metadata.aliases[options.buildIdAlias] = options.buildId;
installedBrowser.writeMetadata(metadata); installedBrowser.writeMetadata(metadata);
} }
await runSetup(installedBrowser);
return installedBrowser; return installedBrowser;
} finally { } finally {
if (existsSync(archivePath)) { if (existsSync(archivePath)) {
@ -268,6 +273,36 @@ async function installUrl(
} }
} }
async function runSetup(installedBrowser: InstalledBrowser): Promise<void> {
// On Windows for Chrome invoke setup.exe to configure sandboxes.
if (
(installedBrowser.platform === BrowserPlatform.WIN32 ||
installedBrowser.platform === BrowserPlatform.WIN64) &&
installedBrowser.browser === Browser.CHROME &&
installedBrowser.platform === detectBrowserPlatform()
) {
try {
debugTime('permissions');
const browserDir = path.dirname(installedBrowser.executablePath);
const setupExePath = path.join(browserDir, 'setup.exe');
if (!existsSync(setupExePath)) {
return;
}
spawnSync(
path.join(browserDir, 'setup.exe'),
[`--configure-browser-in-directory=` + browserDir],
{
shell: true,
}
);
// TODO: Handle error here. Currently the setup.exe sometimes
// errors although it sets the permissions correctly.
} finally {
debugTimeEnd('permissions');
}
}
}
/** /**
* @public * @public
*/ */

View File

@ -1 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAc,WAAW,CAAC;AAE1B,UAAU,eAAgB,SAAQ,GAAG,CAAC,iBAAiB;IACtD,cAAc,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAiB,SAAQ,GAAG,CAAC,iBAAiB;IACvD,cAAc,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAElE,QAAA,MAAM,QAAQ,eAAmC,CAAC;AAQlD,8BAAsB,KAAM,SAAQ,IAAI,CAAC,KAAK;IAC7C,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAgB;IAGlC,OAAO,EAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjE,SAAS,EAAG,OAAO,CAAC;gBAER,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY;IAKpC,QAAQ,CAAC,OAAO,CACf,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;IAErD;;OAEG;IACH,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO;IAqCrD,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAa1C,YAAY,CACX,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;IA4B5C,gBAAgB,IAAI,MAAM;IAW1B,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAIxB;IAED,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAIrB;CACD"} {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAc,WAAW,CAAC;AAE1B,UAAU,eAAgB,SAAQ,GAAG,CAAC,iBAAiB;IACtD,cAAc,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAiB,SAAQ,GAAG,CAAC,iBAAiB;IACvD,cAAc,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAElE,QAAA,MAAM,QAAQ,eAAmC,CAAC;AAQlD,8BAAsB,KAAM,SAAQ,IAAI,CAAC,KAAK;IAC7C,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAgB;IAGlC,OAAO,EAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjE,SAAS,EAAG,OAAO,CAAC;gBAER,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY;IAKpC,QAAQ,CAAC,OAAO,CACf,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;IAErD;;OAEG;IACH,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO;IAqCrD,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAa1C,YAAY,CACX,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;IAgC5C,gBAAgB,IAAI,MAAM;IAW1B,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAIxB;IAED,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAIrB;CACD"}

View File

@ -133,8 +133,13 @@ class Agent extends http.Agent {
.then((socket) => { .then((socket) => {
this.decrementSockets(name, fakeSocket); this.decrementSockets(name, fakeSocket);
if (socket instanceof http.Agent) { if (socket instanceof http.Agent) {
// @ts-expect-error `addRequest()` isn't defined in `@types/node` try {
return socket.addRequest(req, connectOpts); // @ts-expect-error `addRequest()` isn't defined in `@types/node`
return socket.addRequest(req, connectOpts);
}
catch (err) {
return cb(err);
}
} }
this[INTERNAL].currentSocket = socket; this[INTERNAL].currentSocket = socket;
// @ts-expect-error `createSocket()` isn't defined in `@types/node` // @ts-expect-error `createSocket()` isn't defined in `@types/node`

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}

View File

@ -1,6 +1,6 @@
{ {
"name": "agent-base", "name": "agent-base",
"version": "7.1.1", "version": "7.1.3",
"description": "Turn a function into an `http.Agent` instance", "description": "Turn a function into an `http.Agent` instance",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@ -21,9 +21,6 @@
], ],
"author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)", "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
"license": "MIT", "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
"devDependencies": { "devDependencies": {
"@types/debug": "^4.1.7", "@types/debug": "^4.1.7",
"@types/jest": "^29.5.1", "@types/jest": "^29.5.1",
@ -34,7 +31,7 @@
"jest": "^29.5.0", "jest": "^29.5.0",
"ts-jest": "^29.1.0", "ts-jest": "^29.1.0",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"ws": "^3.3.3", "ws": "^5.2.4",
"tsconfig": "0.0.0" "tsconfig": "0.0.0"
}, },
"engines": { "engines": {

79
node_modules/b4a/browser.js generated vendored
View File

@ -17,6 +17,7 @@ function codecFor (encoding) {
case 'utf8': case 'utf8':
case 'utf-8': case 'utf-8':
case undefined: case undefined:
case null:
return utf8 return utf8
case 'ucs2': case 'ucs2':
case 'ucs-2': case 'ucs-2':
@ -466,6 +467,74 @@ function readInt32LE (buffer, offset) {
return view.getInt32(offset, true) return view.getInt32(offset, true)
} }
function writeDoubleBE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setFloat64(offset, value, false)
return offset + 8
}
function writeFloatBE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setFloat32(offset, value, false)
return offset + 4
}
function writeUInt32BE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setUint32(offset, value, false)
return offset + 4
}
function writeInt32BE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setInt32(offset, value, false)
return offset + 4
}
function readDoubleBE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getFloat64(offset, false)
}
function readFloatBE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getFloat32(offset, false)
}
function readUInt32BE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getUint32(offset, false)
}
function readInt32BE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getInt32(offset, false)
}
module.exports = exports = { module.exports = exports = {
isBuffer, isBuffer,
isEncoding, isEncoding,
@ -495,5 +564,13 @@ module.exports = exports = {
readDoubleLE, readDoubleLE,
readFloatLE, readFloatLE,
readUInt32LE, readUInt32LE,
readInt32LE readInt32LE,
writeDoubleBE,
writeFloatBE,
writeUInt32BE,
writeInt32BE,
readDoubleBE,
readFloatBE,
readUInt32BE,
readInt32BE
} }

43
node_modules/b4a/index.js generated vendored
View File

@ -115,6 +115,38 @@ function readInt32LE (buffer, offset) {
return toBuffer(buffer).readInt32LE(offset) return toBuffer(buffer).readInt32LE(offset)
} }
function writeDoubleBE (buffer, value, offset) {
return toBuffer(buffer).writeDoubleBE(value, offset)
}
function writeFloatBE (buffer, value, offset) {
return toBuffer(buffer).writeFloatBE(value, offset)
}
function writeUInt32BE (buffer, value, offset) {
return toBuffer(buffer).writeUInt32BE(value, offset)
}
function writeInt32BE (buffer, value, offset) {
return toBuffer(buffer).writeInt32BE(value, offset)
}
function readDoubleBE (buffer, offset) {
return toBuffer(buffer).readDoubleBE(offset)
}
function readFloatBE (buffer, offset) {
return toBuffer(buffer).readFloatBE(offset)
}
function readUInt32BE (buffer, offset) {
return toBuffer(buffer).readUInt32BE(offset)
}
function readInt32BE (buffer, offset) {
return toBuffer(buffer).readInt32BE(offset)
}
module.exports = { module.exports = {
isBuffer, isBuffer,
isEncoding, isEncoding,
@ -144,5 +176,14 @@ module.exports = {
readDoubleLE, readDoubleLE,
readFloatLE, readFloatLE,
readUInt32LE, readUInt32LE,
readInt32LE readInt32LE,
writeDoubleBE,
writeFloatBE,
writeUInt32BE,
writeInt32BE,
readDoubleBE,
readFloatBE,
readUInt32BE,
readInt32BE
} }

8
node_modules/b4a/package.json generated vendored
View File

@ -1,6 +1,6 @@
{ {
"name": "b4a", "name": "b4a",
"version": "1.6.6", "version": "1.6.7",
"description": "Bridging the gap between buffers and typed arrays", "description": "Bridging the gap between buffers and typed arrays",
"main": "index.js", "main": "index.js",
"files": [ "files": [
@ -25,8 +25,8 @@
}, },
"homepage": "https://github.com/holepunchto/b4a#readme", "homepage": "https://github.com/holepunchto/b4a#readme",
"devDependencies": { "devDependencies": {
"brittle": "^1.3.5", "brittle": "^3.5.2",
"nanobench": "^2.1.1", "nanobench": "^3.0.0",
"standard": "^16.0.3" "standard": "^17.1.0"
} }
} }

2
node_modules/bare-events/README.md generated vendored
View File

@ -8,7 +8,7 @@ # bare-events
## Usage ## Usage
``` js ```js
const EventEmitter = require('bare-events') const EventEmitter = require('bare-events')
const e = new EventEmitter() const e = new EventEmitter()

91
node_modules/bare-events/index.d.ts generated vendored Normal file
View File

@ -0,0 +1,91 @@
declare interface EventMap {
[event: string | symbol]: unknown[]
}
declare interface EventHandler<
in A extends unknown[] = unknown[],
out R = unknown
> {
(...args: A): R
}
declare class EventEmitterError extends Error {
static OPERATION_ABORTED(cause: Error, msg?: string): EventEmitterError
static UNHANDLED_ERROR(cause: Error, msg?: string): EventEmitterError
}
declare interface EventEmitter<in out M extends EventMap = EventMap> {
addListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
addOnceListener<E extends keyof M, R>(
name: E,
fn: EventHandler<M[E], R>
): this
prependListener<E extends keyof M, R>(
name: E,
fn: EventHandler<M[E], R>
): this
prependOnceListener<E extends keyof M, R>(
name: E,
fn: EventHandler<M[E], R>
): this
removeListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
removeAllListeners<E extends keyof M>(name?: E): this
on<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
once<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
off<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
emit<E extends keyof M>(name: E, ...args: M[E]): boolean
listeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>
listenerCount<E extends keyof M>(name: E): number
getMaxListeners(): number
setMaxListeners(n: number): void
}
declare class EventEmitter<in out M extends EventMap = EventMap> {}
declare namespace EventEmitter {
export function on<M extends EventMap, E extends keyof M>(
emitter: EventEmitter<M>,
name: E,
opts?: { signal?: AbortSignal }
): AsyncIterableIterator<M[E]>
export function once<M extends EventMap, E extends keyof M>(
emitter: EventEmitter<M>,
name: E,
opts?: { signal?: AbortSignal }
): Promise<M[E]>
export function forward<
F extends EventMap,
E extends keyof F,
T extends Pick<F, E>
>(
from: EventEmitter<F>,
to: EventEmitter<T>,
names: E | E[],
opts?: { emit?: (name: E, ...args: T[E]) => void }
): void
export function listenerCount<M extends EventMap, E extends keyof M>(
emitter: EventEmitter<M>,
name: E
): number
export let defaultMaxListeners: number
export { EventEmitter, EventEmitterError as errors, EventMap, EventHandler }
}
export = EventEmitter

136
node_modules/bare-events/index.js generated vendored
View File

@ -1,24 +1,24 @@
const errors = require('./lib/errors') const errors = require('./lib/errors')
class EventListener { class EventListener {
constructor () { constructor() {
this.list = [] this.list = []
this.count = 0 this.count = 0
} }
append (ctx, name, fn, once) { append(ctx, name, fn, once) {
this.count++ this.count++
ctx.emit('newListener', name, fn) // Emit BEFORE adding ctx.emit('newListener', name, fn) // Emit BEFORE adding
this.list.push([fn, once]) this.list.push([fn, once])
} }
prepend (ctx, name, fn, once) { prepend(ctx, name, fn, once) {
this.count++ this.count++
ctx.emit('newListener', name, fn) // Emit BEFORE adding ctx.emit('newListener', name, fn) // Emit BEFORE adding
this.list.unshift([fn, once]) this.list.unshift([fn, once])
} }
remove (ctx, name, fn) { remove(ctx, name, fn) {
for (let i = 0, n = this.list.length; i < n; i++) { for (let i = 0, n = this.list.length; i < n; i++) {
const l = this.list[i] const l = this.list[i]
@ -35,7 +35,7 @@ class EventListener {
} }
} }
removeAll (ctx, name) { removeAll(ctx, name) {
const list = [...this.list] const list = [...this.list]
this.list = [] this.list = []
@ -48,7 +48,7 @@ class EventListener {
this.count -= list.length this.count -= list.length
} }
emit (ctx, name, ...args) { emit(ctx, name, ...args) {
const list = [...this.list] const list = [...this.list]
for (let i = 0, n = list.length; i < n; i++) { for (let i = 0, n = list.length; i < n; i++) {
@ -63,25 +63,25 @@ class EventListener {
} }
} }
function appendListener (ctx, name, fn, once) { function appendListener(ctx, name, fn, once) {
const e = ctx._events[name] || (ctx._events[name] = new EventListener()) const e = ctx._events[name] || (ctx._events[name] = new EventListener())
e.append(ctx, name, fn, once) e.append(ctx, name, fn, once)
return ctx return ctx
} }
function prependListener (ctx, name, fn, once) { function prependListener(ctx, name, fn, once) {
const e = ctx._events[name] || (ctx._events[name] = new EventListener()) const e = ctx._events[name] || (ctx._events[name] = new EventListener())
e.prepend(ctx, name, fn, once) e.prepend(ctx, name, fn, once)
return ctx return ctx
} }
function removeListener (ctx, name, fn) { function removeListener(ctx, name, fn) {
const e = ctx._events[name] const e = ctx._events[name]
if (e !== undefined) e.remove(ctx, name, fn) if (e !== undefined) e.remove(ctx, name, fn)
return ctx return ctx
} }
function throwUnhandledError (...args) { function throwUnhandledError(...args) {
let err let err
if (args.length > 0) err = args[0] if (args.length > 0) err = args[0]
@ -92,69 +92,74 @@ function throwUnhandledError (...args) {
Error.captureStackTrace(err, exports.prototype.emit) Error.captureStackTrace(err, exports.prototype.emit)
} }
queueMicrotask(() => { throw err }) queueMicrotask(() => {
throw err
})
} }
module.exports = exports = class EventEmitter { module.exports = exports = class EventEmitter {
constructor () { constructor() {
this._events = Object.create(null) this._events = Object.create(null)
} }
addListener (name, fn) { addListener(name, fn) {
return appendListener(this, name, fn, false) return appendListener(this, name, fn, false)
} }
addOnceListener (name, fn) { addOnceListener(name, fn) {
return appendListener(this, name, fn, true) return appendListener(this, name, fn, true)
} }
prependListener (name, fn) { prependListener(name, fn) {
return prependListener(this, name, fn, false) return prependListener(this, name, fn, false)
} }
prependOnceListener (name, fn) { prependOnceListener(name, fn) {
return prependListener(this, name, fn, true) return prependListener(this, name, fn, true)
} }
removeListener (name, fn) { removeListener(name, fn) {
return removeListener(this, name, fn) return removeListener(this, name, fn)
} }
on (name, fn) { on(name, fn) {
return appendListener(this, name, fn, false) return appendListener(this, name, fn, false)
} }
once (name, fn) { once(name, fn) {
return appendListener(this, name, fn, true) return appendListener(this, name, fn, true)
} }
off (name, fn) { off(name, fn) {
return removeListener(this, name, fn) return removeListener(this, name, fn)
} }
emit (name, ...args) { emit(name, ...args) {
if (name === 'error' && this._events.error === undefined) throwUnhandledError(...args) if (name === 'error' && this._events.error === undefined) {
throwUnhandledError(...args)
}
const e = this._events[name] const e = this._events[name]
return e === undefined ? false : e.emit(this, name, ...args) return e === undefined ? false : e.emit(this, name, ...args)
} }
listeners (name) { listeners(name) {
const e = this._events[name] const e = this._events[name]
return e === undefined ? [] : [...e.list] return e === undefined ? [] : [...e.list]
} }
listenerCount (name) { listenerCount(name) {
const e = this._events[name] const e = this._events[name]
return e === undefined ? 0 : e.list.length return e === undefined ? 0 : e.list.length
} }
getMaxListeners () { getMaxListeners() {
return EventEmitter.defaultMaxListeners return EventEmitter.defaultMaxListeners
} }
setMaxListeners (n) {} setMaxListeners(n) {}
removeAllListeners (name) { removeAllListeners(name) {
if (arguments.length === 0) { if (arguments.length === 0) {
for (const key of Reflect.ownKeys(this._events)) { for (const key of Reflect.ownKeys(this._events)) {
if (key === 'removeListener') continue if (key === 'removeListener') continue
@ -171,12 +176,12 @@ module.exports = exports = class EventEmitter {
exports.EventEmitter = exports exports.EventEmitter = exports
exports.errors = errors
exports.defaultMaxListeners = 10 exports.defaultMaxListeners = 10
exports.on = function on (emitter, name, opts = {}) { exports.on = function on(emitter, name, opts = {}) {
const { const { signal } = opts
signal
} = opts
if (signal && signal.aborted) { if (signal && signal.aborted) {
throw errors.OPERATION_ABORTED(signal.reason) throw errors.OPERATION_ABORTED(signal.reason)
@ -195,7 +200,7 @@ exports.on = function on (emitter, name, opts = {}) {
if (signal) signal.addEventListener('abort', onabort) if (signal) signal.addEventListener('abort', onabort)
return { return {
next () { next() {
if (events.length) { if (events.length) {
return Promise.resolve({ value: events.shift(), done: false }) return Promise.resolve({ value: events.shift(), done: false })
} }
@ -215,20 +220,20 @@ exports.on = function on (emitter, name, opts = {}) {
) )
}, },
return () { return() {
return onclose() return onclose()
}, },
throw (err) { throw(err) {
return onerror(err) return onerror(err)
}, },
[Symbol.asyncIterator] () { [Symbol.asyncIterator]() {
return this return this
} }
} }
function onevent (...args) { function onevent(...args) {
if (promises.length) { if (promises.length) {
promises.shift().resolve({ value: args, done: false }) promises.shift().resolve({ value: args, done: false })
} else { } else {
@ -236,7 +241,7 @@ exports.on = function on (emitter, name, opts = {}) {
} }
} }
function onerror (err) { function onerror(err) {
if (promises.length) { if (promises.length) {
promises.shift().reject(err) promises.shift().reject(err)
} else { } else {
@ -246,11 +251,11 @@ exports.on = function on (emitter, name, opts = {}) {
return Promise.resolve({ done: true }) return Promise.resolve({ done: true })
} }
function onabort () { function onabort() {
onerror(errors.OPERATION_ABORTED(signal.reason)) onerror(errors.OPERATION_ABORTED(signal.reason))
} }
function onclose () { function onclose() {
emitter.off(name, onevent) emitter.off(name, onevent)
if (name !== 'error') emitter.off('error', onerror) if (name !== 'error') emitter.off('error', onerror)
@ -265,26 +270,67 @@ exports.on = function on (emitter, name, opts = {}) {
} }
} }
exports.once = function once (emitter, name, opts = {}) { exports.once = function once(emitter, name, opts = {}) {
const { const { signal } = opts
signal
} = opts
if (signal && signal.aborted) { if (signal && signal.aborted) {
throw errors.OPERATION_ABORTED(signal.reason) throw errors.OPERATION_ABORTED(signal.reason)
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (name !== 'error') emitter.on('error', onerror)
if (signal) signal.addEventListener('abort', onabort) if (signal) signal.addEventListener('abort', onabort)
emitter.once(name, (...args) => { emitter.once(name, (...args) => {
if (name !== 'error') emitter.off('error', onerror)
if (signal) signal.removeEventListener('abort', onabort) if (signal) signal.removeEventListener('abort', onabort)
resolve(args) resolve(args)
}) })
function onabort () { function onerror(err) {
reject(errors.OPERATION_ABORTED(signal.reason)) emitter.off('error', onerror)
reject(err)
}
function onabort() {
signal.removeEventListener('abort', onabort)
onerror(errors.OPERATION_ABORTED(signal.reason))
} }
}) })
} }
exports.forward = function forward(from, to, names, opts = {}) {
if (typeof names === 'string') names = [names]
const { emit = to.emit.bind(to) } = opts
const listeners = names.map(
(name) =>
function onevent(...args) {
emit(name, ...args)
}
)
to.on('newListener', (name) => {
const i = names.indexOf(name)
if (i !== -1 && to.listenerCount(name) === 0) {
from.on(name, listeners[i])
}
}).on('removeListener', (name) => {
const i = names.indexOf(name)
if (i !== -1 && to.listenerCount(name) === 0) {
from.off(name, listeners[i])
}
})
}
exports.listenerCount = function listenerCount(emitter, name) {
return emitter.listenerCount(name)
}

View File

@ -1,5 +1,5 @@
module.exports = class EventEmitterError extends Error { module.exports = class EventEmitterError extends Error {
constructor (msg, code, fn = EventEmitterError, opts) { constructor(msg, code, fn = EventEmitterError, opts) {
super(`${code}: ${msg}`, opts) super(`${code}: ${msg}`, opts)
this.code = code this.code = code
@ -8,15 +8,25 @@ module.exports = class EventEmitterError extends Error {
} }
} }
get name () { get name() {
return 'EventEmitterError' return 'EventEmitterError'
} }
static OPERATION_ABORTED (cause, msg = 'Operation aborted') { static OPERATION_ABORTED(cause, msg = 'Operation aborted') {
return new EventEmitterError(msg, 'OPERATION_ABORTED', EventEmitterError.OPERATION_ABORTED, { cause }) return new EventEmitterError(
msg,
'OPERATION_ABORTED',
EventEmitterError.OPERATION_ABORTED,
{ cause }
)
} }
static UNHANDLED_ERROR (cause, msg = 'Unhandled error') { static UNHANDLED_ERROR(cause, msg = 'Unhandled error') {
return new EventEmitterError(msg, 'UNHANDLED_ERROR', EventEmitterError.UNHANDLED_ERROR, { cause }) return new EventEmitterError(
msg,
'UNHANDLED_ERROR',
EventEmitterError.UNHANDLED_ERROR,
{ cause }
)
} }
} }

View File

@ -1,14 +1,25 @@
{ {
"name": "bare-events", "name": "bare-events",
"version": "2.2.2", "version": "2.5.4",
"description": "Event emitters for JavaScript", "description": "Event emitters for JavaScript",
"main": "index.js", "exports": {
".": {
"types": "./index.d.ts",
"default": "./index.js"
},
"./package": "./package.json",
"./errors": "./lib/errors.js"
},
"files": [ "files": [
"index.js", "index.js",
"index.d.ts",
"lib" "lib"
], ],
"scripts": { "scripts": {
"test": "standard && bare test.js" "test": "npm run lint && npm run test:bare && npm run test:node",
"test:bare": "bare test.js",
"test:node": "node test.js",
"lint": "prettier . --check"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -22,6 +33,7 @@
"homepage": "https://github.com/holepunchto/bare-events#readme", "homepage": "https://github.com/holepunchto/bare-events#readme",
"devDependencies": { "devDependencies": {
"brittle": "^3.3.2", "brittle": "^3.3.2",
"standard": "^17.0.0" "prettier": "^3.4.2",
"prettier-config-standard": "^7.0.0"
} }
} }

View File

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.25) cmake_minimum_required(VERSION 3.25)
project(bare_fs C) find_package(cmake-bare REQUIRED PATHS node_modules/cmake-bare)
include(bare) project(bare_fs C)
add_bare_module(bare_fs) add_bare_module(bare_fs)

4
node_modules/bare-fs/README.md generated vendored
View File

@ -16,7 +16,7 @@ ## Usage
fs.access fs.access
fs.chmod fs.chmod
fs.close fs.close
fs.chmod fs.copyFile
fs.exists fs.exists
fs.fstat fs.fstat
fs.ftruncate fs.ftruncate
@ -44,6 +44,7 @@ ## Usage
fs.promises.access fs.promises.access
fs.promises.chmod fs.promises.chmod
fs.promises.copyFile
fs.promises.lstat fs.promises.lstat
fs.promises.mkdir fs.promises.mkdir
fs.promises.opendir fs.promises.opendir
@ -67,6 +68,7 @@ ## Usage
fs.accessSync fs.accessSync
fs.chmodSync fs.chmodSync
fs.closeSync fs.closeSync
fs.copyFileSync
fs.existsSync fs.existsSync
fs.fchmodSync fs.fchmodSync
fs.fstatSync fs.fstatSync

3973
node_modules/bare-fs/binding.c generated vendored

File diff suppressed because it is too large Load Diff

979
node_modules/bare-fs/index.d.ts generated vendored Normal file
View File

@ -0,0 +1,979 @@
import EventEmitter, { EventMap } from 'bare-events'
import Buffer, { BufferEncoding } from 'bare-buffer'
import { Readable, Writable } from 'bare-stream'
import promises from './promises'
import constants from './lib/constants'
export { promises, constants }
type Flag =
| 'a'
| 'a+'
| 'as'
| 'as+'
| 'ax'
| 'ax+'
| 'r'
| 'r+'
| 'rs'
| 'rs+'
| 'sa'
| 'sa+'
| 'sr'
| 'sr+'
| 'w'
| 'w+'
| 'wx'
| 'wx+'
| 'xa'
| 'xa+'
| 'xw'
| 'xw+'
interface Callback<A extends unknown[] = []> {
(err: Error | null, ...args: A): void
}
export interface Dir<T extends string | Buffer = string | Buffer>
extends Iterable<Dirent>,
AsyncIterable<Dirent> {
readonly path: string
read(cb: Callback<[dirent: Dirent<T> | null]>): void
readSync(): Dirent<T> | null
close(cb: Callback): void
closeSync(): void
}
export class Dir {
constructor(path: string, handle: Buffer, opts?: OpendirOptions)
}
export interface Dirent<T extends string | Buffer = string | Buffer> {
readonly path: string
readonly name: T
readonly type: number
isFile(): boolean
isDirectory(): boolean
isSymbolicLink(): boolean
isFIFO(): boolean
isSocket(): boolean
isCharacterDevice(): boolean
isBlockDevice(): boolean
}
export class Dirent<T extends string | Buffer = string | Buffer> {
constructor(path: string, name: T, type: number)
}
export interface Stats {
readonly dev: number
readonly mode: number
readonly nlink: number
readonly uid: number
readonly gid: number
readonly rdev: number
readonly blksize: number
readonly ino: number
readonly size: number
readonly blocks: number
readonly atimeMs: Date
readonly mtimeMs: Date
readonly ctimeMs: Date
readonly birthtimeMs: Date
isDirectory(): boolean
isFile(): boolean
isBlockDevice(): boolean
isCharacterDevice(): boolean
isFIFO(): boolean
isSymbolicLink(): boolean
isSocket(): boolean
}
export class Stats {
constructor(
dev: number,
mode: number,
nlink: number,
uid: number,
gid: number,
rdev: number,
blksize: number,
ino: number,
size: number,
blocks: number,
atimeMs: number,
mtimeMs: number,
ctimeMs: number,
birthtimeMs: number
)
}
export interface FileReadStreamOptions {
flags?: Flag
mode?: number
}
export interface FileStreamStream extends Readable {
readonly path: string
readonly fd: number
}
export class FileReadStream {
constructor(path: string, opts?: FileWriteStreamOptions)
}
export function createReadStream(
path: string,
opts?: FileReadStreamOptions
): FileReadStream
export interface FileWriteStreamOptions {
flags?: Flag
mode?: number
}
export interface FileWriteStream extends Writable {
readonly path: string
readonly fd: number
readonly flags: Flag
readonly mode: number
}
export class FileWriteStream {
constructor(path: string, opts?: FileWriteStreamOptions)
}
export function createWriteStream(
path: string,
opts?: FileWriteStreamOptions
): FileWriteStream
export interface WatcherOptions {
persistent?: boolean
recursive?: boolean
encoding?: BufferEncoding | 'buffer'
}
export type WatcherEventType = 'rename' | 'change'
export interface WatcherEvents<T extends string | Buffer = string | Buffer>
extends EventMap {
error: [err: Error]
change: [eventType: WatcherEventType, filename: T]
close: []
}
export interface Watcher<T extends string | Buffer = string | Buffer>
extends EventEmitter<WatcherEvents<T>>,
AsyncIterable<{ eventType: WatcherEventType; filename: T }> {
close(): void
ref(): void
unref(): void
}
export class Watcher {
constructor(path: string | Buffer, opts: WatcherOptions)
}
export function access(filepath: string, mode: number, cb: Callback): void
export function access(filepath: string, cb: Callback): void
export function accessSync(filepath: string, mode?: number): void
export interface AppendFileOptions {
encoding?: BufferEncoding
flag?: string
mode?: number
}
export function appendFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
opts: AppendFileOptions,
cb: Callback
): void
export function appendFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
encoding: BufferEncoding,
cb: Callback
): void
export function appendFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
cb: Callback
): void
export function appendFileSync(
filepath: string,
data: string | Buffer | ArrayBufferView,
opts?: AppendFileOptions
): void
export function appendFileSync(
filepath: string,
data: string | Buffer | ArrayBufferView,
encoding: BufferEncoding
): void
export function chmod(
filepath: string,
mode: string | number,
cb: Callback
): void
export function chmodSync(filepath: string, mode: string | number): void
export function close(fd: number, cb?: Callback): void
export function closeSync(fd: number): void
export function copyFile(
src: string,
dst: string,
mode: number,
cb: Callback
): void
export function copyFile(src: string, dst: string, cb: Callback): void
export function copyFileSync(src: string, dst: string, mode?: number): void
export function exists(filepath: string, cb: (exists: boolean) => void): void
export function existsSync(filepath: string): boolean
export function fchmod(fd: number, mode: string | number, cb: Callback): void
export function fchmodSync(fd: number, mode: string | number): void
export function fstat(fd: number, cb: Callback<[stats: Stats | null]>): void
export function fstatSync(fd: number): Stats
export function ftruncate(fd: number, len: number, cb: Callback): void
export function ftruncate(fd: number, cb: Callback): void
export function lstat(
filepath: string,
cb: Callback<[stats: Stats | null]>
): void
export function lstatSync(filepath: string): Stats
export interface MkdirOptions {
mode?: number
recursive?: boolean
}
export function mkdir(filepath: string, opts: MkdirOptions, cb: Callback): void
export function mkdir(filepath: string, mode: number, cb: Callback): void
export function mkdir(filepath: string, cb: Callback): void
export function mkdirSync(filepath: string, opts?: MkdirOptions): void
export function mkdirSync(filepath: string, mode: number): void
export function open(
filepath: string,
flags: Flag | number,
mode: string | number,
cb: Callback<[fd: number]>
): void
export function open(
filepath: string,
flags: Flag | number,
cb: Callback<[fd: number]>
): void
export function open(filepath: string, cb: Callback<[fd: number]>): void
export function openSync(
filepath: string,
flags?: Flag | number,
mode?: string | number
): number
export interface OpendirOptions {
encoding?: BufferEncoding | 'buffer'
bufferSize?: number
}
export function opendir(
filepath: string,
opts: OpendirOptions & { encoding?: BufferEncoding },
cb: Callback<[dir: Dir<string> | null]>
): void
export function opendir(
filepath: string,
opts: OpendirOptions & { encoding: 'buffer' },
cb: Callback<[dir: Dir<Buffer> | null]>
): void
export function opendir(
filepath: string,
opts: OpendirOptions,
cb: Callback<[dir: Dir | null]>
): void
export function opendir(
filepath: string,
encoding: BufferEncoding,
cb: Callback<[dir: Dir<string> | null]>
): void
export function opendir(
filepath: string,
encoding: 'buffer',
cb: Callback<[dir: Dir<Buffer> | null]>
): void
export function opendir(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: Callback<[dir: Dir | null]>
): void
export function opendir(
filepath: string,
cb: Callback<[dir: Dir<string> | null]>
): void
export function opendirSync(
filepath: string,
opts: OpendirOptions & { encoding?: BufferEncoding }
): Dir<string>
export function opendirSync(
filepath: string,
opts: OpendirOptions & { encoding: 'buffer' }
): Dir<Buffer>
export function opendirSync(filepath: string, opts: OpendirOptions): Dir
export function opendirSync(
filepath: string,
encoding: BufferEncoding
): Dir<string>
export function opendirSync(filepath: string, encoding: 'buffer'): Dir<Buffer>
export function opendirSync(
filepath: string,
encoding: BufferEncoding | 'buffer'
): Dir
export function opendirSync(filepath: string): Dir<string>
export function read(
fd: number,
buffer: Buffer | ArrayBufferView,
offset: number,
len: number,
pos: number,
cb: Callback<[len: number]>
): void
export function read(
fd: number,
buffer: Buffer | ArrayBufferView,
offset: number,
len: number,
cb: Callback<[len: number]>
): void
export function read(
fd: number,
buffer: Buffer | ArrayBufferView,
offset: number,
cb: Callback<[len: number]>
): void
export function read(
fd: number,
buffer: Buffer | ArrayBufferView,
cb: Callback<[len: number]>
): void
export function readSync(
fd: number,
buffer: Buffer | ArrayBufferView,
offset?: number,
len?: number,
pos?: number
): number
export interface ReadFileOptions {
encoding?: BufferEncoding | 'buffer'
flag?: Flag
}
export function readFile(
filepath: string,
opts: ReadFileOptions & { encoding: BufferEncoding },
cb: Callback<[buffer?: string]>
): void
export function readFile(
filepath: string,
opts: ReadFileOptions & { encoding?: 'buffer' },
cb: Callback<[buffer?: Buffer]>
): void
export function readFile(
filepath: string,
opts: ReadFileOptions,
cb: Callback<[buffer?: string | Buffer]>
): void
export function readFile(
filepath: string,
encoding: BufferEncoding,
cb: Callback<[buffer?: string]>
): void
export function readFile(
filepath: string,
encoding: 'buffer',
cb: Callback<[buffer?: Buffer]>
): void
export function readFile(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: Callback<[buffer?: string | Buffer]>
): void
export function readFile(
filepath: string,
cb: Callback<[buffer?: Buffer]>
): void
export function readFileSync(
filepath: string,
opts: ReadFileOptions & { encoding: BufferEncoding }
): string
export function readFileSync(
filepath: string,
opts: ReadFileOptions & { encoding?: 'buffer' }
): Buffer
export function readFileSync(
filepath: string,
opts: ReadFileOptions
): string | Buffer
export function readFileSync(filepath: string, encoding: BufferEncoding): string
export function readFileSync(filepath: string, encoding: 'buffer'): Buffer
export function readFileSync(
filepath: string,
encoding?: BufferEncoding | 'buffer'
): string | Buffer
export function readFileSync(filepath: string): Buffer
export interface ReaddirOptions extends OpendirOptions {
withFileTypes?: boolean
}
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding },
cb: Callback<[entries: Dir<string>[] | string[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding; withFileTypes: true },
cb: Callback<[entries: Dir<string>[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding; withFileTypes?: false },
cb: Callback<[entries: string[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer' },
cb: Callback<[entries: Dir<Buffer>[] | Buffer[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer'; withFileTypes: true },
cb: Callback<[entries: Dir<Buffer>[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer'; withFileTypes?: false },
cb: Callback<[entries: Buffer[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { withFileTypes: true },
cb: Callback<[entries: Dir<string | Buffer>[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions & { withFileTypes?: false },
cb: Callback<[entries: string[] | Buffer[] | null]>
): void
export function readdir(
filepath: string,
opts: ReaddirOptions,
cb: Callback<[entries: Dir[] | string[] | Buffer[] | null]>
): void
export function readdir(
filepath: string,
encoding: BufferEncoding,
cb: Callback<[entries: string[] | null]>
): void
export function readdir(
filepath: string,
encoding: 'buffer',
cb: Callback<[entries: Buffer[] | null]>
): void
export function readdir(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: Callback<[entries: string[] | Buffer[] | null]>
): void
export function readdir(
filepath: string,
cb: Callback<[entries: string[] | null]>
): void
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding }
): Dir<string>[] | string[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding; withFileTypes: true }
): Dir<string>[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding?: BufferEncoding; withFileTypes?: false }
): string[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer' }
): Dir<Buffer>[] | Buffer[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer'; withFileTypes: true }
): Dir<Buffer>[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { encoding: 'buffer'; withFileTypes?: false }
): Buffer[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { withFileTypes: true }
): Dir<string | Buffer>[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions & { withFileTypes?: false }
): string[] | Buffer[]
export function readdirSync(
filepath: string,
opts: ReaddirOptions
): Dir[] | string[] | Buffer[]
export function readdirSync(
filepath: string,
encoding: BufferEncoding
): string[]
export function readdirSync(filepath: string, encoding: 'buffer'): Buffer[]
export function readdirSync(
filepath: string,
encoding: BufferEncoding | 'buffer'
): string[] | Buffer[]
export function readdirSync(filepath: string): string[]
export interface ReadlinkOptions {
encoding?: BufferEncoding | 'buffer'
}
export function readlink(
filepath: string,
opts: ReadlinkOptions & { encoding?: BufferEncoding },
cb: Callback<[link: string | null]>
): void
export function readlink(
filepath: string,
opts: ReadlinkOptions & { encoding: 'buffer' },
cb: Callback<[link: Buffer | null]>
): void
export function readlink(
filepath: string,
opts: ReadlinkOptions,
cb: Callback<[link: string | Buffer | null]>
): void
export function readlink(
filepath: string,
encoding: BufferEncoding,
cb: Callback<[link: string | null]>
): void
export function readlink(
filepath: string,
encoding: 'buffer',
cb: Callback<[link: Buffer | null]>
): void
export function readlink(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: Callback<[link: string | Buffer | null]>
): void
export function readlink(
filepath: string,
cb: Callback<[link: string | null]>
): void
export function readlinkSync(
filepath: string,
opts: ReadlinkOptions & { encoding?: BufferEncoding }
): string
export function readlinkSync(
filepath: string,
opts: ReadlinkOptions & { encoding: 'buffer' }
): Buffer
export function readlinkSync(
filepath: string,
opts: ReadlinkOptions
): string | Buffer
export function readlinkSync(filepath: string, encoding: BufferEncoding): string
export function readlinkSync(filepath: string, encoding: 'buffer'): Buffer
export function readlinkSync(
filepath: string,
encoding: BufferEncoding | 'buffer'
): string | Buffer
export function readlinkSync(filepath: string): string
export function readv(
fd: number,
buffers: ArrayBufferView[],
position: number,
cb: Callback<[len: number]>
): void
export function readv(
fd: number,
buffers: ArrayBufferView[],
cb: Callback<[len: number]>
): void
export interface RealpathOptions {
encoding?: BufferEncoding | 'buffer'
}
export function realpath(
filepath: string,
opts: RealpathOptions & { encoding?: BufferEncoding },
cb: Callback<[path: string | null]>
): void
export function realpath(
filepath: string,
opts: RealpathOptions & { encoding: 'buffer' },
cb: Callback<[path: Buffer | null]>
): void
export function realpath(
filepath: string,
opts: RealpathOptions,
cb: Callback<[path: string | Buffer | null]>
): void
export function realpath(
filepath: string,
encoding: BufferEncoding,
cb: Callback<[path: string | null]>
): void
export function realpath(
filepath: string,
encoding: 'buffer',
cb: Callback<[path: Buffer | null]>
): void
export function realpath(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: Callback<[path: string | Buffer | null]>
): void
export function realpath(
filepath: string,
cb: Callback<[path: string | null]>
): void
export function realpathSync(
filepath: string,
opts: RealpathOptions & { encoding?: BufferEncoding }
): string
export function realpathSync(
filepath: string,
opts: RealpathOptions & { encoding: 'buffer' }
): Buffer
export function realpathSync(
filepath: string,
opts: RealpathOptions
): string | Buffer
export function realpathSync(filepath: string, encoding: BufferEncoding): string
export function realpathSync(filepath: string, encoding: 'buffer'): Buffer
export function realpathSync(
filepath: string,
encoding: BufferEncoding | 'buffer'
): string | Buffer
export function realpathSync(filepath: string): string
export function rename(src: string, dst: string, cb: Callback): void
export function renameSync(src: string, dst: string): void
export interface RmOptions {
force?: boolean
recursive?: boolean
}
export function rm(filepath: string, opts: RmOptions, cb: Callback): void
export function rm(filepath: string, cb: Callback): void
export function rmSync(filepath: string, opts?: RmOptions): void
export function rmdir(filepath: string, cb: Callback): void
export function rmdirSync(filepath: string): void
export function stat(
filepath: string,
cb: Callback<[stats: Stats | null]>
): void
export function statSync(filepath: string): Stats
export function symlink(
target: string,
filepath: string,
type: string | number,
cb: Callback
): void
export function symlink(target: string, filepath: string, cb: Callback): void
export function symlinkSync(
target: string,
filepath: string,
type?: string | number
): void
export function unlink(filepath: string, cb: Callback): void
export function unlinkSync(filepath: string): void
export function watch(
filepath: string,
opts: WatcherOptions & { encoding?: BufferEncoding },
cb: (eventType: WatcherEventType, filename: string) => void
): Watcher<string>
export function watch(
filepath: string,
opts: WatcherOptions & { encoding: 'buffer' },
cb: (eventType: WatcherEventType, filename: Buffer) => void
): Watcher<Buffer>
export function watch(
filepath: string,
opts: WatcherOptions,
cb: (eventType: WatcherEventType, filename: string | Buffer) => void
): Watcher
export function watch(
filepath: string,
encoding: BufferEncoding,
cb: (evenType: WatcherEventType, filename: string) => void
): Watcher<string>
export function watch(
filepath: string,
encoding: 'buffer',
cb: (evenType: WatcherEventType, filename: Buffer) => void
): Watcher<Buffer>
export function watch(
filepath: string,
encoding: BufferEncoding | 'buffer',
cb: (evenType: WatcherEventType, filename: string | Buffer) => void
): Watcher
export function watch(
filepath: string,
cb: (eventType: WatcherEventType, filename: string) => void
): Watcher<string>
export function write(
fd: number,
data: Buffer | ArrayBufferView,
offset: number,
len: number,
pos: number,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: Buffer | ArrayBufferView,
offset: number,
len: number,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: string,
pos: string | number,
encoding: BufferEncoding,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: Buffer | ArrayBufferView,
offset: number,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: string,
pos: string | number,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: Buffer | ArrayBufferView,
cb: Callback<[len: number]>
): void
export function write(
fd: number,
data: string,
cb: Callback<[len: number]>
): void
export function writeSync(
fd: number,
data: string | Buffer | ArrayBufferView,
offset?: number,
len?: number,
pos?: number
): void
export interface WriteFileOptions {
encoding?: BufferEncoding
flag?: Flag
mode?: number
}
export function writeFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
opts: WriteFileOptions,
cb: Callback
): void
export function writeFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
encoding: BufferEncoding,
cb: Callback
): void
export function writeFile(
filepath: string,
data: string | Buffer | ArrayBufferView,
cb: Callback
): void
export function writeFileSync(
filepath: string,
data: string | Buffer | ArrayBufferView,
opts?: WriteFileOptions
): void
export function writeFileSync(
filepath: string,
data: string | Buffer | ArrayBufferView,
encoding: BufferEncoding
): void
export function writev(
fd: number,
buffers: ArrayBufferView[],
pos: number,
cb: Callback<[len: number]>
): void
export function writev(
fd: number,
buffers: ArrayBufferView[],
cb: Callback<[len: number]>
): void

1567
node_modules/bare-fs/index.js generated vendored

File diff suppressed because it is too large Load Diff

49
node_modules/bare-fs/lib/constants.d.ts generated vendored Normal file
View File

@ -0,0 +1,49 @@
declare const constants: {
O_RDWR: number
O_RDONLY: number
O_WRONLY: number
O_CREAT: number
O_TRUNC: number
O_APPEND: number
F_OK: number
R_OK: number
W_OK: number
X_OK: number
S_IFMT: number
S_IFREG: number
S_IFDIR: number
S_IFCHR: number
S_IFLNK: number
S_IFBLK: number
S_IFIFO: number
S_IFSOCK: number
S_IRUSR: number
S_IWUSR: number
S_IXUSR: number
S_IRGRP: number
S_IWGRP: number
S_IXGRP: number
S_IROTH: number
S_IWOTH: number
S_IXOTH: number
UV_DIRENT_UNKNOWN: number
UV_DIRENT_FILE: number
UV_DIRENT_DIR: number
UV_DIRENT_LINK: number
UV_DIRENT_FIFO: number
UV_DIRENT_SOCKET: number
UV_DIRENT_CHAR: number
UV_DIRENT_BLOCK: number
COPYFILE_EXCL: number
COPYFILE_FICLONE: number
COPYFILE_FICLONE_FORCE: number
UV_FS_SYMLINK_DIR: number
UV_FS_SYMLINK_JUNCTION: number
}
export = constants

49
node_modules/bare-fs/lib/constants.js generated vendored Normal file
View File

@ -0,0 +1,49 @@
const binding = require('../binding')
module.exports = {
O_RDWR: binding.O_RDWR,
O_RDONLY: binding.O_RDONLY,
O_WRONLY: binding.O_WRONLY,
O_CREAT: binding.O_CREAT,
O_TRUNC: binding.O_TRUNC,
O_APPEND: binding.O_APPEND,
F_OK: binding.F_OK || 0,
R_OK: binding.R_OK || 0,
W_OK: binding.W_OK || 0,
X_OK: binding.X_OK || 0,
S_IFMT: binding.S_IFMT,
S_IFREG: binding.S_IFREG,
S_IFDIR: binding.S_IFDIR,
S_IFCHR: binding.S_IFCHR,
S_IFLNK: binding.S_IFLNK,
S_IFBLK: binding.S_IFBLK || 0,
S_IFIFO: binding.S_IFIFO || 0,
S_IFSOCK: binding.S_IFSOCK || 0,
S_IRUSR: binding.S_IRUSR || 0,
S_IWUSR: binding.S_IWUSR || 0,
S_IXUSR: binding.S_IXUSR || 0,
S_IRGRP: binding.S_IRGRP || 0,
S_IWGRP: binding.S_IWGRP || 0,
S_IXGRP: binding.S_IXGRP || 0,
S_IROTH: binding.S_IROTH || 0,
S_IWOTH: binding.S_IWOTH || 0,
S_IXOTH: binding.S_IXOTH || 0,
UV_DIRENT_UNKNOWN: binding.UV_DIRENT_UNKNOWN,
UV_DIRENT_FILE: binding.UV_DIRENT_FILE,
UV_DIRENT_DIR: binding.UV_DIRENT_DIR,
UV_DIRENT_LINK: binding.UV_DIRENT_LINK,
UV_DIRENT_FIFO: binding.UV_DIRENT_FIFO,
UV_DIRENT_SOCKET: binding.UV_DIRENT_SOCKET,
UV_DIRENT_CHAR: binding.UV_DIRENT_CHAR,
UV_DIRENT_BLOCK: binding.UV_DIRENT_BLOCK,
COPYFILE_EXCL: binding.UV_FS_COPYFILE_EXCL,
COPYFILE_FICLONE: binding.UV_FS_COPYFILE_FICLONE,
COPYFILE_FICLONE_FORCE: binding.UV_FS_COPYFILE_FICLONE_FORCE,
UV_FS_SYMLINK_DIR: binding.UV_FS_SYMLINK_DIR,
UV_FS_SYMLINK_JUNCTION: binding.UV_FS_SYMLINK_JUNCTION
}

45
node_modules/bare-fs/package.json generated vendored
View File

@ -1,19 +1,36 @@
{ {
"name": "bare-fs", "name": "bare-fs",
"version": "2.3.0", "version": "4.0.2",
"description": "Native file system for Javascript", "description": "Native file system for Javascript",
"main": "index.js", "exports": {
"./package": "./package.json",
".": {
"types": "./index.d.ts",
"default": "./index.js"
},
"./promises": {
"types": "./promises.d.ts",
"default": "./promises.js"
},
"./constants": {
"types": "./lib/constants.d.ts",
"default": "./lib/constants.js"
}
},
"files": [ "files": [
"index.js", "index.js",
"index.d.ts",
"promises.js", "promises.js",
"promises.d.ts",
"binding.c", "binding.c",
"binding.js", "binding.js",
"CMakeLists.txt", "CMakeLists.txt",
"lib",
"prebuilds" "prebuilds"
], ],
"addon": true, "addon": true,
"scripts": { "scripts": {
"test": "standard && bare test.js" "test": "prettier . --check && bare test.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -25,13 +42,27 @@
"url": "https://github.com/holepunchto/bare-fs/issues" "url": "https://github.com/holepunchto/bare-fs/issues"
}, },
"homepage": "https://github.com/holepunchto/bare-fs#readme", "homepage": "https://github.com/holepunchto/bare-fs#readme",
"engines": {
"bare": ">=1.16.0"
},
"dependencies": { "dependencies": {
"bare-events": "^2.0.0", "bare-events": "^2.5.4",
"bare-path": "^2.0.0", "bare-path": "^3.0.0",
"bare-stream": "^1.0.0" "bare-stream": "^2.6.4"
}, },
"devDependencies": { "devDependencies": {
"bare-buffer": "^3.0.2",
"brittle": "^3.1.1", "brittle": "^3.1.1",
"standard": "^17.0.0" "cmake-bare": "^1.1.7",
"prettier": "^3.4.1",
"prettier-config-standard": "^7.0.0"
},
"peerDependencies": {
"bare-buffer": "*"
},
"peerDependenciesMeta": {
"bare-buffer": {
"optional": true
}
} }
} }

BIN
node_modules/bare-fs/prebuilds/android-arm/bare-fs.bare generated vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
node_modules/bare-fs/prebuilds/android-x64/bare-fs.bare generated vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
node_modules/bare-fs/prebuilds/ios-arm64/bare-fs.bare generated vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More