+ {typeof value === 'object' ? (
+ // If the value is an object, render it recursively
+ renderData(value)
+ ) : (
+ // Otherwise, display the value as is
+ value
+ )}
+
+
+ ))}
+
+
+ );
+ };
+
+ return (
+
+
Company Details
+ {searchData ? renderData(searchData) :
Fetching....
}
+
+
+ );
+};
+
+export default CompanyDetails;
diff --git a/BlockCoder/Client/Corporate/src/app/loanData/Scrapper/index.jsx b/BlockCoder/Client/Corporate/src/app/loanData/Scrapper/index.jsx
new file mode 100644
index 0000000..548ff42
--- /dev/null
+++ b/BlockCoder/Client/Corporate/src/app/loanData/Scrapper/index.jsx
@@ -0,0 +1,9 @@
+import React from 'react'
+import Basic from '../Basic'
+const index = () => {
+ return (
+
+ )
+}
+
+export default index
\ No newline at end of file
diff --git a/BlockCoder/Client/Corporate/src/app/loanData/page.jsx b/BlockCoder/Client/Corporate/src/app/loanData/page.jsx
new file mode 100644
index 0000000..27afbbe
--- /dev/null
+++ b/BlockCoder/Client/Corporate/src/app/loanData/page.jsx
@@ -0,0 +1,14 @@
+'use client'
+import Layout from '../components/Layout'
+import '../firebase'
+import React from 'react'
+import Scrapper from './Scrapper'
+const page = () => {
+ return (
+
+
+
+ )
+}
+
+export default page
\ No newline at end of file
diff --git a/BlockCoder/Client/Corporate/src/app/page.jsx b/BlockCoder/Client/Corporate/src/app/page.jsx
new file mode 100644
index 0000000..3c75dd9
--- /dev/null
+++ b/BlockCoder/Client/Corporate/src/app/page.jsx
@@ -0,0 +1,145 @@
+'use client'
+import Image from "next/image";
+import Link from "next/link";
+import './firebase'
+import React, { useState } from 'react';
+import { Container, Typography, TextField, Button } from '@mui/material';
+import { getAuth, signInWithEmailAndPassword, createUserWithEmailAndPassword } from 'firebase/auth';
+import { useRouter } from 'next/navigation'; // Import useRouter from Next.js
+import { getDatabase, ref, set } from 'firebase/database';
+const Login = () => {
+ const [email, setEmail] = useState('');
+ const [password, setPassword] = useState('');
+ const auth = getAuth();
+ const db = getDatabase();
+
+ const router = useRouter(); // Use useRouter for routing
+
+ const handleSignInOrSignUp = async () => {
+ try {
+ await signInWithEmailAndPassword(auth, email, password);
+ const user = auth.currentUser;
+
+ // Store the user's UID in session storage
+ if (user) {
+ sessionStorage.setItem('userUid', user.uid);
+ }
+
+ // Save user data to Realtime Database
+ await saveUserDataToDatabase(user);
+
+ console.log('signed in');
+ router.push('/Dashboard'); // Use router.push for navigation
+ } catch (signInError) {
+ if (signInError.code === 'auth/user-not-found') {
+ try {
+ await createUserWithEmailAndPassword(auth, email, password);
+ const user = auth.currentUser;
+
+ // Store the user's UID in session storage
+ if (user) {
+ sessionStorage.setItem('userUid', user.uid);
+ }
+
+ // Save user data to Realtime Database
+ await saveUserDataToDatabase(user);
+
+ console.log('signed up');
+ router.push('/Dashboard'); // Assuming you want to redirect after sign-up
+ } catch (signUpError) {
+ console.error('Error signing up:', signUpError.message);
+ }
+ } else {
+ console.error('Error signing in:', signInError.message);
+ }
+ }
+ };
+
+ // Function to save user data to Realtime Database
+ async function saveUserDataToDatabase(user) {
+ if (user) {
+ const userUid = user.uid;
+ const userRef = ref(db, 'Customers/' + userUid);
+
+ // Replace 'userData' with the actual data you want to save
+ const userData = {
+ email: user.email,
+ // Add other user data fields as needed
+ };
+
+ // Save user data to the Realtime Database
+ await set(userRef, userData);
+ }
+ }
+ return (
+
+
+
+
+
+
+
Login
+
Corporate Loan in few steps
+
+
+
+
+ );
+};
+
+export default Login;
\ No newline at end of file
diff --git a/BlockCoder/Client/Corporate/src/app/utils/outsideClick.js b/BlockCoder/Client/Corporate/src/app/utils/outsideClick.js
new file mode 100644
index 0000000..c8e7aec
--- /dev/null
+++ b/BlockCoder/Client/Corporate/src/app/utils/outsideClick.js
@@ -0,0 +1,24 @@
+import { useEffect, useState } from "react";
+
+export default function OutsideClick(ref) {
+
+ const [isClicked, setIsClicked] = useState();
+
+ //console.log("outside Ref", isClicked)
+ useEffect(() => {
+ function handleClickOutside(event) {
+ if (ref.current && !ref.current.contains(event.target)) {
+ setIsClicked(true);
+ } else {
+ setIsClicked(false);
+ }
+ }
+
+ document.addEventListener("mousedown", handleClickOutside);
+ return () => {
+ document.removeEventListener("mousedown", handleClickOutside);
+ };
+ }, [ref]);
+
+ return isClicked;
+}
\ No newline at end of file
diff --git a/BlockCoder/Client/Corporate/tailwind.config.js b/BlockCoder/Client/Corporate/tailwind.config.js
new file mode 100644
index 0000000..d53b2ea
--- /dev/null
+++ b/BlockCoder/Client/Corporate/tailwind.config.js
@@ -0,0 +1,18 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
+ './src/components/**/*.{js,ts,jsx,tsx,mdx}',
+ './src/app/**/*.{js,ts,jsx,tsx,mdx}',
+ ],
+ theme: {
+ extend: {
+ backgroundImage: {
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
+ 'gradient-conic':
+ 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
+ },
+ },
+ },
+ plugins: [],
+}
diff --git a/BlockCoder/Client/Corporate/tsconfig.json b/BlockCoder/Client/Corporate/tsconfig.json
new file mode 100644
index 0000000..a8dc7f7
--- /dev/null
+++ b/BlockCoder/Client/Corporate/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app/page.jsx"],
+ "exclude": ["node_modules"]
+}
diff --git a/BlockCoder/README.md b/BlockCoder/README.md
new file mode 100644
index 0000000..8795dbb
--- /dev/null
+++ b/BlockCoder/README.md
@@ -0,0 +1,40 @@
+# Pitch-to-SBI-Hackathon
+
+
+#### Team Name -BlockCoder
+#### Problem Statement - Digital loan processing of an NTB Business customer other than a proprietor
+#### Team Leader Email - mohit29code@gmail.com
+
+## A Brief of the Prototype:
+
+Developed a platform for corporate loan applicants.
+Integrates with the Ministry of Corporate Affairs (MCA) portal and an account aggregator system.
+Collects basic applicant information and fetches detailed organization data from MCA.
+Requires applicants to upload MOA, AOA, and partnership deeds, which are cross-verified with MCA data.
+Facilitates digital signing of partnership deeds by all partners for added security and efficiency.
+Obtains the credit history of the applicant's organization from an account aggregator.
+
+## Tech Stack:
+Frontend: React Js
+Backend: Node JS
+Database: Firebase
+Tools: Puppeteer js for scrapping data
+
+## Demo:
+https://www.veed.io/view/7cf70f1e-ac81-4dbf-aee3-81b45704a378?panel=share
+
+## Step-by-Step Code Execution Instructions:
+ git clone https://github.com/adrenal29/Pitch-to-SBI-Hackathon
+ cd BlockCoder
+ For running Backend:
+ cd server
+ npm install
+ node server.js
+ For running Frontend:
+ cd client
+ cd Corporate
+ npm install
+ npm run dev
+
+## What I Learned:
+ How web scrapping works and compliaance and rules used for scrapping public data
diff --git a/BlockCoder/Server/data.json b/BlockCoder/Server/data.json
new file mode 100644
index 0000000..ef87076
--- /dev/null
+++ b/BlockCoder/Server/data.json
@@ -0,0 +1,143 @@
+{
+ "U72900KA2011PTC060958": {
+ "Company Name": "VEDANTU INNOVATIONS PRIVATE LIMITED",
+ "ROC Code": "RoC-Bangalore",
+ "Registration Number": "060958",
+ "Company Category": "Company limited by Shares",
+ "Company SubCategory": "Non-govt company",
+ "Class of Company": "Private",
+ "Authorised Capital(Rs)": "290207940",
+ "Paid up Capital(Rs)": "202473705",
+ "Number of Members(Applicable in case of company without Share Capital)": "0",
+ "Date of Incorporation": "29/10/2011",
+ "Registered Address": "No. 1081, 2nd, 3rd & 4th Floor 14th Main, Sector-3, HSR Layout Bangalore KA 560102 IN",
+ "Address other than R/o where all or any books of account and papers are maintained": "-",
+ "Email Id": "ap@vedantu.com",
+ "Whether Listed or not": "Unlisted",
+ "ACTIVE compliance": "ACTIVE compliant",
+ "Suspended at stock exchange": "-",
+ "Date of last AGM": "30/11/2022",
+ "Date of Balance Sheet": "31/03/2022",
+ "Company Status(for efiling)": "Active",
+ "Charges": [
+ {
+ "Assets under charge": "A first ranking pari passu charge on all rights, t",
+ "Charge Amount": "500000000",
+ "Date of Creation": "14/12/2021",
+ "Date of Modification": "-",
+ "Status": "OPEN"
+ },
+ {
+ "Assets under charge": "Copyright or licence under copy right",
+ "Charge Amount": "150000000",
+ "Date of Creation": "04/04/2019",
+ "Date of Modification": "01/07/2019",
+ "Status": "CLOSED"
+ },
+ {
+ "Assets under charge": "",
+ "Charge Amount": "100000000",
+ "Date of Creation": "04/03/2020",
+ "Date of Modification": "-",
+ "Status": "Closed"
+ },
+ {
+ "Assets under charge": "Lien on Fixed Deposits",
+ "Charge Amount": "6545940",
+ "Date of Creation": "29/06/2021",
+ "Date of Modification": "-",
+ "Status": "OPEN"
+ }
+ ],
+ "Directors/Signatory Details": [
+ {
+ "DIN/PAN": "01947911",
+ "Name": "SIDDHARTH RAJENDER NAUTIYAL",
+ "Begin date": "08/03/2018",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "03090626",
+ "Name": "ANAND PRAKASH",
+ "Begin date": "29/10/2011",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "03090814",
+ "Name": "VAMSIKRISHNA PARUCHURIKUMAR",
+ "Begin date": "29/10/2011",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "03441515",
+ "Name": "ANAND DANIEL",
+ "Begin date": "22/05/2015",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "ASCPD2413J",
+ "Name": "SANJAY DARA",
+ "Begin date": "01/04/2023",
+ "End date": "-",
+ "Surrendered DIN": ""
+ }
+ ]
+ },
+ "U74110DL2019PTC350878": {
+ "Company Name": "PROGCAP FINANCIAL SERVICES PRIVATE LIMITED",
+ "ROC Code": "RoC-Delhi",
+ "Registration Number": "350878",
+ "Company Category": "Company limited by Shares",
+ "Company SubCategory": "Non-govt company",
+ "Class of Company": "Private",
+ "Authorised Capital(Rs)": "22000000",
+ "Paid up Capital(Rs)": "22000000",
+ "Number of Members(Applicable in case of company without Share Capital)": "0",
+ "Date of Incorporation": "03/06/2019",
+ "Registered Address": "252-A, 4th Floor, Vijay Tower, Near Panchsheel Commercial Complex, New Delhi East Delhi DL 110049 IN",
+ "Address other than R/o where all or any books of account and papers are maintained": "-",
+ "Email Id": "himanshu@progcap.com",
+ "Whether Listed or not": "Unlisted",
+ "ACTIVE compliance": "-",
+ "Suspended at stock exchange": "-",
+ "Date of last AGM": "30/09/2022",
+ "Date of Balance Sheet": "31/03/2022",
+ "Company Status(for efiling)": "Active",
+ "Charges": [
+ {
+ "Assets under charge": "No Charges Exists for Company/LLP",
+ "Charge Amount": "",
+ "Date of Creation": "",
+ "Date of Modification": "",
+ "Status": ""
+ }
+ ],
+ "Directors/Signatory Details": [
+ {
+ "DIN/PAN": "02012844",
+ "Name": "MANU RIKHYE",
+ "Begin date": "03/06/2019",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "07315578",
+ "Name": "HIMANSHU CHANDRA",
+ "Begin date": "03/06/2019",
+ "End date": "-",
+ "Surrendered DIN": ""
+ },
+ {
+ "DIN/PAN": "07677898",
+ "Name": "PALLAVI SHRIVASTAVA",
+ "Begin date": "03/06/2019",
+ "End date": "-",
+ "Surrendered DIN": ""
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/BlockCoder/Server/scraper.js b/BlockCoder/Server/scraper.js
new file mode 100644
index 0000000..6373774
--- /dev/null
+++ b/BlockCoder/Server/scraper.js
@@ -0,0 +1,81 @@
+const express = require('express');
+const bodyParser = require('body-parser');
+const puppeteer = require('puppeteer');
+const readline = require('readline');
+
+const app = express();
+app.use(bodyParser.json());
+
+app.post('/search', async (req, res) => {
+ const companyId = 'U72900KA2011PTC060958';
+
+ const browser = await puppeteer.launch();
+ const page = await browser.newPage();
+
+ const url = 'https://www.mca.gov.in/mcafoportal/viewCompanyMasterData.do'; // Replace with the actual URL of the search page.
+
+ await page.goto(url);
+
+ // Fill in the company ID input field.
+ await page.type('#companyID', companyId);
+
+ // Detect if CAPTCHA is present by checking for a specific element.
+ const isCaptchaPresent = await page.evaluate(() => {
+ return document.querySelector('#captcha') !== null;
+ });
+
+ if (isCaptchaPresent) {
+ // If CAPTCHA is detected, provide a URL to the user for manual CAPTCHA entry.
+ console.log('CAPTCHA detected. Please visit the following URL to view and solve the CAPTCHA:');
+ console.log(page.url()); // Provide the URL of the current page.
+
+ // Create a listener for user input (Enter key press) to continue automation.
+ const rl = readline.createInterface({
+ input: process.stdin,
+ output: process.stdout,
+ });
+
+ rl.question('Press Enter after solving the CAPTCHA: ', async () => {
+ rl.close();
+
+ // Continue with automation after the user presses Enter.
+ await page.click('#companyLLPMasterData_0');
+ await page.waitForSelector('#companiesact1');
+ console.log(page.url())
+ // Extract and process the search results.
+ const searchResults = await page.evaluate(() => {
+ const element = document.getElementById('exportCompanyMasterData');
+ console.log(element)
+ return element !== null;
+ });
+ console.log(searchResults);
+
+ // Close the Puppeteer browser.
+ await browser.close();
+
+ console.log('Search completed');
+ res.json({ result: 'Search completed' });
+ });
+ } else {
+ // CAPTCHA not detected, continue with the automation.
+ // Submit the form, extract results, etc.
+ await page.click('#companyLLPMasterData_0');
+ await page.waitForSelector('.search-results');
+
+ // Extract and process the search results.
+ const searchResults = await page.evaluate(() => {
+ // Extract data from the search results page using DOM manipulation.
+ // Return the results as an array or object.
+ });
+
+ // Close the Puppeteer browser.
+ await browser.close();
+
+ console.log('Search completed');
+ res.json({ result: 'Search completed' });
+ }
+});
+
+app.listen(3000, () => {
+ console.log('Server is running on port 3000');
+});
diff --git a/BlockCoder/Server/server.js b/BlockCoder/Server/server.js
new file mode 100644
index 0000000..4aa9cf3
--- /dev/null
+++ b/BlockCoder/Server/server.js
@@ -0,0 +1,25 @@
+const express=require('express')
+const bodyParser=require('body-parser')
+const fs = require('fs');
+const cors=require('cors')
+
+const app = express();
+app.use(bodyParser.json());
+app.use(cors());
+const companyData = JSON.parse(fs.readFileSync('data.json', 'utf-8'));
+// API endpoint to fetch company details by CIN number
+app.post('/company', (req, res) => {
+ var cin_no = req.body.cin;
+ var company = companyData[req.body.cin];
+ console.log(company)
+ if (company) {
+ res.json(company);
+ } else {
+ res.status(404).json({ error: 'Company not found' });
+ }
+});
+
+const port = process.env.PORT || 4000;
+app.listen(port, () => {
+ console.log(`Server is running on port ${port}`);
+});
diff --git a/BlockCoder/node_modules/.bin/browsers b/BlockCoder/node_modules/.bin/browsers
new file mode 100644
index 0000000..f7a56f1
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/browsers
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+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
diff --git a/BlockCoder/node_modules/.bin/browsers.cmd b/BlockCoder/node_modules/.bin/browsers.cmd
new file mode 100644
index 0000000..7cb5cf2
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/browsers.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/browsers.ps1 b/BlockCoder/node_modules/.bin/browsers.ps1
new file mode 100644
index 0000000..8c69573
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/browsers.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/escodegen b/BlockCoder/node_modules/.bin/escodegen
new file mode 100644
index 0000000..63c8e99
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/escodegen
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../escodegen/bin/escodegen.js" "$@"
+else
+ exec node "$basedir/../escodegen/bin/escodegen.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/escodegen.cmd b/BlockCoder/node_modules/.bin/escodegen.cmd
new file mode 100644
index 0000000..9ac38a7
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/escodegen.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/escodegen.ps1 b/BlockCoder/node_modules/.bin/escodegen.ps1
new file mode 100644
index 0000000..61d258e
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/escodegen.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/esgenerate b/BlockCoder/node_modules/.bin/esgenerate
new file mode 100644
index 0000000..710797a
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esgenerate
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../escodegen/bin/esgenerate.js" "$@"
+else
+ exec node "$basedir/../escodegen/bin/esgenerate.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/esgenerate.cmd b/BlockCoder/node_modules/.bin/esgenerate.cmd
new file mode 100644
index 0000000..5c6426d
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esgenerate.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/esgenerate.ps1 b/BlockCoder/node_modules/.bin/esgenerate.ps1
new file mode 100644
index 0000000..8835d60
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esgenerate.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/esparse b/BlockCoder/node_modules/.bin/esparse
new file mode 100644
index 0000000..1cc1c96
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esparse
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@"
+else
+ exec node "$basedir/../esprima/bin/esparse.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/esparse.cmd b/BlockCoder/node_modules/.bin/esparse.cmd
new file mode 100644
index 0000000..2ca6d50
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esparse.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/esparse.ps1 b/BlockCoder/node_modules/.bin/esparse.ps1
new file mode 100644
index 0000000..f19ed73
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esparse.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/esvalidate b/BlockCoder/node_modules/.bin/esvalidate
new file mode 100644
index 0000000..91a4c9b
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esvalidate
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@"
+else
+ exec node "$basedir/../esprima/bin/esvalidate.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/esvalidate.cmd b/BlockCoder/node_modules/.bin/esvalidate.cmd
new file mode 100644
index 0000000..4c41643
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esvalidate.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/esvalidate.ps1 b/BlockCoder/node_modules/.bin/esvalidate.ps1
new file mode 100644
index 0000000..23699d1
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/esvalidate.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/extract-zip b/BlockCoder/node_modules/.bin/extract-zip
new file mode 100644
index 0000000..60e5770
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/extract-zip
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../extract-zip/cli.js" "$@"
+else
+ exec node "$basedir/../extract-zip/cli.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/extract-zip.cmd b/BlockCoder/node_modules/.bin/extract-zip.cmd
new file mode 100644
index 0000000..6767bfe
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/extract-zip.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/extract-zip.ps1 b/BlockCoder/node_modules/.bin/extract-zip.ps1
new file mode 100644
index 0000000..cf7515c
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/extract-zip.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/is-docker b/BlockCoder/node_modules/.bin/is-docker
new file mode 100644
index 0000000..9e45793
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-docker
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../is-docker/cli.js" "$@"
+else
+ exec node "$basedir/../is-docker/cli.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/is-docker.cmd b/BlockCoder/node_modules/.bin/is-docker.cmd
new file mode 100644
index 0000000..79e76ca
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-docker.cmd
@@ -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%\..\is-docker\cli.js" %*
diff --git a/BlockCoder/node_modules/.bin/is-docker.ps1 b/BlockCoder/node_modules/.bin/is-docker.ps1
new file mode 100644
index 0000000..7427625
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-docker.ps1
@@ -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/../is-docker/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../is-docker/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../is-docker/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../is-docker/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/BlockCoder/node_modules/.bin/is-inside-container b/BlockCoder/node_modules/.bin/is-inside-container
new file mode 100644
index 0000000..753446f
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-inside-container
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../is-inside-container/cli.js" "$@"
+else
+ exec node "$basedir/../is-inside-container/cli.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/is-inside-container.cmd b/BlockCoder/node_modules/.bin/is-inside-container.cmd
new file mode 100644
index 0000000..88426e6
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-inside-container.cmd
@@ -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%\..\is-inside-container\cli.js" %*
diff --git a/BlockCoder/node_modules/.bin/is-inside-container.ps1 b/BlockCoder/node_modules/.bin/is-inside-container.ps1
new file mode 100644
index 0000000..cf19a2a
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/is-inside-container.ps1
@@ -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/../is-inside-container/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../is-inside-container/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../is-inside-container/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../is-inside-container/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/BlockCoder/node_modules/.bin/js-yaml b/BlockCoder/node_modules/.bin/js-yaml
new file mode 100644
index 0000000..ed78a86
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/js-yaml
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+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
diff --git a/BlockCoder/node_modules/.bin/js-yaml.cmd b/BlockCoder/node_modules/.bin/js-yaml.cmd
new file mode 100644
index 0000000..453312b
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/js-yaml.cmd
@@ -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" %*
diff --git a/BlockCoder/node_modules/.bin/js-yaml.ps1 b/BlockCoder/node_modules/.bin/js-yaml.ps1
new file mode 100644
index 0000000..2acfc61
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/js-yaml.ps1
@@ -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
diff --git a/BlockCoder/node_modules/.bin/mime b/BlockCoder/node_modules/.bin/mime
new file mode 100644
index 0000000..0a62a1b
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/mime
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../mime/cli.js" "$@"
+else
+ exec node "$basedir/../mime/cli.js" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/mime.cmd b/BlockCoder/node_modules/.bin/mime.cmd
new file mode 100644
index 0000000..54491f1
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/mime.cmd
@@ -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%\..\mime\cli.js" %*
diff --git a/BlockCoder/node_modules/.bin/mime.ps1 b/BlockCoder/node_modules/.bin/mime.ps1
new file mode 100644
index 0000000..2222f40
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/mime.ps1
@@ -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/../mime/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../mime/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../mime/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../mime/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/BlockCoder/node_modules/.bin/node-which b/BlockCoder/node_modules/.bin/node-which
new file mode 100644
index 0000000..aece735
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/node-which
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
+else
+ exec node "$basedir/../which/bin/node-which" "$@"
+fi
diff --git a/BlockCoder/node_modules/.bin/node-which.cmd b/BlockCoder/node_modules/.bin/node-which.cmd
new file mode 100644
index 0000000..8738aed
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/node-which.cmd
@@ -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%\..\which\bin\node-which" %*
diff --git a/BlockCoder/node_modules/.bin/node-which.ps1 b/BlockCoder/node_modules/.bin/node-which.ps1
new file mode 100644
index 0000000..cfb09e8
--- /dev/null
+++ b/BlockCoder/node_modules/.bin/node-which.ps1
@@ -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/../which/bin/node-which" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/BlockCoder/node_modules/.package-lock.json b/BlockCoder/node_modules/.package-lock.json
new file mode 100644
index 0000000..db73354
--- /dev/null
+++ b/BlockCoder/node_modules/.package-lock.json
@@ -0,0 +1,2474 @@
+{
+ "name": "blockcoder",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz",
+ "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==",
+ "dependencies": {
+ "@babel/highlight": "^7.22.10",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+ "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
+ "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@puppeteer/browsers": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.7.0.tgz",
+ "integrity": "sha512-sl7zI0IkbQGak/+IE3VEEZab5SSOlI5F6558WvzWGC1n3+C722rfewC1ZIkcF9dsoGSsxhsONoseVlNQG4wWvQ==",
+ "dependencies": {
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "progress": "2.0.3",
+ "proxy-agent": "6.3.0",
+ "tar-fs": "3.0.4",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.1"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ }
+ },
+ "node_modules/@puppeteer/browsers/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@puppeteer/browsers/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.5.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.6.tgz",
+ "integrity": "sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==",
+ "optional": true
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/2captcha-api": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/2captcha-api/-/2captcha-api-1.0.0.tgz",
+ "integrity": "sha512-ZGSBen+GblwyKWr+23Y3TqJnXh7d/iFn95GpfmfTILJX9dkFSmo+apNyJZLgNAFSVCQYakcbjE+k1U+robn0pQ=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+ "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/agent-base/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/agent-base/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/axios": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz",
+ "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
+ "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/basic-ftp": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz",
+ "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "dependencies": {
+ "run-applescript": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/child-process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz",
+ "integrity": "sha512-e45+JmjvkV2XQsJ9rUJghiYJ7/9Uk8fyYi1UwfP071VmGKBu/oD1OIwuD0+jSwjMtQkV0a0FVpPTEW+XGlbSdw=="
+ },
+ "node_modules/chromium-bidi": {
+ "version": "0.4.20",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.20.tgz",
+ "integrity": "sha512-ruHgVZFEv00mAQMz1tQjfjdG63jiPWrQPF6HLlX2ucqLqVTJoWngeBEKHaJ6n1swV/HSvgnBNbtTRIlcVyW3Fw==",
+ "dependencies": {
+ "mitt": "3.0.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
+ "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
+ "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz",
+ "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "dependencies": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1159816",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1159816.tgz",
+ "integrity": "sha512-2cZlHxC5IlgkIWe2pSDmCrDiTzbSJWywjbDDnupOImEBcG31CQgBLV8wWE+5t+C4rimcjHsbzy7CBzf9oFjboA=="
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/express/node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/extract-zip/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz",
+ "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^5.0.1",
+ "debug": "^4.3.4",
+ "fs-extra": "^8.1.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/get-uri/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/get-uri/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "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": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz",
+ "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-wsl/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "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=="
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "dependencies": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pac-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==",
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "pac-resolver": "^7.0.0",
+ "socks-proxy-agent": "^8.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/pac-resolver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz",
+ "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==",
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "ip": "^1.1.8",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-agent": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz",
+ "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.0.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/puppeteer": {
+ "version": "21.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.1.0.tgz",
+ "integrity": "sha512-x0KfxVd7Hsefq8nzH1AAdSnYw5HEKI4QPeexBmx7nO29jDoEKNE+75G8zQ0E57ZOny/vAZZptCFdD3A7PkeESQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@puppeteer/browsers": "1.7.0",
+ "cosmiconfig": "8.2.0",
+ "puppeteer-core": "21.1.0"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "21.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.1.0.tgz",
+ "integrity": "sha512-ggfTj09jo81Y6M4DyNj80GrY6Pip+AtDUgGljqoSzP6FG5nz5Aju6Cs/X147fLgkJ4UKTb736U6cDp0ssLzN5Q==",
+ "dependencies": {
+ "@puppeteer/browsers": "1.7.0",
+ "chromium-bidi": "0.4.20",
+ "cross-fetch": "4.0.0",
+ "debug": "4.3.4",
+ "devtools-protocol": "0.0.1159816",
+ "ws": "8.13.0"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readline": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+ "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/run-applescript/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/run-applescript/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/run-applescript/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/run-applescript/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+ "dependencies": {
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz",
+ "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==",
+ "dependencies": {
+ "agent-base": "^7.0.1",
+ "debug": "^4.3.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/socks/node_modules/ip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz",
+ "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==",
+ "dependencies": {
+ "fast-fifo": "^1.1.0",
+ "queue-tick": "^1.0.1"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz",
+ "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==",
+ "dependencies": {
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
+ "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "node_modules/titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/ws": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+ "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/BlockCoder/node_modules/2captcha-api/.npmignore b/BlockCoder/node_modules/2captcha-api/.npmignore
new file mode 100644
index 0000000..064d2e6
--- /dev/null
+++ b/BlockCoder/node_modules/2captcha-api/.npmignore
@@ -0,0 +1,2 @@
+# Created by .ignore support plugin (hsz.mobi)
+.idea/*
diff --git a/BlockCoder/node_modules/2captcha-api/index.js b/BlockCoder/node_modules/2captcha-api/index.js
new file mode 100644
index 0000000..e77160d
--- /dev/null
+++ b/BlockCoder/node_modules/2captcha-api/index.js
@@ -0,0 +1,256 @@
+"use strict";
+
+var http = require('http');
+var https = require('https');
+var url = require('url');
+var fs = require('fs');
+var querystring = require('querystring');
+
+var apiKey;
+var apiInUrl = 'http://2captcha.com/in.php';
+var apiResUrl = 'http://2captcha.com/res.php';
+var apiMethod = 'base64';
+var apiMethodRecaptcha = 'userrecaptcha';
+
+var defaultOptions = {
+ pollingInterval: 2000,
+ retries: 3
+};
+
+
+function pollCaptcha(captchaId, options, invalid, callback) {
+ invalid = invalid.bind({options:options,captchaId:captchaId});
+ var intervalId = setInterval(function() {
+ var httpRequestOptions = url.parse(apiResUrl + '?action=get&key=' + apiKey + '&id=' + captchaId);
+ var request = http.request(httpRequestOptions, function(response) {
+ var body = '';
+
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ if (body === 'CAPCHA_NOT_READY'){
+ return;
+ }
+
+ clearInterval(intervalId);
+
+ var result = body.split('|');
+ if (result[0] !== 'OK') {
+ callback(result[0]); //error
+ } else {
+ callback(null, {
+ id: captchaId,
+ text: result[1]
+ }, invalid);
+ }
+ callback = function() {}; // prevent the callback from being called more than once, if multiple http requests are open at the same time.
+ });
+ });
+
+ request.end();
+ }, (options.pollingInterval || defaultOptions.pollingInterval));
+}
+
+module.exports.setApiKey = function(key) {
+ apiKey = key;
+};
+
+module.exports.decode = function(base64, options, callback) {
+ if(!callback){
+ callback = options;
+ options = defaultOptions;
+ }
+ var httpRequestOptions = url.parse(apiInUrl);
+ httpRequestOptions.method = 'POST';
+
+ var postData = {
+ method: apiMethod,
+ key: apiKey,
+ body: base64
+ };
+
+ postData = querystring.stringify(postData);
+
+ var request = http.request(httpRequestOptions, function(response) {
+ var body = '';
+
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ var result = body.split('|');
+ if (result[0] !== 'OK'){
+ return callback(result[0]);
+ }
+
+ pollCaptcha(result[1], options, function(error){
+
+
+ var callbackToInitialCallback = callback;
+
+ module.exports.report(this.captchaId);
+
+ if(error){
+ return callbackToInitialCallback('CAPTCHA_FAILED');
+ }
+
+ if(!this.options.retries){
+ this.options.retries = defaultOptions.retries;
+ }
+ if(this.options.retries > 1){
+ this.options.retries = this.options.retries - 1;
+ module.exports.decode(base64, this.options, callback);
+ }else{
+ callbackToInitialCallback('CAPTCHA_FAILED_TOO_MANY_TIMES');
+ }
+ }, callback);
+ });
+ });
+ request.write(postData);
+ request.end();
+};
+
+module.exports.decodeReCaptcha = function(captcha, pageUrl, options, callback) {
+ if(!callback){
+ callback = options;
+ options = defaultOptions;
+ }
+ var httpRequestOptions = url.parse(apiInUrl);
+ httpRequestOptions.method = 'POST';
+
+ var postData = {
+ method: apiMethodRecaptcha,
+ key: apiKey,
+ googlekey: captcha,
+ pageurl: pageUrl
+ };
+
+ postData = querystring.stringify(postData);
+
+ var request = http.request(httpRequestOptions, function(response) {
+ var body = '';
+
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ var result = body.split('|');
+ if (result[0] !== 'OK'){
+ return callback(result[0]);
+ }
+
+ pollCaptcha(result[1], options, function(error){
+ var callbackToInitialCallback = callback;
+
+ module.exports.report(this.captchaId);
+
+ if(error){
+ return callbackToInitialCallback('CAPTCHA_FAILED');
+ }
+
+ if(!this.options.retries){
+ this.options.retries = defaultOptions.retries;
+ }
+ if(this.options.retries > 1){
+ this.options.retries = this.options.retries - 1;
+ module.exports.decode(captcha, this.options, callback);
+ }else{
+ callbackToInitialCallback('CAPTCHA_FAILED_TOO_MANY_TIMES');
+ }
+ }, callback);
+ });
+ });
+ request.write(postData);
+ request.end();
+};
+
+module.exports.decodeUrl = function(uri, options, callback) {
+ if(!callback){
+ callback = options;
+ options = defaultOptions;
+ }
+ var protocol = http;
+ if (uri.indexOf('https') == 0)
+ protocol = https;
+
+ var options = url.parse(uri);
+
+ var request = protocol.request(options, function(response) {
+ var body = '';
+ response.setEncoding('base64');
+
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ module.exports.decode(body, options, callback);
+ });
+ });
+ request.end();
+};
+
+module.exports.solveRecaptchaFromHtml = function(html, options, callback){
+ if(!callback){
+ callback = options;
+ options = defaultOptions;
+ }
+ var googleUrl = html.split('/challenge?k=');
+ if(googleUrl.length < 2)
+ return callback('No captcha found in html');
+ googleUrl = googleUrl[1];
+ googleUrl = googleUrl.split('"')[0];
+ googleUrl = googleUrl.split("'")[0];
+ googleUrl = 'https://www.google.com/recaptcha/api/challenge?k='+googleUrl;
+
+ var protocol = http;
+ if (googleUrl.indexOf('https') == 0)
+ protocol = https;
+
+ var httpRequestOptions = url.parse(googleUrl);
+
+ var request = protocol.request(httpRequestOptions, function(response) {
+ var body = '';
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ var challenge = body.split("'");
+ if (!challenge[1])
+ return callback('Parsing captcha failed');
+ challenge = challenge[1];
+ if (challenge.length === 0)
+ return callback('Parsing captcha failed');
+
+ module.exports.decodeUrl('https://www.google.com/recaptcha/api/image?c='+challenge,options,function(error, result, invalid){
+ if(result){
+ result.challenge = challenge;
+ }
+ callback(error, result, invalid);
+ });
+ });
+ });
+ request.end();
+};
+
+module.exports.report = function(captchaId){
+ var reportUrl = apiResUrl+'?action=reportbad&key='+apiKey+'&id='+captchaId;
+ var options = url.parse(reportUrl);
+
+ var request = http.request(options, function(response) {
+ var body = '';
+
+ response.on('data', function(chunk) {
+ body += chunk;
+ });
+
+ response.on('end', function() {
+ });
+ });
+ request.end();
+};
\ No newline at end of file
diff --git a/BlockCoder/node_modules/2captcha-api/package.json b/BlockCoder/node_modules/2captcha-api/package.json
new file mode 100644
index 0000000..4b25d2a
--- /dev/null
+++ b/BlockCoder/node_modules/2captcha-api/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "2captcha-api",
+ "version": "1.0.0",
+ "description": "A wrapper for the 2Captcha API",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [
+ "captcha"
+ ],
+ "author": "Artyom Bochkarev",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/bochkarev-artem/2captcha"
+ }
+}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/2captcha-api/readme.md b/BlockCoder/node_modules/2captcha-api/readme.md
new file mode 100644
index 0000000..ffd4c1f
--- /dev/null
+++ b/BlockCoder/node_modules/2captcha-api/readme.md
@@ -0,0 +1,39 @@
+# 2Captcha API wrapper for Node.js
+
+Post a captcha to the [2Captcha](https://2captcha.com/) service, then polls until the captcha is decoded.
+
+## Installation
+
+ npm install 2captcha
+
+
+## Usage
+
+
+Set up your api key:
+
+ var solver = require('2captcha');
+
+ solver.setApiKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
+
+
+Decode from a url, with a 10 seconds polling interval: (default = 2000ms)
+
+ solver.decodeUrl(url, {pollingInterval: 10000}, function(err, result, invalid) {
+ console.log(result.text);
+ });
+
+Decode reCaptcha, with a 10 seconds polling interval: (default = 2000ms)
+
+ solver.decodeReCaptcha(captcha, pageUrl, {pollingInterval: 10000}, function(err, result, invalid) {
+ console.log(result.text);
+ });
+
+Decode from a url retrying 5 times if invalid is called (default = 3)
+
+ solver.decodeUrl(url, {retries: 5}, function(err, result, invalid) {
+ if(!checkIfCaptchaIsValid(result.text)){
+ return invalid();
+ }
+ });
+
diff --git a/BlockCoder/node_modules/@babel/code-frame/LICENSE b/BlockCoder/node_modules/@babel/code-frame/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/code-frame/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/BlockCoder/node_modules/@babel/code-frame/README.md b/BlockCoder/node_modules/@babel/code-frame/README.md
new file mode 100644
index 0000000..7160755
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/code-frame/README.md
@@ -0,0 +1,19 @@
+# @babel/code-frame
+
+> Generate errors that contain a code frame that point to source locations.
+
+See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/code-frame
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/code-frame --dev
+```
diff --git a/BlockCoder/node_modules/@babel/code-frame/lib/index.js b/BlockCoder/node_modules/@babel/code-frame/lib/index.js
new file mode 100644
index 0000000..8d8281e
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/code-frame/lib/index.js
@@ -0,0 +1,156 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.codeFrameColumns = codeFrameColumns;
+exports.default = _default;
+var _highlight = require("@babel/highlight");
+var _chalk2 = require("chalk");
+const chalk = _chalk2;
+let chalkWithForcedColor = undefined;
+function getChalk(forceColor) {
+ if (forceColor) {
+ var _chalkWithForcedColor;
+ (_chalkWithForcedColor = chalkWithForcedColor) != null ? _chalkWithForcedColor : chalkWithForcedColor = new chalk.constructor({
+ enabled: true,
+ level: 1
+ });
+ return chalkWithForcedColor;
+ }
+ return chalk;
+}
+let deprecationWarningShown = false;
+function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+}
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+function getMarkerLines(loc, source, opts) {
+ const startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ const endLoc = Object.assign({}, startLoc, loc.end);
+ const {
+ linesAbove = 2,
+ linesBelow = 3
+ } = opts || {};
+ const startLine = startLoc.line;
+ const startColumn = startLoc.column;
+ const endLine = endLoc.line;
+ const endColumn = endLoc.column;
+ let start = Math.max(startLine - (linesAbove + 1), 0);
+ let end = Math.min(source.length, endLine + linesBelow);
+ if (startLine === -1) {
+ start = 0;
+ }
+ if (endLine === -1) {
+ end = source.length;
+ }
+ const lineDiff = endLine - startLine;
+ const markerLines = {};
+ if (lineDiff) {
+ for (let i = 0; i <= lineDiff; i++) {
+ const lineNumber = i + startLine;
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ const sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ const sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+ return {
+ start,
+ end,
+ markerLines
+ };
+}
+function codeFrameColumns(rawLines, loc, opts = {}) {
+ const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
+ const chalk = getChalk(opts.forceColor);
+ const defs = getDefs(chalk);
+ const maybeHighlight = (chalkFn, string) => {
+ return highlighted ? chalkFn(string) : string;
+ };
+ const lines = rawLines.split(NEWLINE);
+ const {
+ start,
+ end,
+ markerLines
+ } = getMarkerLines(loc, lines, opts);
+ const hasColumns = loc.start && typeof loc.start.column === "number";
+ const numberMaxWidth = String(end).length;
+ const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
+ let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} |`;
+ const hasMarker = markerLines[number];
+ const lastMarkerLine = !markerLines[number + 1];
+ if (hasMarker) {
+ let markerLine = "";
+ if (Array.isArray(hasMarker)) {
+ const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ const numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ }
+ }).join("\n");
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+}
+function _default(rawLines, lineNumber, colNumber, opts = {}) {
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ const deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+ colNumber = Math.max(colNumber, 0);
+ const location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/BlockCoder/node_modules/@babel/code-frame/lib/index.js.map b/BlockCoder/node_modules/@babel/code-frame/lib/index.js.map
new file mode 100644
index 0000000..739029c
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/code-frame/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_highlight","require","_chalk2","chalk","_chalk","chalkWithForcedColor","undefined","getChalk","forceColor","_chalkWithForcedColor","constructor","enabled","level","deprecationWarningShown","getDefs","gutter","grey","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","Object","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","highlighted","highlightCode","shouldHighlight","defs","maybeHighlight","chalkFn","string","lines","split","hasColumns","numberMaxWidth","String","highlightedLines","highlight","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","_default","colNumber","process","emitWarning","deprecationError","Error","name","console","warn","location"],"sources":["../src/index.ts"],"sourcesContent":["import highlight, { shouldHighlight } from \"@babel/highlight\";\n\nimport _chalk from \"chalk\";\nconst chalk = _chalk as unknown as typeof import(\"chalk-BABEL_8_BREAKING-true\");\ntype Chalk =\n typeof import(\"chalk-BABEL_8_BREAKING-true\").Instance extends new () => infer R\n ? R\n : never;\n\nlet chalkWithForcedColor: Chalk = undefined;\nfunction getChalk(forceColor: boolean) {\n if (forceColor) {\n chalkWithForcedColor ??= process.env.BABEL_8_BREAKING\n ? new chalk.Instance({ level: 1 })\n : // @ts-expect-error .Instance was .constructor in chalk 2\n new chalk.constructor({ enabled: true, level: 1 });\n return chalkWithForcedColor;\n }\n return chalk;\n}\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * Chalk styles for code frame token types.\n */\nfunction getDefs(chalk: Chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold,\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record;\n\nfunction getMarkerLines(\n loc: NodeLocation,\n source: Array,\n opts: Options,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const highlighted =\n (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);\n const chalk = getChalk(opts.forceColor);\n const defs = getDefs(chalk);\n const maybeHighlight = (chalkFn: Chalk, string: string) => {\n return highlighted ? chalkFn(string) : string;\n };\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n return [\n maybeHighlight(defs.marker, \">\"),\n maybeHighlight(defs.gutter, gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${\n line.length > 0 ? ` ${line}` : \"\"\n }`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n"],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/code-frame/package.json b/BlockCoder/node_modules/@babel/code-frame/package.json
new file mode 100644
index 0000000..7069f1f
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/code-frame/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/code-frame",
+ "version": "7.22.10",
+ "description": "Generate errors that contain a code frame that point to source locations.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-code-frame"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/highlight": "^7.22.10",
+ "chalk": "^2.4.2"
+ },
+ "devDependencies": {
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/LICENSE b/BlockCoder/node_modules/@babel/helper-validator-identifier/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/README.md b/BlockCoder/node_modules/@babel/helper-validator-identifier/README.md
new file mode 100644
index 0000000..4f704c4
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-identifier
+
+> Validate identifier/keywords name
+
+See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-validator-identifier
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-identifier
+```
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js
new file mode 100644
index 0000000..cd1f450
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js
@@ -0,0 +1,70 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+ return false;
+}
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+function isIdentifierName(name) {
+ let isFirst = true;
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+ if (isFirst) {
+ isFirst = false;
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+ return !isFirst;
+}
+
+//# sourceMappingURL=identifier.js.map
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
new file mode 100644
index 0000000..dd0449d
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,3104,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAWA,IAAIA,4BAA4B,GAAG,8qIAA8qI;AAEjtI,IAAIC,uBAAuB,GAAG,mkFAAmkF;AAEjmF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEj+C,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAA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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js
new file mode 100644
index 0000000..c677cea
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js
@@ -0,0 +1,57 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+var _identifier = require("./identifier");
+var _keyword = require("./keyword");
+
+//# sourceMappingURL=index.js.map
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js.map
new file mode 100644
index 0000000..cc9ad3d
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js
new file mode 100644
index 0000000..054cf84
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js
@@ -0,0 +1,35 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+
+//# sourceMappingURL=keyword.js.map
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
new file mode 100644
index 0000000..52a9e99
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/package.json b/BlockCoder/node_modules/@babel/helper-validator-identifier/package.json
new file mode 100644
index 0000000..7579010
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.22.5",
+ "description": "Validate identifier/keywords name",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-identifier"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "devDependencies": {
+ "@unicode/unicode-15.0.0": "^1.3.1",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)",
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/BlockCoder/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
new file mode 100644
index 0000000..aca8710
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
@@ -0,0 +1,75 @@
+"use strict";
+
+// Always use the latest available version of Unicode!
+// https://tc39.github.io/ecma262/#sec-conformance
+const version = "15.0.0";
+
+const start = require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Start/code-points.js").filter(function (ch) {
+ return ch > 0x7f;
+});
+let last = -1;
+const cont = [0x200c, 0x200d].concat(
+ require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Continue/code-points.js").filter(function (ch) {
+ return ch > 0x7f && search(start, ch, last + 1) == -1;
+ })
+);
+
+function search(arr, ch, starting) {
+ for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) {
+ if (arr[i] === ch) return i;
+ }
+ return -1;
+}
+
+function pad(str, width) {
+ while (str.length < width) str = "0" + str;
+ return str;
+}
+
+function esc(code) {
+ const hex = code.toString(16);
+ if (hex.length <= 2) return "\\x" + pad(hex, 2);
+ else return "\\u" + pad(hex, 4);
+}
+
+function generate(chars) {
+ const astral = [];
+ let re = "";
+ for (let i = 0, at = 0x10000; i < chars.length; i++) {
+ const from = chars[i];
+ let to = from;
+ while (i < chars.length - 1 && chars[i + 1] == to + 1) {
+ i++;
+ to++;
+ }
+ if (to <= 0xffff) {
+ if (from == to) re += esc(from);
+ else if (from + 1 == to) re += esc(from) + esc(to);
+ else re += esc(from) + "-" + esc(to);
+ } else {
+ astral.push(from - at, to - from);
+ at = to;
+ }
+ }
+ return { nonASCII: re, astral: astral };
+}
+
+const startData = generate(start);
+const contData = generate(cont);
+
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"
+);
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"
+);
diff --git a/BlockCoder/node_modules/@babel/highlight/LICENSE b/BlockCoder/node_modules/@babel/highlight/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/highlight/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/BlockCoder/node_modules/@babel/highlight/README.md b/BlockCoder/node_modules/@babel/highlight/README.md
new file mode 100644
index 0000000..4c2ec87
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/highlight/README.md
@@ -0,0 +1,19 @@
+# @babel/highlight
+
+> Syntax highlight JavaScript strings for output in terminals.
+
+See our website [@babel/highlight](https://babeljs.io/docs/babel-highlight) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/highlight
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/highlight --dev
+```
diff --git a/BlockCoder/node_modules/@babel/highlight/lib/index.js b/BlockCoder/node_modules/@babel/highlight/lib/index.js
new file mode 100644
index 0000000..9f14f10
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/highlight/lib/index.js
@@ -0,0 +1,106 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = highlight;
+exports.shouldHighlight = shouldHighlight;
+var _jsTokens = require("js-tokens");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+var _chalk2 = require("chalk");
+const chalk = _chalk2;
+const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
+function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsxIdentifier: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+}
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+const BRACKET = /^[()[\]{}]$/;
+let tokenize;
+{
+ const JSX_TAG = /^[a-z][\w-]*$/i;
+ const getTokenType = function (token, offset, text) {
+ if (token.type === "name") {
+ if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
+ return "keyword";
+ }
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == "")) {
+ return "jsxIdentifier";
+ }
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+ return token.type;
+ };
+ tokenize = function* (text) {
+ let match;
+ while (match = _jsTokens.default.exec(text)) {
+ const token = _jsTokens.matchToToken(match);
+ yield {
+ type: getTokenType(token, match.index, text),
+ value: token.value
+ };
+ }
+ };
+}
+function highlightTokens(defs, text) {
+ let highlighted = "";
+ for (const {
+ type,
+ value
+ } of tokenize(text)) {
+ const colorize = defs[type];
+ if (colorize) {
+ highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
+ } else {
+ highlighted += value;
+ }
+ }
+ return highlighted;
+}
+function shouldHighlight(options) {
+ return !!chalk.supportsColor || options.forceColor;
+}
+let chalkWithForcedColor = undefined;
+function getChalk(forceColor) {
+ if (forceColor) {
+ var _chalkWithForcedColor;
+ (_chalkWithForcedColor = chalkWithForcedColor) != null ? _chalkWithForcedColor : chalkWithForcedColor = new chalk.constructor({
+ enabled: true,
+ level: 1
+ });
+ return chalkWithForcedColor;
+ }
+ return chalk;
+}
+{
+ {
+ exports.getChalk = options => getChalk(options.forceColor);
+ }
+}
+function highlight(code, options = {}) {
+ if (code !== "" && shouldHighlight(options)) {
+ const defs = getDefs(getChalk(options.forceColor));
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/BlockCoder/node_modules/@babel/highlight/lib/index.js.map b/BlockCoder/node_modules/@babel/highlight/lib/index.js.map
new file mode 100644
index 0000000..b7b1666
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/highlight/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_jsTokens","require","_helperValidatorIdentifier","_chalk2","chalk","_chalk","sometimesKeywords","Set","getDefs","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","grey","invalid","white","bgRed","bold","NEWLINE","BRACKET","tokenize","JSX_TAG","getTokenType","token","offset","text","type","isKeyword","value","isStrictReservedWord","has","test","slice","toLowerCase","match","jsTokens","default","exec","matchToToken","index","highlightTokens","defs","highlighted","colorize","split","map","str","join","shouldHighlight","options","supportsColor","forceColor","chalkWithForcedColor","undefined","getChalk","_chalkWithForcedColor","constructor","enabled","level","exports","highlight","code"],"sources":["../src/index.ts"],"sourcesContent":["/// \n\nimport type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport _chalk from \"chalk\";\nconst chalk = _chalk as unknown as typeof import(\"chalk-BABEL_8_BREAKING-true\");\ntype Chalk =\n typeof import(\"chalk-BABEL_8_BREAKING-true\").Instance extends new () => infer R\n ? R\n : never;\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n/**\n * Chalk styles for token types.\n */\nfunction getDefs(chalk: Chalk): Record {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsxIdentifier: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold,\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n /**\n * Get the type of token, specifying punctuator type.\n */\n const getTokenType = function (\n token: JSToken | JSXToken,\n ): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n };\n\n /**\n * Turn a string of JS into an array of objects.\n */\n tokenize = function* (text: string): Generator {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n };\n} else {\n /**\n * RegExp to test for what seems to be a JSX tag name.\n */\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n // The token here is defined in js-tokens@4. However we don't bother\n // typing it since the whole block will be removed in Babel 8\n const getTokenType = function (token: any, offset: number, text: string) {\n if (token.type === \"name\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (\n JSX_TAG.test(token.value) &&\n (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) == \"\")\n ) {\n return \"jsxIdentifier\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n\n if (\n token.type === \"invalid\" &&\n (token.value === \"@\" || token.value === \"#\")\n ) {\n return \"punctuator\";\n }\n\n return token.type;\n };\n\n tokenize = function* (text: string) {\n let match;\n while ((match = (jsTokens as any).default.exec(text))) {\n const token = (jsTokens as any).matchToToken(match);\n\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value,\n };\n }\n };\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\nfunction highlightTokens(defs: Record, text: string) {\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n const colorize = defs[type];\n if (colorize) {\n highlighted += value\n .split(NEWLINE)\n .map(str => colorize(str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\n\ntype Options = {\n forceColor?: boolean;\n};\n\n/**\n * Whether the code should be highlighted given the passed options.\n */\nexport function shouldHighlight(options: Options): boolean {\n return !!chalk.supportsColor || options.forceColor;\n}\n\nlet chalkWithForcedColor: Chalk = undefined;\nfunction getChalk(forceColor: boolean) {\n if (forceColor) {\n chalkWithForcedColor ??= process.env.BABEL_8_BREAKING\n ? new chalk.Instance({ level: 1 })\n : // @ts-expect-error .Instance was .constructor in chalk 2\n new chalk.constructor({ enabled: true, level: 1 });\n return chalkWithForcedColor;\n }\n return chalk;\n}\nif (!process.env.BABEL_8_BREAKING) {\n if (!USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.getChalk = (options: Options) => getChalk(options.forceColor);\n }\n}\n\n/**\n * Highlight `code`.\n */\nexport default function highlight(code: string, options: Options = {}): string {\n if (code !== \"\" && shouldHighlight(options)) {\n const defs = getDefs(getChalk(options.forceColor));\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}\n"],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@babel/highlight/package.json b/BlockCoder/node_modules/@babel/highlight/package.json
new file mode 100644
index 0000000..33f69fd
--- /dev/null
+++ b/BlockCoder/node_modules/@babel/highlight/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/highlight",
+ "version": "7.22.10",
+ "description": "Syntax highlight JavaScript strings for output in terminals.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-highlight",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-highlight"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "devDependencies": {
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/README.md b/BlockCoder/node_modules/@puppeteer/browsers/README.md
new file mode 100644
index 0000000..f534212
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/README.md
@@ -0,0 +1,28 @@
+# @puppeteer/browsers
+
+Manage and launch browsers/drivers from a CLI or programmatically.
+
+## CLI
+
+Use `npx` to run the CLI:
+
+```bash
+npx @puppeteer/browsers --help
+```
+
+CLI help will provide all documentation you need to use the CLI.
+
+```bash
+npx @puppeteer/browsers --help # help for all commands
+npx @puppeteer/browsers install --help # help for the install command
+npx @puppeteer/browsers launch --help # help for the launch command
+```
+
+## Known limitations
+
+1. We support installing and running Firefox, Chrome and Chromium. The `latest`, `beta`, `dev`, `canary`, `stable` keywords are only supported for the install command. For the `launch` command you need to specify an exact build ID. The build ID is provided by the `install` command (see `npx @puppeteer/browsers install --help` for the format).
+2. Launching the system browsers is only possible for Chrome/Chromium.
+
+## API
+
+The programmatic API allows installing and launching browsers from your code. See the `test` folder for examples on how to use the `install`, `canInstall`, `launch`, `computeExecutablePath`, `computeSystemExecutablePath` and other methods.
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts
new file mode 100644
index 0000000..769023f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts
@@ -0,0 +1,31 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+import * as readline from 'readline';
+import { Browser } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare class CLI {
+ #private;
+ constructor(cachePath?: string, rl?: readline.Interface);
+ run(argv: string[]): Promise;
+}
+/**
+ * @public
+ */
+export declare function makeProgressCallback(browser: Browser, buildId: string): (downloadedBytes: number, totalBytes: number) => void;
+//# sourceMappingURL=CLI.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts.map
new file mode 100644
index 0000000..dd94bdf
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,OAAO,EAGR,MAAM,gCAAgC,CAAC;AAmCxC;;GAEG;AACH,qBAAa,GAAG;;gBAIF,SAAS,SAAgB,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwCxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAwMzC;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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js
new file mode 100644
index 0000000..5144b6f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js
@@ -0,0 +1,238 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeProgressCallback = exports.CLI = void 0;
+const process_1 = require("process");
+const readline = __importStar(require("readline"));
+const progress_1 = __importDefault(require("progress"));
+const helpers_1 = require("yargs/helpers");
+const yargs_1 = __importDefault(require("yargs/yargs"));
+const browser_data_js_1 = require("./browser-data/browser-data.js");
+const Cache_js_1 = require("./Cache.js");
+const detectPlatform_js_1 = require("./detectPlatform.js");
+const install_js_1 = require("./install.js");
+const launch_js_1 = require("./launch.js");
+/**
+ * @public
+ */
+class CLI {
+ #cachePath;
+ #rl;
+ constructor(cachePath = process.cwd(), rl) {
+ this.#cachePath = cachePath;
+ this.#rl = rl;
+ }
+ #defineBrowserParameter(yargs) {
+ yargs.positional('browser', {
+ description: 'Which browser to install [@]. `latest` will try to find the latest available build. `buildId` is a browser-specific identifier such as a version or a revision.',
+ type: 'string',
+ coerce: (opt) => {
+ return {
+ name: this.#parseBrowser(opt),
+ buildId: this.#parseBuildId(opt),
+ };
+ },
+ });
+ }
+ #definePlatformParameter(yargs) {
+ yargs.option('platform', {
+ type: 'string',
+ desc: 'Platform that the binary needs to be compatible with.',
+ choices: Object.values(browser_data_js_1.BrowserPlatform),
+ defaultDescription: 'Auto-detected',
+ });
+ }
+ #definePathParameter(yargs, required = false) {
+ yargs.option('path', {
+ type: 'string',
+ desc: 'Path to the root folder for the browser downloads and installation. The installation folder structure is compatible with the cache structure used by Puppeteer.',
+ defaultDescription: 'Current working directory',
+ ...(required ? {} : { default: process.cwd() }),
+ });
+ if (required) {
+ yargs.demandOption('path');
+ }
+ }
+ async run(argv) {
+ const yargsInstance = (0, yargs_1.default)((0, helpers_1.hideBin)(argv));
+ await yargsInstance
+ .scriptName('@puppeteer/browsers')
+ .command('install ', '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: @).', yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('base-url', {
+ type: 'string',
+ desc: 'Base URL to download from',
+ });
+ yargs.example('$0 install chrome', 'Install the latest 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@canary', 'Install the latest available build for the Chrome Canary browser.');
+ yargs.example('$0 install chrome@115', 'Install the latest available build for Chrome 115.');
+ yargs.example('$0 install chromedriver@canary', 'Install the latest available build for ChromeDriver Canary.');
+ yargs.example('$0 install chromedriver@115', 'Install the latest available build for ChromeDriver 115.');
+ yargs.example('$0 install chromedriver@115.0.5790', 'Install the latest available patch (115.0.5790.X) build for ChromeDriver.');
+ yargs.example('$0 install chrome-headless-shell', 'Install the latest available chrome-headless-shell build.');
+ yargs.example('$0 install chrome-headless-shell@beta', 'Install the latest available chrome-headless-shell build corresponding to the Beta channel.');
+ yargs.example('$0 install chrome-headless-shell@118', 'Install the latest available chrome-headless-shell 118 build.');
+ yargs.example('$0 install chromium@1083080', 'Install the revision 1083080 of the Chromium browser.');
+ yargs.example('$0 install firefox', 'Install the latest available build of the Firefox browser.');
+ yargs.example('$0 install firefox --platform mac', 'Install the latest Mac (Intel) build of the Firefox browser.');
+ yargs.example('$0 install firefox --path /tmp/my-browser-cache', 'Install to the specified cache directory.');
+ }, async (argv) => {
+ const args = argv;
+ args.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ if (!args.platform) {
+ throw new Error(`Could not resolve the current platform`);
+ }
+ 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,
+ });
+ 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 ', 'Launch the specified browser', yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('detached', {
+ type: 'boolean',
+ desc: 'Detach the child process.',
+ default: false,
+ });
+ yargs.option('system', {
+ type: 'boolean',
+ desc: 'Search for a browser installed on the system instead of the cache folder.',
+ default: false,
+ });
+ yargs.example('$0 launch chrome@115.0.5790.170', 'Launch Chrome 115.0.5790.170');
+ yargs.example('$0 launch firefox@112.0a1', 'Launch the Firefox browser identified by the milestone 112.0a1.');
+ yargs.example('$0 launch chrome@115.0.5790.170 --detached', 'Launch the browser but detach the sub-processes.');
+ yargs.example('$0 launch chrome@canary --system', 'Try to locate the Canary build of Chrome installed on the system and launch it.');
+ }, async (argv) => {
+ const args = argv;
+ const executablePath = args.system
+ ? (0, launch_js_1.computeSystemExecutablePath)({
+ browser: args.browser.name,
+ // TODO: throw an error if not a ChromeReleaseChannel is provided.
+ channel: args.browser.buildId,
+ platform: args.platform,
+ })
+ : (0, launch_js_1.computeExecutablePath)({
+ browser: args.browser.name,
+ buildId: args.browser.buildId,
+ cacheDir: args.path ?? this.#cachePath,
+ platform: args.platform,
+ });
+ (0, launch_js_1.launch)({
+ executablePath,
+ detached: args.detached,
+ });
+ })
+ .command('clear', 'Removes all installed browsers from the specified cache directory', yargs => {
+ this.#definePathParameter(yargs, true);
+ }, async (argv) => {
+ const args = argv;
+ const cacheDir = args.path ?? this.#cachePath;
+ const rl = this.#rl ?? readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
+ rl.question(`Do you want to permanently and recursively delete the content of ${cacheDir} (yes/No)? `, answer => {
+ rl.close();
+ if (!['y', 'yes'].includes(answer.toLowerCase().trim())) {
+ console.log('Cancelled.');
+ return;
+ }
+ const cache = new Cache_js_1.Cache(cacheDir);
+ cache.clear();
+ console.log(`${cacheDir} cleared.`);
+ });
+ })
+ .demandCommand(1)
+ .help()
+ .wrap(Math.min(120, yargsInstance.terminalWidth()))
+ .parse();
+ }
+ #parseBrowser(version) {
+ return version.split('@').shift();
+ }
+ #parseBuildId(version) {
+ const parts = version.split('@');
+ return parts.length === 2 ? parts[1] : 'latest';
+ }
+}
+exports.CLI = CLI;
+/**
+ * @public
+ */
+function makeProgressCallback(browser, buildId) {
+ let progressBar;
+ let lastDownloadedBytes = 0;
+ return (downloadedBytes, totalBytes) => {
+ if (!progressBar) {
+ progressBar = new progress_1.default(`Downloading ${browser} r${buildId} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, {
+ complete: '=',
+ incomplete: ' ',
+ width: 20,
+ total: totalBytes,
+ });
+ }
+ const delta = downloadedBytes - lastDownloadedBytes;
+ lastDownloadedBytes = downloadedBytes;
+ progressBar.tick(delta);
+ };
+}
+exports.makeProgressCallback = makeProgressCallback;
+function toMegabytes(bytes) {
+ const mb = bytes / 1000 / 1000;
+ return `${Math.round(mb * 10) / 10} MB`;
+}
+//# sourceMappingURL=CLI.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js.map
new file mode 100644
index 0000000..aec38d7
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/CLI.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CLI.js","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts
new file mode 100644
index 0000000..4c72bb4
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts
@@ -0,0 +1,63 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Browser, BrowserPlatform } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare class InstalledBrowser {
+ #private;
+ browser: Browser;
+ buildId: string;
+ platform: BrowserPlatform;
+ /**
+ * @internal
+ */
+ constructor(cache: Cache, browser: Browser, buildId: string, platform: BrowserPlatform);
+ /**
+ * Path to the root of the installation folder. Use
+ * {@link computeExecutablePath} to get the path to the executable binary.
+ */
+ get path(): string;
+ get executablePath(): string;
+}
+/**
+ * The cache used by Puppeteer relies on the following structure:
+ *
+ * - rootDir
+ * -- | browserRoot(browser1)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * -- | browserRoot(browser2)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * @internal
+ */
+export declare class Cache {
+ #private;
+ constructor(rootDir: string);
+ /**
+ * @internal
+ */
+ get rootDir(): string;
+ browserRoot(browser: Browser): string;
+ installationDir(browser: Browser, platform: BrowserPlatform, buildId: string): string;
+ clear(): void;
+ uninstall(browser: Browser, platform: BrowserPlatform, buildId: string): void;
+ getInstalledBrowsers(): InstalledBrowser[];
+}
+//# sourceMappingURL=Cache.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts.map
new file mode 100644
index 0000000..d712d8a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAGxE;;GAEG;AACH,qBAAa,gBAAgB;;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAI1B;;OAEG;gBAED,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe;IAQ3B;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,cAAc,IAAI,MAAM,CAO3B;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,KAAK;;gBAGJ,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAIrC,eAAe,CACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM;IAIT,KAAK,IAAI,IAAI;IASb,SAAS,CACP,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,IAAI;IASP,oBAAoB,IAAI,gBAAgB,EAAE;CA8B3C"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js
new file mode 100644
index 0000000..fa0107d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js
@@ -0,0 +1,144 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Cache = exports.InstalledBrowser = void 0;
+const fs_1 = __importDefault(require("fs"));
+const path_1 = __importDefault(require("path"));
+const browser_data_js_1 = require("./browser-data/browser-data.js");
+const launch_js_1 = require("./launch.js");
+/**
+ * @public
+ */
+class InstalledBrowser {
+ browser;
+ buildId;
+ platform;
+ #cache;
+ /**
+ * @internal
+ */
+ constructor(cache, browser, buildId, platform) {
+ this.#cache = cache;
+ this.browser = browser;
+ this.buildId = buildId;
+ this.platform = platform;
+ }
+ /**
+ * Path to the root of the installation folder. Use
+ * {@link computeExecutablePath} to get the path to the executable binary.
+ */
+ get path() {
+ return this.#cache.installationDir(this.browser, this.platform, this.buildId);
+ }
+ get executablePath() {
+ return (0, launch_js_1.computeExecutablePath)({
+ cacheDir: this.#cache.rootDir,
+ platform: this.platform,
+ browser: this.browser,
+ buildId: this.buildId,
+ });
+ }
+}
+exports.InstalledBrowser = InstalledBrowser;
+/**
+ * The cache used by Puppeteer relies on the following structure:
+ *
+ * - rootDir
+ * -- | browserRoot(browser1)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * -- | browserRoot(browser2)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * @internal
+ */
+class Cache {
+ #rootDir;
+ constructor(rootDir) {
+ this.#rootDir = rootDir;
+ }
+ /**
+ * @internal
+ */
+ get rootDir() {
+ return this.#rootDir;
+ }
+ browserRoot(browser) {
+ return path_1.default.join(this.#rootDir, browser);
+ }
+ installationDir(browser, platform, buildId) {
+ return path_1.default.join(this.browserRoot(browser), `${platform}-${buildId}`);
+ }
+ clear() {
+ fs_1.default.rmSync(this.#rootDir, {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+ uninstall(browser, platform, buildId) {
+ fs_1.default.rmSync(this.installationDir(browser, platform, buildId), {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+ getInstalledBrowsers() {
+ if (!fs_1.default.existsSync(this.#rootDir)) {
+ return [];
+ }
+ const types = fs_1.default.readdirSync(this.#rootDir);
+ const browsers = types.filter((t) => {
+ return Object.values(browser_data_js_1.Browser).includes(t);
+ });
+ return browsers.flatMap(browser => {
+ const files = fs_1.default.readdirSync(this.browserRoot(browser));
+ return files
+ .map(file => {
+ const result = parseFolderPath(path_1.default.join(this.browserRoot(browser), file));
+ if (!result) {
+ return null;
+ }
+ return new InstalledBrowser(this, browser, result.buildId, result.platform);
+ })
+ .filter((item) => {
+ return item !== null;
+ });
+ });
+ }
+}
+exports.Cache = Cache;
+function parseFolderPath(folderPath) {
+ const name = path_1.default.basename(folderPath);
+ const splits = name.split('-');
+ if (splits.length !== 2) {
+ return;
+ }
+ const [platform, buildId] = splits;
+ if (!buildId || !platform) {
+ return;
+ }
+ return { platform, buildId };
+}
+//# sourceMappingURL=Cache.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js.map
new file mode 100644
index 0000000..37d3682
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts
new file mode 100644
index 0000000..d39e861
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chromeHeadlessShell from './chrome-headless-shell.js';
+import * as chrome from './chrome.js';
+import * as chromedriver from './chromedriver.js';
+import * as chromium from './chromium.js';
+import * as firefox from './firefox.js';
+import { Browser, BrowserPlatform, ChromeReleaseChannel, ProfileOptions } from './types.js';
+export { ProfileOptions };
+export declare const downloadUrls: {
+ chromedriver: typeof chromedriver.resolveDownloadUrl;
+ "chrome-headless-shell": typeof chromeHeadlessShell.resolveDownloadUrl;
+ chrome: typeof chrome.resolveDownloadUrl;
+ chromium: typeof chromium.resolveDownloadUrl;
+ firefox: typeof firefox.resolveDownloadUrl;
+};
+export declare const downloadPaths: {
+ chromedriver: typeof chromedriver.resolveDownloadPath;
+ "chrome-headless-shell": typeof chromeHeadlessShell.resolveDownloadPath;
+ chrome: typeof chrome.resolveDownloadPath;
+ chromium: typeof chromium.resolveDownloadPath;
+ firefox: typeof firefox.resolveDownloadPath;
+};
+export declare const executablePathByBrowser: {
+ chromedriver: typeof chromedriver.relativeExecutablePath;
+ "chrome-headless-shell": typeof chromeHeadlessShell.relativeExecutablePath;
+ chrome: typeof chrome.relativeExecutablePath;
+ chromium: typeof chromium.relativeExecutablePath;
+ firefox: typeof firefox.relativeExecutablePath;
+};
+export { Browser, BrowserPlatform, ChromeReleaseChannel };
+/**
+ * @public
+ */
+export declare function resolveBuildId(browser: Browser, platform: BrowserPlatform, tag: string): Promise;
+/**
+ * @public
+ */
+export declare function createProfile(browser: Browser, opts: ProfileOptions): Promise;
+/**
+ * @public
+ */
+export declare function resolveSystemExecutablePath(browser: Browser, platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
+//# sourceMappingURL=browser-data.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts.map
new file mode 100644
index 0000000..adf12c2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"browser-data.d.ts","sourceRoot":"","sources":["../../../src/browser-data/browser-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,mBAAmB,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,OAAO,EACP,eAAe,EAEf,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAC,cAAc,EAAC,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;CAMnC,CAAC;AAEF,OAAO,EAAC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAC,CAAC;AAExD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA+FjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAYR"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js
new file mode 100644
index 0000000..9e648fb
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js
@@ -0,0 +1,188 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveSystemExecutablePath = exports.createProfile = exports.resolveBuildId = exports.ChromeReleaseChannel = exports.BrowserPlatform = exports.Browser = exports.executablePathByBrowser = exports.downloadPaths = exports.downloadUrls = void 0;
+const chromeHeadlessShell = __importStar(require("./chrome-headless-shell.js"));
+const chrome = __importStar(require("./chrome.js"));
+const chromedriver = __importStar(require("./chromedriver.js"));
+const chromium = __importStar(require("./chromium.js"));
+const firefox = __importStar(require("./firefox.js"));
+const types_js_1 = require("./types.js");
+Object.defineProperty(exports, "Browser", { enumerable: true, get: function () { return types_js_1.Browser; } });
+Object.defineProperty(exports, "BrowserPlatform", { enumerable: true, get: function () { return types_js_1.BrowserPlatform; } });
+Object.defineProperty(exports, "ChromeReleaseChannel", { enumerable: true, get: function () { return types_js_1.ChromeReleaseChannel; } });
+exports.downloadUrls = {
+ [types_js_1.Browser.CHROMEDRIVER]: chromedriver.resolveDownloadUrl,
+ [types_js_1.Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadUrl,
+ [types_js_1.Browser.CHROME]: chrome.resolveDownloadUrl,
+ [types_js_1.Browser.CHROMIUM]: chromium.resolveDownloadUrl,
+ [types_js_1.Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+exports.downloadPaths = {
+ [types_js_1.Browser.CHROMEDRIVER]: chromedriver.resolveDownloadPath,
+ [types_js_1.Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadPath,
+ [types_js_1.Browser.CHROME]: chrome.resolveDownloadPath,
+ [types_js_1.Browser.CHROMIUM]: chromium.resolveDownloadPath,
+ [types_js_1.Browser.FIREFOX]: firefox.resolveDownloadPath,
+};
+exports.executablePathByBrowser = {
+ [types_js_1.Browser.CHROMEDRIVER]: chromedriver.relativeExecutablePath,
+ [types_js_1.Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.relativeExecutablePath,
+ [types_js_1.Browser.CHROME]: chrome.relativeExecutablePath,
+ [types_js_1.Browser.CHROMIUM]: chromium.relativeExecutablePath,
+ [types_js_1.Browser.FIREFOX]: firefox.relativeExecutablePath,
+};
+/**
+ * @public
+ */
+async function resolveBuildId(browser, platform, tag) {
+ switch (browser) {
+ case types_js_1.Browser.FIREFOX:
+ switch (tag) {
+ case types_js_1.BrowserTag.LATEST:
+ return await firefox.resolveBuildId('FIREFOX_NIGHTLY');
+ case types_js_1.BrowserTag.BETA:
+ case types_js_1.BrowserTag.CANARY:
+ case types_js_1.BrowserTag.DEV:
+ case types_js_1.BrowserTag.STABLE:
+ throw new Error(`${tag} is not supported for ${browser}. Use 'latest' instead.`);
+ }
+ case types_js_1.Browser.CHROME: {
+ switch (tag) {
+ case types_js_1.BrowserTag.LATEST:
+ return await chrome.resolveBuildId(types_js_1.ChromeReleaseChannel.CANARY);
+ case types_js_1.BrowserTag.BETA:
+ return await chrome.resolveBuildId(types_js_1.ChromeReleaseChannel.BETA);
+ case types_js_1.BrowserTag.CANARY:
+ return await chrome.resolveBuildId(types_js_1.ChromeReleaseChannel.CANARY);
+ case types_js_1.BrowserTag.DEV:
+ return await chrome.resolveBuildId(types_js_1.ChromeReleaseChannel.DEV);
+ case types_js_1.BrowserTag.STABLE:
+ return await chrome.resolveBuildId(types_js_1.ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chrome.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case types_js_1.Browser.CHROMEDRIVER: {
+ switch (tag) {
+ case types_js_1.BrowserTag.LATEST:
+ case types_js_1.BrowserTag.CANARY:
+ return await chromedriver.resolveBuildId(types_js_1.ChromeReleaseChannel.CANARY);
+ case types_js_1.BrowserTag.BETA:
+ return await chromedriver.resolveBuildId(types_js_1.ChromeReleaseChannel.BETA);
+ case types_js_1.BrowserTag.DEV:
+ return await chromedriver.resolveBuildId(types_js_1.ChromeReleaseChannel.DEV);
+ case types_js_1.BrowserTag.STABLE:
+ return await chromedriver.resolveBuildId(types_js_1.ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chromedriver.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case types_js_1.Browser.CHROMEHEADLESSSHELL: {
+ switch (tag) {
+ case types_js_1.BrowserTag.LATEST:
+ case types_js_1.BrowserTag.CANARY:
+ return await chromeHeadlessShell.resolveBuildId(types_js_1.ChromeReleaseChannel.CANARY);
+ case types_js_1.BrowserTag.BETA:
+ return await chromeHeadlessShell.resolveBuildId(types_js_1.ChromeReleaseChannel.BETA);
+ case types_js_1.BrowserTag.DEV:
+ return await chromeHeadlessShell.resolveBuildId(types_js_1.ChromeReleaseChannel.DEV);
+ case types_js_1.BrowserTag.STABLE:
+ return await chromeHeadlessShell.resolveBuildId(types_js_1.ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chromeHeadlessShell.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case types_js_1.Browser.CHROMIUM:
+ switch (tag) {
+ case types_js_1.BrowserTag.LATEST:
+ return await chromium.resolveBuildId(platform);
+ case types_js_1.BrowserTag.BETA:
+ case types_js_1.BrowserTag.CANARY:
+ case types_js_1.BrowserTag.DEV:
+ case types_js_1.BrowserTag.STABLE:
+ throw new Error(`${tag} is not supported for ${browser}. Use 'latest' instead.`);
+ }
+ }
+ // We assume the tag is the buildId if it didn't match any keywords.
+ return tag;
+}
+exports.resolveBuildId = resolveBuildId;
+/**
+ * @public
+ */
+async function createProfile(browser, opts) {
+ switch (browser) {
+ case types_js_1.Browser.FIREFOX:
+ return await firefox.createProfile(opts);
+ case types_js_1.Browser.CHROME:
+ case types_js_1.Browser.CHROMIUM:
+ throw new Error(`Profile creation is not support for ${browser} yet`);
+ }
+}
+exports.createProfile = createProfile;
+/**
+ * @public
+ */
+function resolveSystemExecutablePath(browser, platform, channel) {
+ switch (browser) {
+ case types_js_1.Browser.CHROMEDRIVER:
+ case types_js_1.Browser.CHROMEHEADLESSSHELL:
+ case types_js_1.Browser.FIREFOX:
+ case types_js_1.Browser.CHROMIUM:
+ throw new Error(`System browser detection is not supported for ${browser} yet.`);
+ case types_js_1.Browser.CHROME:
+ return chrome.resolveSystemExecutablePath(platform, channel);
+ }
+}
+exports.resolveSystemExecutablePath = resolveSystemExecutablePath;
+//# sourceMappingURL=browser-data.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js.map
new file mode 100644
index 0000000..b6ae1d5
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/browser-data.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"browser-data.js","sourceRoot":"","sources":["../../../src/browser-data/browser-data.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts
new file mode 100644
index 0000000..cbd385c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts
@@ -0,0 +1,6 @@
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chrome-headless-shell.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts.map
new file mode 100644
index 0000000..aafc060
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome-headless-shell.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chrome-headless-shell.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAMV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAoBR;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js
new file mode 100644
index 0000000..af555e4
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js
@@ -0,0 +1,65 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveBuildId = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+const path_1 = __importDefault(require("path"));
+const types_js_1 = require("./types.js");
+function folder(platform) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return 'linux64';
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case types_js_1.BrowserPlatform.MAC:
+ return 'mac-x64';
+ case types_js_1.BrowserPlatform.WIN32:
+ return 'win32';
+ case types_js_1.BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+exports.resolveDownloadUrl = resolveDownloadUrl;
+function resolveDownloadPath(platform, buildId) {
+ return [
+ buildId,
+ folder(platform),
+ `chrome-headless-shell-${folder(platform)}.zip`,
+ ];
+}
+exports.resolveDownloadPath = resolveDownloadPath;
+function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.MAC:
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return path_1.default.join('chrome-headless-shell-' + folder(platform), 'chrome-headless-shell');
+ case types_js_1.BrowserPlatform.LINUX:
+ return path_1.default.join('chrome-headless-shell-linux64', 'chrome-headless-shell');
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return path_1.default.join('chrome-headless-shell-' + folder(platform), 'chrome-headless-shell.exe');
+ }
+}
+exports.relativeExecutablePath = relativeExecutablePath;
+var chrome_js_1 = require("./chrome.js");
+Object.defineProperty(exports, "resolveBuildId", { enumerable: true, get: function () { return chrome_js_1.resolveBuildId; } });
+//# sourceMappingURL=chrome-headless-shell.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js.map
new file mode 100644
index 0000000..1662e49
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome-headless-shell.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome-headless-shell.js","sourceRoot":"","sources":["../../../src/browser-data/chrome-headless-shell.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,gDAAwB;AAExB,yCAA2C;AAE3C,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,0BAAe,CAAC,GAAG;YACtB,OAAO,SAAS,CAAC;QACnB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;KAClB;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,6DAA6D;IAEvE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAND,gDAMC;AAED,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO;QACL,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC;QAChB,yBAAyB,MAAM,CAAC,QAAQ,CAAC,MAAM;KAChD,CAAC;AACJ,CAAC;AATD,kDASC;AAED,SAAgB,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,GAAG,CAAC;QACzB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,cAAI,CAAC,IAAI,CACd,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAC3C,uBAAuB,CACxB,CAAC;QACJ,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CACd,+BAA+B,EAC/B,uBAAuB,CACxB,CAAC;QACJ,KAAK,0BAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CACd,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAC3C,2BAA2B,CAC5B,CAAC;KACL;AACH,CAAC;AAvBD,wDAuBC;AAED,yCAA2C;AAAnC,2GAAA,cAAc,OAAA"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts
new file mode 100644
index 0000000..0a84d67
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform, ChromeReleaseChannel } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function getLastKnownGoodReleaseForChannel(channel: ChromeReleaseChannel): Promise<{
+ version: string;
+ revision: string;
+}>;
+export declare function getLastKnownGoodReleaseForMilestone(milestone: string): Promise<{
+ version: string;
+ revision: string;
+} | undefined>;
+export declare function getLastKnownGoodReleaseForBuild(
+/**
+ * @example `112.0.23`,
+ */
+buildPrefix: string): Promise<{
+ version: string;
+ revision: string;
+} | undefined>;
+export declare function resolveBuildId(channel: ChromeReleaseChannel): Promise;
+export declare function resolveBuildId(channel: string): Promise;
+export declare function resolveSystemExecutablePath(platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
+//# sourceMappingURL=chrome.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts.map
new file mode 100644
index 0000000..e48cbe5
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAiBjE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC,CAqB9C;AAED,wBAAsB,mCAAmC,CACvD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAW1D;AAED,wBAAsB,+BAA+B;AACnD;;GAEG;AACH,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAW1D;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAwB/B,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAwCR"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js
new file mode 100644
index 0000000..6af4e6f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js
@@ -0,0 +1,137 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveSystemExecutablePath = exports.resolveBuildId = exports.getLastKnownGoodReleaseForBuild = exports.getLastKnownGoodReleaseForMilestone = exports.getLastKnownGoodReleaseForChannel = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
+const path_1 = __importDefault(require("path"));
+const httpUtil_js_1 = require("../httpUtil.js");
+const types_js_1 = require("./types.js");
+function folder(platform) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return 'linux64';
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case types_js_1.BrowserPlatform.MAC:
+ return 'mac-x64';
+ case types_js_1.BrowserPlatform.WIN32:
+ return 'win32';
+ case types_js_1.BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+exports.resolveDownloadUrl = resolveDownloadUrl;
+function resolveDownloadPath(platform, buildId) {
+ return [buildId, folder(platform), `chrome-${folder(platform)}.zip`];
+}
+exports.resolveDownloadPath = resolveDownloadPath;
+function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.MAC:
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return path_1.default.join('chrome-' + folder(platform), 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing');
+ case types_js_1.BrowserPlatform.LINUX:
+ return path_1.default.join('chrome-linux64', 'chrome');
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return path_1.default.join('chrome-' + folder(platform), 'chrome.exe');
+ }
+}
+exports.relativeExecutablePath = relativeExecutablePath;
+async function getLastKnownGoodReleaseForChannel(channel) {
+ const data = (await (0, httpUtil_js_1.getJSON)(new URL('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json')));
+ for (const channel of Object.keys(data.channels)) {
+ data.channels[channel.toLowerCase()] = data.channels[channel];
+ delete data.channels[channel];
+ }
+ return data.channels[channel];
+}
+exports.getLastKnownGoodReleaseForChannel = getLastKnownGoodReleaseForChannel;
+async function getLastKnownGoodReleaseForMilestone(milestone) {
+ const data = (await (0, httpUtil_js_1.getJSON)(new URL('https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone.json')));
+ return data.milestones[milestone];
+}
+exports.getLastKnownGoodReleaseForMilestone = getLastKnownGoodReleaseForMilestone;
+async function getLastKnownGoodReleaseForBuild(
+/**
+ * @example `112.0.23`,
+ */
+buildPrefix) {
+ const data = (await (0, httpUtil_js_1.getJSON)(new URL('https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build.json')));
+ return data.builds[buildPrefix];
+}
+exports.getLastKnownGoodReleaseForBuild = getLastKnownGoodReleaseForBuild;
+async function resolveBuildId(channel) {
+ if (Object.values(types_js_1.ChromeReleaseChannel).includes(channel)) {
+ return (await getLastKnownGoodReleaseForChannel(channel)).version;
+ }
+ if (channel.match(/^\d+$/)) {
+ // Potentially a milestone.
+ return (await getLastKnownGoodReleaseForMilestone(channel))?.version;
+ }
+ if (channel.match(/^\d+\.\d+\.\d+$/)) {
+ // Potentially a build prefix without the patch version.
+ return (await getLastKnownGoodReleaseForBuild(channel))?.version;
+ }
+ return;
+}
+exports.resolveBuildId = resolveBuildId;
+function resolveSystemExecutablePath(platform, channel) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.WIN64:
+ case types_js_1.BrowserPlatform.WIN32:
+ switch (channel) {
+ case types_js_1.ChromeReleaseChannel.STABLE:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome\\Application\\chrome.exe`;
+ case types_js_1.ChromeReleaseChannel.BETA:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Beta\\Application\\chrome.exe`;
+ case types_js_1.ChromeReleaseChannel.CANARY:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome SxS\\Application\\chrome.exe`;
+ case types_js_1.ChromeReleaseChannel.DEV:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Dev\\Application\\chrome.exe`;
+ }
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ case types_js_1.BrowserPlatform.MAC:
+ switch (channel) {
+ case types_js_1.ChromeReleaseChannel.STABLE:
+ return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
+ case types_js_1.ChromeReleaseChannel.BETA:
+ return '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta';
+ case types_js_1.ChromeReleaseChannel.CANARY:
+ return '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary';
+ case types_js_1.ChromeReleaseChannel.DEV:
+ return '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev';
+ }
+ case types_js_1.BrowserPlatform.LINUX:
+ switch (channel) {
+ case types_js_1.ChromeReleaseChannel.STABLE:
+ return '/opt/google/chrome/chrome';
+ case types_js_1.ChromeReleaseChannel.BETA:
+ return '/opt/google/chrome-beta/chrome';
+ case types_js_1.ChromeReleaseChannel.DEV:
+ return '/opt/google/chrome-unstable/chrome';
+ }
+ }
+ throw new Error(`Unable to detect browser executable path for '${channel}' on ${platform}.`);
+}
+exports.resolveSystemExecutablePath = resolveSystemExecutablePath;
+//# sourceMappingURL=chrome.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js.map
new file mode 100644
index 0000000..ec57904
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chrome.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/browser-data/chrome.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts
new file mode 100644
index 0000000..32a0ed1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts
@@ -0,0 +1,6 @@
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chromedriver.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts.map
new file mode 100644
index 0000000..1683a3f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromedriver.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chromedriver.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js
new file mode 100644
index 0000000..f9ced6c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js
@@ -0,0 +1,61 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveBuildId = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+const path_1 = __importDefault(require("path"));
+const types_js_1 = require("./types.js");
+function folder(platform) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return 'linux64';
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case types_js_1.BrowserPlatform.MAC:
+ return 'mac-x64';
+ case types_js_1.BrowserPlatform.WIN32:
+ return 'win32';
+ case types_js_1.BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+exports.resolveDownloadUrl = resolveDownloadUrl;
+function resolveDownloadPath(platform, buildId) {
+ return [buildId, folder(platform), `chromedriver-${folder(platform)}.zip`];
+}
+exports.resolveDownloadPath = resolveDownloadPath;
+function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.MAC:
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return path_1.default.join('chromedriver-' + folder(platform), 'chromedriver');
+ case types_js_1.BrowserPlatform.LINUX:
+ return path_1.default.join('chromedriver-linux64', 'chromedriver');
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return path_1.default.join('chromedriver-' + folder(platform), 'chromedriver.exe');
+ }
+}
+exports.relativeExecutablePath = relativeExecutablePath;
+var chrome_js_1 = require("./chrome.js");
+Object.defineProperty(exports, "resolveBuildId", { enumerable: true, get: function () { return chrome_js_1.resolveBuildId; } });
+//# sourceMappingURL=chromedriver.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js.map
new file mode 100644
index 0000000..5716550
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromedriver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromedriver.js","sourceRoot":"","sources":["../../../src/browser-data/chromedriver.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,gDAAwB;AAExB,yCAA2C;AAE3C,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,0BAAe,CAAC,GAAG;YACtB,OAAO,SAAS,CAAC;QACnB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;KAClB;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,6DAA6D;IAEvE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAND,gDAMC;AAED,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AALD,kDAKC;AAED,SAAgB,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,GAAG,CAAC;QACzB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,cAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAC;QACvE,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;QAC3D,KAAK,0BAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC;KAC5E;AACH,CAAC;AAdD,wDAcC;AAED,yCAA2C;AAAnC,2GAAA,cAAc,OAAA"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts
new file mode 100644
index 0000000..ca88107
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function resolveBuildId(platform: BrowserPlatform): Promise;
+//# sourceMappingURL=chromium.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts.map
new file mode 100644
index 0000000..30e3552
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromium.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chromium.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AA+B3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAA8D,GACpE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AACD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CAQjB"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js
new file mode 100644
index 0000000..068ca51
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js
@@ -0,0 +1,77 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveBuildId = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
+const path_1 = __importDefault(require("path"));
+const httpUtil_js_1 = require("../httpUtil.js");
+const types_js_1 = require("./types.js");
+function archive(platform, buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return 'chrome-linux';
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ case types_js_1.BrowserPlatform.MAC:
+ return 'chrome-mac';
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ // Windows archive name changed at r591479.
+ return parseInt(buildId, 10) > 591479 ? 'chrome-win' : 'chrome-win32';
+ }
+}
+function folder(platform) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return 'Linux_x64';
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return 'Mac_Arm';
+ case types_js_1.BrowserPlatform.MAC:
+ return 'Mac';
+ case types_js_1.BrowserPlatform.WIN32:
+ return 'Win';
+ case types_js_1.BrowserPlatform.WIN64:
+ return 'Win_x64';
+ }
+}
+function resolveDownloadUrl(platform, buildId, baseUrl = 'https://storage.googleapis.com/chromium-browser-snapshots') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+exports.resolveDownloadUrl = resolveDownloadUrl;
+function resolveDownloadPath(platform, buildId) {
+ return [folder(platform), buildId, `${archive(platform, buildId)}.zip`];
+}
+exports.resolveDownloadPath = resolveDownloadPath;
+function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.MAC:
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ return path_1.default.join('chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium');
+ case types_js_1.BrowserPlatform.LINUX:
+ return path_1.default.join('chrome-linux', 'chrome');
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return path_1.default.join('chrome-win', 'chrome.exe');
+ }
+}
+exports.relativeExecutablePath = relativeExecutablePath;
+async function resolveBuildId(platform) {
+ return await (0, httpUtil_js_1.getText)(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`));
+}
+exports.resolveBuildId = resolveBuildId;
+//# sourceMappingURL=chromium.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js.map
new file mode 100644
index 0000000..d36ace8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/chromium.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromium.js","sourceRoot":"","sources":["../../../src/browser-data/chromium.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,gDAAwB;AAExB,gDAAuC;AAEvC,yCAA2C;AAE3C,SAAS,OAAO,CAAC,QAAyB,EAAE,OAAe;IACzD,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAc,CAAC;QACxB,KAAK,0BAAe,CAAC,OAAO,CAAC;QAC7B,KAAK,0BAAe,CAAC,GAAG;YACtB,OAAO,YAAY,CAAC;QACtB,KAAK,0BAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,0BAAe,CAAC,KAAK;YACxB,2CAA2C;YAC3C,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;KACzE;AACH,CAAC;AAED,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,WAAW,CAAC;QACrB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,SAAS,CAAC;QACnB,KAAK,0BAAe,CAAC,GAAG;YACtB,OAAO,KAAK,CAAC;QACf,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC;QACf,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,2DAA2D;IAErE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAND,gDAMC;AAED,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AALD,kDAKC;AAED,SAAgB,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAAe,CAAC,GAAG,CAAC;QACzB,KAAK,0BAAe,CAAC,OAAO;YAC1B,OAAO,cAAI,CAAC,IAAI,CACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,OAAO,EACP,UAAU,CACX,CAAC;QACJ,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC7C,KAAK,0BAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,0BAAe,CAAC,KAAK;YACxB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;KAChD;AACH,CAAC;AApBD,wDAoBC;AACM,KAAK,UAAU,cAAc,CAClC,QAAyB;IAEzB,OAAO,MAAM,IAAA,qBAAO,EAClB,IAAI,GAAG,CACL,6DAA6D,MAAM,CACjE,QAAQ,CACT,cAAc,CAChB,CACF,CAAC;AACJ,CAAC;AAVD,wCAUC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts
new file mode 100644
index 0000000..e1d2311
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform, ProfileOptions } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function resolveBuildId(channel?: 'FIREFOX_NIGHTLY'): Promise;
+export declare function createProfile(options: ProfileOptions): Promise;
+//# sourceMappingURL=firefox.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts.map
new file mode 100644
index 0000000..3dbfa8b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../../src/browser-data/firefox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAe3D,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAA2E,GACjF,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAED,wBAAsB,cAAc,CAClC,OAAO,GAAE,iBAAqC,GAC7C,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1E"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js
new file mode 100644
index 0000000..cd33f20
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js
@@ -0,0 +1,270 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createProfile = exports.resolveBuildId = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
+const fs_1 = __importDefault(require("fs"));
+const path_1 = __importDefault(require("path"));
+const httpUtil_js_1 = require("../httpUtil.js");
+const types_js_1 = require("./types.js");
+function archive(platform, buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.LINUX:
+ return `firefox-${buildId}.en-US.${platform}-x86_64.tar.bz2`;
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ case types_js_1.BrowserPlatform.MAC:
+ return `firefox-${buildId}.en-US.mac.dmg`;
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return `firefox-${buildId}.en-US.${platform}.zip`;
+ }
+}
+function resolveDownloadUrl(platform, buildId, baseUrl = 'https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+exports.resolveDownloadUrl = resolveDownloadUrl;
+function resolveDownloadPath(platform, buildId) {
+ return [archive(platform, buildId)];
+}
+exports.resolveDownloadPath = resolveDownloadPath;
+function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case types_js_1.BrowserPlatform.MAC_ARM:
+ case types_js_1.BrowserPlatform.MAC:
+ return path_1.default.join('Firefox Nightly.app', 'Contents', 'MacOS', 'firefox');
+ case types_js_1.BrowserPlatform.LINUX:
+ return path_1.default.join('firefox', 'firefox');
+ case types_js_1.BrowserPlatform.WIN32:
+ case types_js_1.BrowserPlatform.WIN64:
+ return path_1.default.join('firefox', 'firefox.exe');
+ }
+}
+exports.relativeExecutablePath = relativeExecutablePath;
+async function resolveBuildId(channel = 'FIREFOX_NIGHTLY') {
+ const versions = (await (0, httpUtil_js_1.getJSON)(new URL('https://product-details.mozilla.org/1.0/firefox_versions.json')));
+ const version = versions[channel];
+ if (!version) {
+ throw new Error(`Channel ${channel} is not found.`);
+ }
+ return version;
+}
+exports.resolveBuildId = resolveBuildId;
+async function createProfile(options) {
+ if (!fs_1.default.existsSync(options.path)) {
+ await fs_1.default.promises.mkdir(options.path, {
+ recursive: true,
+ });
+ }
+ await writePreferences({
+ preferences: {
+ ...defaultProfilePreferences(options.preferences),
+ ...options.preferences,
+ },
+ path: options.path,
+ });
+}
+exports.createProfile = createProfile;
+function defaultProfilePreferences(extraPrefs) {
+ const server = 'dummy.test';
+ const defaultPrefs = {
+ // Make sure Shield doesn't hit the network.
+ 'app.normandy.api_url': '',
+ // Disable Firefox old build background check
+ 'app.update.checkInstallTime': false,
+ // Disable automatically upgrading Firefox
+ 'app.update.disabledForTesting': true,
+ // Increase the APZ content response timeout to 1 minute
+ 'apz.content_response_timeout': 60000,
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'browser.contentblocking.features.standard': '-tp,tpPrivate,cookieBehavior0,-cm,-fp',
+ // Enable the dump function: which sends messages to the system
+ // console
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
+ 'browser.dom.window.dump.enabled': true,
+ // Disable topstories
+ 'browser.newtabpage.activity-stream.feeds.system.topstories': false,
+ // Always display a blank page
+ 'browser.newtabpage.enabled': false,
+ // Background thumbnails in particular cause grief: and disabling
+ // thumbnails in general cannot hurt
+ 'browser.pagethumbnails.capturing_disabled': true,
+ // Disable safebrowsing components.
+ 'browser.safebrowsing.blockedURIs.enabled': false,
+ 'browser.safebrowsing.downloads.enabled': false,
+ 'browser.safebrowsing.malware.enabled': false,
+ 'browser.safebrowsing.passwords.enabled': false,
+ 'browser.safebrowsing.phishing.enabled': false,
+ // Disable updates to search engines.
+ 'browser.search.update': false,
+ // Do not restore the last open set of tabs if the browser has crashed
+ 'browser.sessionstore.resume_from_crash': false,
+ // Skip check for default browser on startup
+ 'browser.shell.checkDefaultBrowser': false,
+ // Disable newtabpage
+ 'browser.startup.homepage': 'about:blank',
+ // Do not redirect user when a milstone upgrade of Firefox is detected
+ 'browser.startup.homepage_override.mstone': 'ignore',
+ // Start with a blank page about:blank
+ 'browser.startup.page': 0,
+ // Do not allow background tabs to be zombified on Android: otherwise for
+ // tests that open additional tabs: the test harness tab itself might get
+ // unloaded
+ 'browser.tabs.disableBackgroundZombification': false,
+ // Do not warn when closing all other open tabs
+ 'browser.tabs.warnOnCloseOtherTabs': false,
+ // Do not warn when multiple tabs will be opened
+ 'browser.tabs.warnOnOpen': false,
+ // Do not automatically offer translations, as tests do not expect this.
+ 'browser.translations.automaticallyPopup': false,
+ // Disable the UI tour.
+ 'browser.uitour.enabled': false,
+ // Turn off search suggestions in the location bar so as not to trigger
+ // network connections.
+ 'browser.urlbar.suggest.searches': false,
+ // Disable first run splash page on Windows 10
+ 'browser.usedOnWindows10.introURL': '',
+ // Do not warn on quitting Firefox
+ 'browser.warnOnQuit': false,
+ // Defensively disable data reporting systems
+ 'datareporting.healthreport.documentServerURI': `http://${server}/dummy/healthreport/`,
+ 'datareporting.healthreport.logging.consoleEnabled': false,
+ 'datareporting.healthreport.service.enabled': false,
+ 'datareporting.healthreport.service.firstRun': false,
+ 'datareporting.healthreport.uploadEnabled': false,
+ // Do not show datareporting policy notifications which can interfere with tests
+ 'datareporting.policy.dataSubmissionEnabled': false,
+ 'datareporting.policy.dataSubmissionPolicyBypassNotification': true,
+ // DevTools JSONViewer sometimes fails to load dependencies with its require.js.
+ // This doesn't affect Puppeteer but spams console (Bug 1424372)
+ 'devtools.jsonview.enabled': false,
+ // Disable popup-blocker
+ 'dom.disable_open_during_load': false,
+ // Enable the support for File object creation in the content process
+ // Required for |Page.setFileInputFiles| protocol method.
+ 'dom.file.createInChild': true,
+ // Disable the ProcessHangMonitor
+ 'dom.ipc.reportProcessHangs': false,
+ // Disable slow script dialogues
+ 'dom.max_chrome_script_run_time': 0,
+ 'dom.max_script_run_time': 0,
+ // Only load extensions from the application and user profile
+ // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
+ 'extensions.autoDisableScopes': 0,
+ 'extensions.enabledScopes': 5,
+ // Disable metadata caching for installed add-ons by default
+ 'extensions.getAddons.cache.enabled': false,
+ // Disable installing any distribution extensions or add-ons.
+ 'extensions.installDistroAddons': false,
+ // Disabled screenshots extension
+ 'extensions.screenshots.disabled': true,
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.enabled': false,
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.notifyUser': false,
+ // Make sure opening about:addons will not hit the network
+ 'extensions.webservice.discoverURL': `http://${server}/dummy/discoveryURL`,
+ // Temporarily force disable BFCache in parent (https://bit.ly/bug-1732263)
+ 'fission.bfcacheInParent': false,
+ // Force all web content to use a single content process
+ 'fission.webContentIsolationStrategy': 0,
+ // Allow the application to have focus even it runs in the background
+ 'focusmanager.testmode': true,
+ // Disable useragent updates
+ 'general.useragent.updates.enabled': false,
+ // Always use network provider for geolocation tests so we bypass the
+ // macOS dialog raised by the corelocation provider
+ 'geo.provider.testing': true,
+ // Do not scan Wifi
+ 'geo.wifi.scan': false,
+ // No hang monitor
+ 'hangmonitor.timeout': 0,
+ // Show chrome errors and warnings in the error console
+ 'javascript.options.showInConsole': true,
+ // Disable download and usage of OpenH264: and Widevine plugins
+ 'media.gmp-manager.updateEnabled': false,
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'network.cookie.cookieBehavior': 0,
+ // Disable experimental feature that is only available in Nightly
+ 'network.cookie.sameSite.laxByDefault': false,
+ // Do not prompt for temporary redirects
+ 'network.http.prompt-temp-redirect': false,
+ // Disable speculative connections so they are not reported as leaking
+ // when they are hanging around
+ 'network.http.speculative-parallel-limit': 0,
+ // Do not automatically switch between offline and online
+ 'network.manage-offline-status': false,
+ // Make sure SNTP requests do not hit the network
+ 'network.sntp.pools': server,
+ // Disable Flash.
+ 'plugin.state.flash': 0,
+ 'privacy.trackingprotection.enabled': false,
+ // Can be removed once Firefox 89 is no longer supported
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1710839
+ 'remote.enabled': true,
+ // Don't do network connections for mitm priming
+ 'security.certerrors.mitm.priming.enabled': false,
+ // Local documents have access to all other local documents,
+ // including directory listings
+ 'security.fileuri.strict_origin_policy': false,
+ // Do not wait for the notification button security delay
+ 'security.notification_enable_delay': 0,
+ // Ensure blocklist updates do not hit the network
+ 'services.settings.server': `http://${server}/dummy/blocklist/`,
+ // Do not automatically fill sign-in forms with known usernames and
+ // passwords
+ 'signon.autofillForms': false,
+ // Disable password capture, so that tests that include forms are not
+ // influenced by the presence of the persistent doorhanger notification
+ 'signon.rememberSignons': false,
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url': 'about:blank',
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url.additional': '',
+ // Disable browser animations (tabs, fullscreen, sliding alerts)
+ 'toolkit.cosmeticAnimations.enabled': false,
+ // Prevent starting into safe mode after application crashes
+ 'toolkit.startup.max_resumed_crashes': -1,
+ };
+ return Object.assign(defaultPrefs, extraPrefs);
+}
+/**
+ * Populates the user.js file with custom preferences as needed to allow
+ * Firefox's CDP support to properly function. These preferences will be
+ * automatically copied over to prefs.js during startup of Firefox. To be
+ * able to restore the original values of preferences a backup of prefs.js
+ * will be created.
+ *
+ * @param prefs - List of preferences to add.
+ * @param profilePath - Firefox profile to write the preferences to.
+ */
+async function writePreferences(options) {
+ const lines = Object.entries(options.preferences).map(([key, value]) => {
+ return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
+ });
+ await fs_1.default.promises.writeFile(path_1.default.join(options.path, 'user.js'), lines.join('\n'));
+ // Create a backup of the preferences file if it already exitsts.
+ const prefsPath = path_1.default.join(options.path, 'prefs.js');
+ if (fs_1.default.existsSync(prefsPath)) {
+ const prefsBackupPath = path_1.default.join(options.path, 'prefs.js.puppeteer');
+ await fs_1.default.promises.copyFile(prefsPath, prefsBackupPath);
+ }
+}
+//# sourceMappingURL=firefox.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js.map
new file mode 100644
index 0000000..aa2e4b3
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/firefox.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/browser-data/firefox.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts
new file mode 100644
index 0000000..8d8f96c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts
@@ -0,0 +1,74 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chrome from './chrome.js';
+import * as firefox from './firefox.js';
+/**
+ * Supported browsers.
+ *
+ * @public
+ */
+export declare enum Browser {
+ CHROME = "chrome",
+ CHROMEHEADLESSSHELL = "chrome-headless-shell",
+ CHROMIUM = "chromium",
+ FIREFOX = "firefox",
+ CHROMEDRIVER = "chromedriver"
+}
+/**
+ * Platform names used to identify a OS platfrom x architecture combination in the way
+ * that is relevant for the browser download.
+ *
+ * @public
+ */
+export declare enum BrowserPlatform {
+ LINUX = "linux",
+ MAC = "mac",
+ MAC_ARM = "mac_arm",
+ WIN32 = "win32",
+ WIN64 = "win64"
+}
+export declare const downloadUrls: {
+ chrome: typeof chrome.resolveDownloadUrl;
+ chromium: typeof chrome.resolveDownloadUrl;
+ firefox: typeof firefox.resolveDownloadUrl;
+};
+/**
+ * @public
+ */
+export declare enum BrowserTag {
+ CANARY = "canary",
+ BETA = "beta",
+ DEV = "dev",
+ STABLE = "stable",
+ LATEST = "latest"
+}
+/**
+ * @public
+ */
+export interface ProfileOptions {
+ preferences: Record;
+ path: string;
+}
+/**
+ * @public
+ */
+export declare enum ChromeReleaseChannel {
+ STABLE = "stable",
+ DEV = "dev",
+ CANARY = "canary",
+ BETA = "beta"
+}
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts.map
new file mode 100644
index 0000000..b91954b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser-data/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;;GAIG;AACH,oBAAY,OAAO;IACjB,MAAM,WAAW;IACjB,mBAAmB,0BAA0B;IAC7C,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,YAAY,iBAAiB;CAC9B;AAED;;;;;GAKG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,IAAI,SAAS;CACd"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js
new file mode 100644
index 0000000..0789760
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js
@@ -0,0 +1,97 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ChromeReleaseChannel = exports.BrowserTag = exports.downloadUrls = exports.BrowserPlatform = exports.Browser = void 0;
+const chrome = __importStar(require("./chrome.js"));
+const firefox = __importStar(require("./firefox.js"));
+/**
+ * Supported browsers.
+ *
+ * @public
+ */
+var Browser;
+(function (Browser) {
+ Browser["CHROME"] = "chrome";
+ Browser["CHROMEHEADLESSSHELL"] = "chrome-headless-shell";
+ Browser["CHROMIUM"] = "chromium";
+ Browser["FIREFOX"] = "firefox";
+ Browser["CHROMEDRIVER"] = "chromedriver";
+})(Browser || (exports.Browser = Browser = {}));
+/**
+ * Platform names used to identify a OS platfrom x architecture combination in the way
+ * that is relevant for the browser download.
+ *
+ * @public
+ */
+var BrowserPlatform;
+(function (BrowserPlatform) {
+ BrowserPlatform["LINUX"] = "linux";
+ BrowserPlatform["MAC"] = "mac";
+ BrowserPlatform["MAC_ARM"] = "mac_arm";
+ BrowserPlatform["WIN32"] = "win32";
+ BrowserPlatform["WIN64"] = "win64";
+})(BrowserPlatform || (exports.BrowserPlatform = BrowserPlatform = {}));
+exports.downloadUrls = {
+ [Browser.CHROME]: chrome.resolveDownloadUrl,
+ [Browser.CHROMIUM]: chrome.resolveDownloadUrl,
+ [Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+/**
+ * @public
+ */
+var BrowserTag;
+(function (BrowserTag) {
+ BrowserTag["CANARY"] = "canary";
+ BrowserTag["BETA"] = "beta";
+ BrowserTag["DEV"] = "dev";
+ BrowserTag["STABLE"] = "stable";
+ BrowserTag["LATEST"] = "latest";
+})(BrowserTag || (exports.BrowserTag = BrowserTag = {}));
+/**
+ * @public
+ */
+var ChromeReleaseChannel;
+(function (ChromeReleaseChannel) {
+ ChromeReleaseChannel["STABLE"] = "stable";
+ ChromeReleaseChannel["DEV"] = "dev";
+ ChromeReleaseChannel["CANARY"] = "canary";
+ ChromeReleaseChannel["BETA"] = "beta";
+})(ChromeReleaseChannel || (exports.ChromeReleaseChannel = ChromeReleaseChannel = {}));
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js.map
new file mode 100644
index 0000000..fe9536b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/browser-data/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/browser-data/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAsC;AACtC,sDAAwC;AAExC;;;;GAIG;AACH,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,4BAAiB,CAAA;IACjB,wDAA6C,CAAA;IAC7C,gCAAqB,CAAA;IACrB,8BAAmB,CAAA;IACnB,wCAA6B,CAAA;AAC/B,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB;AAED;;;;;GAKG;AACH,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,8BAAW,CAAA;IACX,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAEY,QAAA,YAAY,GAAG;IAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,kBAAkB;IAC3C,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,kBAAkB;IAC7C,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB;CAC9C,CAAC;AAEF;;GAEG;AACH,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAUD;;GAEG;AACH,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,mCAAW,CAAA;IACX,yCAAiB,CAAA;IACjB,qCAAa,CAAA;AACf,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts
new file mode 100644
index 0000000..b8b7fd2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts
@@ -0,0 +1,18 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import debug from 'debug';
+export { debug };
+//# sourceMappingURL=debug.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts.map
new file mode 100644
index 0000000..0e8f65d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAC,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js
new file mode 100644
index 0000000..4eed548
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js
@@ -0,0 +1,24 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.debug = void 0;
+const debug_1 = __importDefault(require("debug"));
+exports.debug = debug_1.default;
+//# sourceMappingURL=debug.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js.map
new file mode 100644
index 0000000..227b4eb
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/debug.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,kDAA0B;AAElB,gBAFD,eAAK,CAEC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts
new file mode 100644
index 0000000..706bdf0
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare function detectBrowserPlatform(): BrowserPlatform | undefined;
+//# sourceMappingURL=detectPlatform.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts.map
new file mode 100644
index 0000000..e1abc46
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"detectPlatform.d.ts","sourceRoot":"","sources":["../../src/detectPlatform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,GAAG,SAAS,CAkBnE"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js
new file mode 100644
index 0000000..a7fce5a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js
@@ -0,0 +1,63 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.detectBrowserPlatform = void 0;
+const os_1 = __importDefault(require("os"));
+const browser_data_js_1 = require("./browser-data/browser-data.js");
+/**
+ * @public
+ */
+function detectBrowserPlatform() {
+ const platform = os_1.default.platform();
+ switch (platform) {
+ case 'darwin':
+ return os_1.default.arch() === 'arm64'
+ ? browser_data_js_1.BrowserPlatform.MAC_ARM
+ : browser_data_js_1.BrowserPlatform.MAC;
+ case 'linux':
+ return browser_data_js_1.BrowserPlatform.LINUX;
+ case 'win32':
+ return os_1.default.arch() === 'x64' ||
+ // Windows 11 for ARM supports x64 emulation
+ (os_1.default.arch() === 'arm64' && isWindows11(os_1.default.release()))
+ ? browser_data_js_1.BrowserPlatform.WIN64
+ : browser_data_js_1.BrowserPlatform.WIN32;
+ default:
+ return undefined;
+ }
+}
+exports.detectBrowserPlatform = detectBrowserPlatform;
+/**
+ * Windows 11 is identified by the version 10.0.22000 or greater
+ * @internal
+ */
+function isWindows11(version) {
+ const parts = version.split('.');
+ if (parts.length > 2) {
+ const major = parseInt(parts[0], 10);
+ const minor = parseInt(parts[1], 10);
+ const patch = parseInt(parts[2], 10);
+ return (major > 10 ||
+ (major === 10 && minor > 0) ||
+ (major === 10 && minor === 0 && patch >= 22000));
+ }
+ return false;
+}
+//# sourceMappingURL=detectPlatform.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js.map
new file mode 100644
index 0000000..2325301
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/detectPlatform.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"detectPlatform.js","sourceRoot":"","sources":["../../src/detectPlatform.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,4CAAoB;AAEpB,oEAA+D;AAE/D;;GAEG;AACH,SAAgB,qBAAqB;IACnC,MAAM,QAAQ,GAAG,YAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ;YACX,OAAO,YAAE,CAAC,IAAI,EAAE,KAAK,OAAO;gBAC1B,CAAC,CAAC,iCAAe,CAAC,OAAO;gBACzB,CAAC,CAAC,iCAAe,CAAC,GAAG,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,iCAAe,CAAC,KAAK,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,YAAE,CAAC,IAAI,EAAE,KAAK,KAAK;gBACxB,4CAA4C;gBAC5C,CAAC,YAAE,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI,WAAW,CAAC,YAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,CAAC,CAAC,iCAAe,CAAC,KAAK;gBACvB,CAAC,CAAC,iCAAe,CAAC,KAAK,CAAC;QAC5B;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAlBD,sDAkBC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,CACL,KAAK,GAAG,EAAE;YACV,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;YAC3B,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAChD,CAAC;KACH;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts
new file mode 100644
index 0000000..e64923d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts
@@ -0,0 +1,20 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @internal
+ */
+export declare function unpackArchive(archivePath: string, folderPath: string): Promise;
+//# sourceMappingURL=fileUtil.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts.map
new file mode 100644
index 0000000..7f6acfa
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js
new file mode 100644
index 0000000..5ee69c3
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js
@@ -0,0 +1,110 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unpackArchive = void 0;
+const child_process_1 = require("child_process");
+const fs_1 = require("fs");
+const promises_1 = require("fs/promises");
+const path = __importStar(require("path"));
+const util_1 = require("util");
+const extract_zip_1 = __importDefault(require("extract-zip"));
+const tar_fs_1 = __importDefault(require("tar-fs"));
+const unbzip2_stream_1 = __importDefault(require("unbzip2-stream"));
+const exec = (0, util_1.promisify)(child_process_1.exec);
+/**
+ * @internal
+ */
+async function unpackArchive(archivePath, folderPath) {
+ if (archivePath.endsWith('.zip')) {
+ await (0, extract_zip_1.default)(archivePath, { dir: folderPath });
+ }
+ else if (archivePath.endsWith('.tar.bz2')) {
+ await extractTar(archivePath, folderPath);
+ }
+ else if (archivePath.endsWith('.dmg')) {
+ await (0, promises_1.mkdir)(folderPath);
+ await installDMG(archivePath, folderPath);
+ }
+ else {
+ throw new Error(`Unsupported archive format: ${archivePath}`);
+ }
+}
+exports.unpackArchive = unpackArchive;
+/**
+ * @internal
+ */
+function extractTar(tarPath, folderPath) {
+ return new Promise((fulfill, reject) => {
+ const tarStream = tar_fs_1.default.extract(folderPath);
+ tarStream.on('error', reject);
+ tarStream.on('finish', fulfill);
+ const readStream = (0, fs_1.createReadStream)(tarPath);
+ readStream.pipe((0, unbzip2_stream_1.default)()).pipe(tarStream);
+ });
+}
+/**
+ * @internal
+ */
+async function installDMG(dmgPath, folderPath) {
+ const { stdout } = await exec(`hdiutil attach -nobrowse -noautoopen "${dmgPath}"`);
+ const volumes = stdout.match(/\/Volumes\/(.*)/m);
+ if (!volumes) {
+ throw new Error(`Could not find volume path in ${stdout}`);
+ }
+ const mountPath = volumes[0];
+ try {
+ const fileNames = await (0, promises_1.readdir)(mountPath);
+ const appName = fileNames.find(item => {
+ return typeof item === 'string' && item.endsWith('.app');
+ });
+ if (!appName) {
+ throw new Error(`Cannot find app in ${mountPath}`);
+ }
+ const mountedPath = path.join(mountPath, appName);
+ await exec(`cp -R "${mountedPath}" "${folderPath}"`);
+ }
+ finally {
+ await exec(`hdiutil detach "${mountPath}" -quiet`);
+ }
+}
+//# sourceMappingURL=fileUtil.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js.map
new file mode 100644
index 0000000..45a3b38
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/fileUtil.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAuD;AACvD,2BAAoC;AACpC,0CAA2C;AAC3C,2CAA6B;AAC7B,+BAA+B;AAE/B,8DAAqC;AACrC,oDAAyB;AACzB,oEAAkC;AAElC,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,oBAAgB,CAAC,CAAC;AAEzC;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,UAAkB;IAElB,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChC,MAAM,IAAA,qBAAU,EAAC,WAAW,EAAE,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC,CAAC;KAClD;SAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3C,MAAM,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;KAC3C;SAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACvC,MAAM,IAAA,gBAAK,EAAC,UAAU,CAAC,CAAC;QACxB,MAAM,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;KAC3C;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC;AAdD,sCAcC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe,EAAE,UAAkB;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,gBAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,OAAO,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,IAAA,wBAAI,GAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,UAAkB;IAC3D,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAI,CACzB,yCAAyC,OAAO,GAAG,CACpD,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;KAC5D;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAE9B,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAO,EAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;SACpD;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,UAAU,WAAW,MAAM,UAAU,GAAG,CAAC,CAAC;KACtD;YAAS;QACR,MAAM,IAAI,CAAC,mBAAmB,SAAS,UAAU,CAAC,CAAC;KACpD;AACH,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts
new file mode 100644
index 0000000..6e52d1e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts
@@ -0,0 +1,28 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+///
+import * as http from 'http';
+import { URL } from 'url';
+export declare function headHttpRequest(url: URL): Promise;
+export declare function httpRequest(url: URL, method: string, response: (x: http.IncomingMessage) => void, keepAlive?: boolean): http.ClientRequest;
+/**
+ * @internal
+ */
+export declare function downloadFile(url: URL, destinationPath: string, progressCallback?: (downloadedBytes: number, totalBytes: number) => void): Promise;
+export declare function getJSON(url: URL): Promise;
+export declare function getText(url: URL): Promise;
+//# sourceMappingURL=httpUtil.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts.map
new file mode 100644
index 0000000..5996fa8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"httpUtil.d.ts","sourceRoot":"","sources":["../../src/httpUtil.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,GAAG,EAAmB,MAAM,KAAK,CAAC;AAI1C,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB1D;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,KAAK,IAAI,EAC3C,SAAS,UAAO,GACf,IAAI,CAAC,aAAa,CA8BpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,MAAM,EACvB,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACvE,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BjD"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js
new file mode 100644
index 0000000..2d3ff4b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js
@@ -0,0 +1,162 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getText = exports.getJSON = exports.downloadFile = exports.httpRequest = exports.headHttpRequest = void 0;
+const fs_1 = require("fs");
+const http = __importStar(require("http"));
+const https = __importStar(require("https"));
+const url_1 = require("url");
+const proxy_agent_1 = require("proxy-agent");
+function headHttpRequest(url) {
+ return new Promise(resolve => {
+ const request = httpRequest(url, 'HEAD', response => {
+ // consume response data free node process
+ response.resume();
+ resolve(response.statusCode === 200);
+ }, false);
+ request.on('error', () => {
+ resolve(false);
+ });
+ });
+}
+exports.headHttpRequest = headHttpRequest;
+function httpRequest(url, method, response, keepAlive = true) {
+ const options = {
+ protocol: url.protocol,
+ hostname: url.hostname,
+ port: url.port,
+ path: url.pathname + url.search,
+ method,
+ headers: keepAlive ? { Connection: 'keep-alive' } : undefined,
+ auth: (0, url_1.urlToHttpOptions)(url).auth,
+ agent: new proxy_agent_1.ProxyAgent(),
+ };
+ const requestCallback = (res) => {
+ if (res.statusCode &&
+ res.statusCode >= 300 &&
+ res.statusCode < 400 &&
+ res.headers.location) {
+ httpRequest(new url_1.URL(res.headers.location), method, response);
+ }
+ else {
+ response(res);
+ }
+ };
+ const request = options.protocol === 'https:'
+ ? https.request(options, requestCallback)
+ : http.request(options, requestCallback);
+ request.end();
+ return request;
+}
+exports.httpRequest = httpRequest;
+/**
+ * @internal
+ */
+function downloadFile(url, destinationPath, progressCallback) {
+ return new Promise((resolve, reject) => {
+ let downloadedBytes = 0;
+ let totalBytes = 0;
+ function onData(chunk) {
+ downloadedBytes += chunk.length;
+ progressCallback(downloadedBytes, totalBytes);
+ }
+ const request = httpRequest(url, 'GET', response => {
+ if (response.statusCode !== 200) {
+ const error = new Error(`Download failed: server returned code ${response.statusCode}. URL: ${url}`);
+ // consume response data to free up memory
+ response.resume();
+ reject(error);
+ return;
+ }
+ const file = (0, fs_1.createWriteStream)(destinationPath);
+ file.on('finish', () => {
+ return resolve();
+ });
+ file.on('error', error => {
+ return reject(error);
+ });
+ response.pipe(file);
+ totalBytes = parseInt(response.headers['content-length'], 10);
+ if (progressCallback) {
+ response.on('data', onData);
+ }
+ });
+ request.on('error', error => {
+ return reject(error);
+ });
+ });
+}
+exports.downloadFile = downloadFile;
+async function getJSON(url) {
+ const text = await getText(url);
+ try {
+ return JSON.parse(text);
+ }
+ catch {
+ throw new Error('Could not parse JSON from ' + url.toString());
+ }
+}
+exports.getJSON = getJSON;
+function getText(url) {
+ return new Promise((resolve, reject) => {
+ const request = httpRequest(url, 'GET', response => {
+ let data = '';
+ if (response.statusCode && response.statusCode >= 400) {
+ return reject(new Error(`Got status code ${response.statusCode}`));
+ }
+ response.on('data', chunk => {
+ data += chunk;
+ });
+ response.on('end', () => {
+ try {
+ return resolve(String(data));
+ }
+ catch {
+ return reject(new Error('Chrome version not found'));
+ }
+ });
+ }, false);
+ request.on('error', err => {
+ reject(err);
+ });
+ });
+}
+exports.getText = getText;
+//# sourceMappingURL=httpUtil.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js.map
new file mode 100644
index 0000000..9636320
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/httpUtil.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"httpUtil.js","sourceRoot":"","sources":["../../src/httpUtil.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts
new file mode 100644
index 0000000..68fb99d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2017 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Browser, BrowserPlatform } from './browser-data/browser-data.js';
+import { InstalledBrowser } from './Cache.js';
+/**
+ * @public
+ */
+export interface InstallOptions {
+ /**
+ * Determines the path to download browsers to.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to install.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+ /**
+ * Provides information about the progress of the download.
+ */
+ downloadProgressCallback?: (downloadedBytes: number, totalBytes: number) => void;
+ /**
+ * Determines the host that will be used for downloading.
+ *
+ * @defaultValue Either
+ *
+ * - https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing or
+ * - https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central
+ *
+ */
+ baseUrl?: string;
+ /**
+ * Whether to unpack and install browser archives.
+ *
+ * @defaultValue `true`
+ */
+ unpack?: boolean;
+}
+/**
+ * @public
+ */
+export declare function install(options: InstallOptions & {
+ unpack?: true;
+}): Promise;
+export declare function install(options: InstallOptions & {
+ unpack: false;
+}): Promise;
+/**
+ * @public
+ */
+export interface UninstallOptions {
+ /**
+ * Determines the platform for the browser binary.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which browser to uninstall.
+ */
+ browser: Browser;
+ /**
+ * The browser build to uninstall
+ */
+ buildId: string;
+}
+/**
+ *
+ * @public
+ */
+export declare function uninstall(options: UninstallOptions): Promise;
+/**
+ * @public
+ */
+export interface GetInstalledBrowsersOptions {
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+}
+/**
+ * Returns metadata about browsers installed in the cache directory.
+ *
+ * @public
+ */
+export declare function getInstalledBrowsers(options: GetInstalledBrowsersOptions): Promise;
+/**
+ * @public
+ */
+export declare function canDownload(options: InstallOptions): Promise;
+//# sourceMappingURL=install.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts.map
new file mode 100644
index 0000000..4a825e7
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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;;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;CAClB;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AA+EnB;;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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js
new file mode 100644
index 0000000..8565937
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js
@@ -0,0 +1,137 @@
+"use strict";
+/**
+ * Copyright 2017 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.canDownload = exports.getInstalledBrowsers = exports.uninstall = exports.install = void 0;
+const assert_1 = __importDefault(require("assert"));
+const fs_1 = require("fs");
+const promises_1 = require("fs/promises");
+const os_1 = __importDefault(require("os"));
+const path_1 = __importDefault(require("path"));
+const browser_data_js_1 = require("./browser-data/browser-data.js");
+const Cache_js_1 = require("./Cache.js");
+const debug_js_1 = require("./debug.js");
+const detectPlatform_js_1 = require("./detectPlatform.js");
+const fileUtil_js_1 = require("./fileUtil.js");
+const httpUtil_js_1 = require("./httpUtil.js");
+const debugInstall = (0, debug_js_1.debug)('puppeteer:browsers:install');
+const times = new Map();
+function debugTime(label) {
+ times.set(label, process.hrtime());
+}
+function debugTimeEnd(label) {
+ const end = process.hrtime();
+ const start = times.get(label);
+ if (!start) {
+ return;
+ }
+ const duration = end[0] * 1000 + end[1] / 1e6 - (start[0] * 1000 + start[1] / 1e6); // calculate duration in milliseconds
+ debugInstall(`Duration for ${label}: ${duration}ms`);
+}
+async function install(options) {
+ options.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ options.unpack ??= true;
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os_1.default.platform()} (${os_1.default.arch()})`);
+ }
+ const url = getDownloadUrl(options.browser, options.platform, options.buildId, options.baseUrl);
+ const fileName = url.toString().split('/').pop();
+ (0, assert_1.default)(fileName, `A malformed download URL was found: ${url}.`);
+ const cache = new Cache_js_1.Cache(options.cacheDir);
+ const browserRoot = cache.browserRoot(options.browser);
+ const archivePath = path_1.default.join(browserRoot, `${options.buildId}-${fileName}`);
+ if (!(0, fs_1.existsSync)(browserRoot)) {
+ await (0, promises_1.mkdir)(browserRoot, { recursive: true });
+ }
+ if (!options.unpack) {
+ if ((0, fs_1.existsSync)(archivePath)) {
+ return archivePath;
+ }
+ debugInstall(`Downloading binary from ${url}`);
+ debugTime('download');
+ await (0, httpUtil_js_1.downloadFile)(url, archivePath, options.downloadProgressCallback);
+ debugTimeEnd('download');
+ return archivePath;
+ }
+ const outputPath = cache.installationDir(options.browser, options.platform, options.buildId);
+ if ((0, fs_1.existsSync)(outputPath)) {
+ return new Cache_js_1.InstalledBrowser(cache, options.browser, options.buildId, options.platform);
+ }
+ try {
+ debugInstall(`Downloading binary from ${url}`);
+ try {
+ debugTime('download');
+ await (0, httpUtil_js_1.downloadFile)(url, archivePath, options.downloadProgressCallback);
+ }
+ finally {
+ debugTimeEnd('download');
+ }
+ debugInstall(`Installing ${archivePath} to ${outputPath}`);
+ try {
+ debugTime('extract');
+ await (0, fileUtil_js_1.unpackArchive)(archivePath, outputPath);
+ }
+ finally {
+ debugTimeEnd('extract');
+ }
+ }
+ finally {
+ if ((0, fs_1.existsSync)(archivePath)) {
+ await (0, promises_1.unlink)(archivePath);
+ }
+ }
+ return new Cache_js_1.InstalledBrowser(cache, options.browser, options.buildId, options.platform);
+}
+exports.install = install;
+/**
+ *
+ * @public
+ */
+async function uninstall(options) {
+ options.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ if (!options.platform) {
+ throw new Error(`Cannot detect the browser platform for: ${os_1.default.platform()} (${os_1.default.arch()})`);
+ }
+ new Cache_js_1.Cache(options.cacheDir).uninstall(options.browser, options.platform, options.buildId);
+}
+exports.uninstall = uninstall;
+/**
+ * Returns metadata about browsers installed in the cache directory.
+ *
+ * @public
+ */
+async function getInstalledBrowsers(options) {
+ return new Cache_js_1.Cache(options.cacheDir).getInstalledBrowsers();
+}
+exports.getInstalledBrowsers = getInstalledBrowsers;
+/**
+ * @public
+ */
+async function canDownload(options) {
+ options.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os_1.default.platform()} (${os_1.default.arch()})`);
+ }
+ return await (0, httpUtil_js_1.headHttpRequest)(getDownloadUrl(options.browser, options.platform, options.buildId, options.baseUrl));
+}
+exports.canDownload = canDownload;
+function getDownloadUrl(browser, platform, buildId, baseUrl) {
+ return new URL(browser_data_js_1.downloadUrls[browser](platform, buildId, baseUrl));
+}
+//# sourceMappingURL=install.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js.map
new file mode 100644
index 0000000..113272f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/install.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts
new file mode 100644
index 0000000..f60e2b9
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts
@@ -0,0 +1,134 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+///
+import childProcess from 'child_process';
+import { Browser, BrowserPlatform, ChromeReleaseChannel } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export interface ComputeExecutablePathOptions {
+ /**
+ * Root path to the storage directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+}
+/**
+ * @public
+ */
+export declare function computeExecutablePath(options: ComputeExecutablePathOptions): string;
+/**
+ * @public
+ */
+export interface SystemOptions {
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Release channel to look for on the system.
+ */
+ channel: ChromeReleaseChannel;
+}
+/**
+ * @public
+ */
+export declare function computeSystemExecutablePath(options: SystemOptions): string;
+/**
+ * @public
+ */
+export interface LaunchOptions {
+ executablePath: string;
+ pipe?: boolean;
+ dumpio?: boolean;
+ args?: string[];
+ env?: Record;
+ handleSIGINT?: boolean;
+ handleSIGTERM?: boolean;
+ handleSIGHUP?: boolean;
+ detached?: boolean;
+ onExit?: () => Promise;
+}
+/**
+ * @public
+ */
+export declare function launch(opts: LaunchOptions): Process;
+/**
+ * @public
+ */
+export declare const CDP_WEBSOCKET_ENDPOINT_REGEX: RegExp;
+/**
+ * @public
+ */
+export declare const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX: RegExp;
+/**
+ * @public
+ */
+export declare class Process {
+ #private;
+ constructor(opts: LaunchOptions);
+ get nodeProcess(): childProcess.ChildProcess;
+ close(): Promise;
+ hasClosed(): Promise;
+ kill(): void;
+ waitForLineOutput(regex: RegExp, timeout?: number): Promise;
+}
+/**
+ * @internal
+ */
+export interface ErrorLike extends Error {
+ name: string;
+ message: string;
+}
+/**
+ * @internal
+ */
+export declare function isErrorLike(obj: unknown): obj is ErrorLike;
+/**
+ * @internal
+ */
+export declare function isErrnoException(obj: unknown): obj is NodeJS.ErrnoException;
+/**
+ * @public
+ */
+export declare class TimeoutError extends Error {
+ /**
+ * @internal
+ */
+ constructor(message?: string);
+}
+//# sourceMappingURL=launch.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts.map
new file mode 100644
index 0000000..eacb5f1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,OAAO,YAAY,MAAM,eAAe,CAAC;AAMzC,OAAO,EACL,OAAO,EACP,eAAe,EAGf,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAOxC;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;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;CACjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAgBR;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAoB1E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,QACF,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,uCAAuC,QACP,CAAC;AAE9C;;GAEG;AACH,qBAAa,OAAO;;gBAYN,IAAI,EAAE,aAAa;IA8E/B,IAAI,WAAW,IAAI,YAAY,CAAC,YAAY,CAE3C;IA4CK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,IAAI,IAAI,IAAI;IAwDZ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA+D/D;AAuBD;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAI1D;AACD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,cAAc,CAK3E;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;OAEG;gBACS,OAAO,CAAC,EAAE,MAAM;CAK7B"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js
new file mode 100644
index 0000000..160d439
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js
@@ -0,0 +1,352 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TimeoutError = exports.isErrnoException = exports.isErrorLike = exports.Process = exports.WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX = exports.CDP_WEBSOCKET_ENDPOINT_REGEX = exports.launch = exports.computeSystemExecutablePath = exports.computeExecutablePath = void 0;
+const child_process_1 = __importDefault(require("child_process"));
+const fs_1 = require("fs");
+const os_1 = __importDefault(require("os"));
+const path_1 = __importDefault(require("path"));
+const readline_1 = __importDefault(require("readline"));
+const browser_data_js_1 = require("./browser-data/browser-data.js");
+const Cache_js_1 = require("./Cache.js");
+const debug_js_1 = require("./debug.js");
+const detectPlatform_js_1 = require("./detectPlatform.js");
+const debugLaunch = (0, debug_js_1.debug)('puppeteer:browsers:launcher');
+/**
+ * @public
+ */
+function computeExecutablePath(options) {
+ options.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os_1.default.platform()} (${os_1.default.arch()})`);
+ }
+ const installationDir = new Cache_js_1.Cache(options.cacheDir).installationDir(options.browser, options.platform, options.buildId);
+ return path_1.default.join(installationDir, browser_data_js_1.executablePathByBrowser[options.browser](options.platform, options.buildId));
+}
+exports.computeExecutablePath = computeExecutablePath;
+/**
+ * @public
+ */
+function computeSystemExecutablePath(options) {
+ options.platform ??= (0, detectPlatform_js_1.detectBrowserPlatform)();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os_1.default.platform()} (${os_1.default.arch()})`);
+ }
+ const path = (0, browser_data_js_1.resolveSystemExecutablePath)(options.browser, options.platform, options.channel);
+ try {
+ (0, fs_1.accessSync)(path);
+ }
+ catch (error) {
+ throw new Error(`Could not find Google Chrome executable for channel '${options.channel}' at '${path}'.`);
+ }
+ return path;
+}
+exports.computeSystemExecutablePath = computeSystemExecutablePath;
+/**
+ * @public
+ */
+function launch(opts) {
+ return new Process(opts);
+}
+exports.launch = launch;
+/**
+ * @public
+ */
+exports.CDP_WEBSOCKET_ENDPOINT_REGEX = /^DevTools listening on (ws:\/\/.*)$/;
+/**
+ * @public
+ */
+exports.WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX = /^WebDriver BiDi listening on (ws:\/\/.*)$/;
+/**
+ * @public
+ */
+class Process {
+ #executablePath;
+ #args;
+ #browserProcess;
+ #exited = false;
+ // The browser process can be closed externally or from the driver process. We
+ // need to invoke the hooks only once though but we don't know how many times
+ // we will be invoked.
+ #hooksRan = false;
+ #onExitHook = async () => { };
+ #browserProcessExiting;
+ constructor(opts) {
+ this.#executablePath = opts.executablePath;
+ this.#args = opts.args ?? [];
+ opts.pipe ??= false;
+ opts.dumpio ??= false;
+ opts.handleSIGINT ??= true;
+ opts.handleSIGTERM ??= true;
+ opts.handleSIGHUP ??= true;
+ // On non-windows platforms, `detached: true` makes child process a
+ // leader of a new process group, making it possible to kill child
+ // process tree with `.kill(-pid)` command. @see
+ // https://nodejs.org/api/child_process.html#child_process_options_detached
+ opts.detached ??= process.platform !== 'win32';
+ const stdio = this.#configureStdio({
+ pipe: opts.pipe,
+ dumpio: opts.dumpio,
+ });
+ debugLaunch(`Launching ${this.#executablePath} ${this.#args.join(' ')}`, {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ });
+ this.#browserProcess = child_process_1.default.spawn(this.#executablePath, this.#args, {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ });
+ debugLaunch(`Launched ${this.#browserProcess.pid}`);
+ if (opts.dumpio) {
+ this.#browserProcess.stderr?.pipe(process.stderr);
+ this.#browserProcess.stdout?.pipe(process.stdout);
+ }
+ process.on('exit', this.#onDriverProcessExit);
+ if (opts.handleSIGINT) {
+ process.on('SIGINT', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGTERM) {
+ process.on('SIGTERM', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGHUP) {
+ process.on('SIGHUP', this.#onDriverProcessSignal);
+ }
+ if (opts.onExit) {
+ this.#onExitHook = opts.onExit;
+ }
+ this.#browserProcessExiting = new Promise((resolve, reject) => {
+ this.#browserProcess.once('exit', async () => {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} onExit`);
+ this.#clearListeners();
+ this.#exited = true;
+ try {
+ await this.#runHooks();
+ }
+ catch (err) {
+ reject(err);
+ return;
+ }
+ resolve();
+ });
+ });
+ }
+ async #runHooks() {
+ if (this.#hooksRan) {
+ return;
+ }
+ this.#hooksRan = true;
+ await this.#onExitHook();
+ }
+ get nodeProcess() {
+ return this.#browserProcess;
+ }
+ #configureStdio(opts) {
+ if (opts.pipe) {
+ if (opts.dumpio) {
+ return ['ignore', 'pipe', 'pipe', 'pipe', 'pipe'];
+ }
+ else {
+ return ['ignore', 'ignore', 'ignore', 'pipe', 'pipe'];
+ }
+ }
+ else {
+ if (opts.dumpio) {
+ return ['pipe', 'pipe', 'pipe'];
+ }
+ else {
+ return ['pipe', 'ignore', 'pipe'];
+ }
+ }
+ }
+ #clearListeners() {
+ process.off('exit', this.#onDriverProcessExit);
+ process.off('SIGINT', this.#onDriverProcessSignal);
+ process.off('SIGTERM', this.#onDriverProcessSignal);
+ process.off('SIGHUP', this.#onDriverProcessSignal);
+ }
+ #onDriverProcessExit = (_code) => {
+ this.kill();
+ };
+ #onDriverProcessSignal = (signal) => {
+ switch (signal) {
+ case 'SIGINT':
+ this.kill();
+ process.exit(130);
+ case 'SIGTERM':
+ case 'SIGHUP':
+ void this.close();
+ break;
+ }
+ };
+ async close() {
+ await this.#runHooks();
+ if (!this.#exited) {
+ this.kill();
+ }
+ return this.#browserProcessExiting;
+ }
+ hasClosed() {
+ return this.#browserProcessExiting;
+ }
+ kill() {
+ debugLaunch(`Trying to kill ${this.#browserProcess.pid}`);
+ // If the process failed to launch (for example if the browser executable path
+ // is invalid), then the process does not get a pid assigned. A call to
+ // `proc.kill` would error, as the `pid` to-be-killed can not be found.
+ if (this.#browserProcess &&
+ this.#browserProcess.pid &&
+ pidExists(this.#browserProcess.pid)) {
+ try {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} exists`);
+ if (process.platform === 'win32') {
+ try {
+ child_process_1.default.execSync(`taskkill /pid ${this.#browserProcess.pid} /T /F`);
+ }
+ catch (error) {
+ debugLaunch(`Killing ${this.#browserProcess.pid} using taskkill failed`, error);
+ // taskkill can fail to kill the process e.g. due to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill();
+ }
+ }
+ else {
+ // on linux the process group can be killed with the group id prefixed with
+ // a minus sign. The process group id is the group leader's pid.
+ const processGroupId = -this.#browserProcess.pid;
+ try {
+ process.kill(processGroupId, 'SIGKILL');
+ }
+ catch (error) {
+ debugLaunch(`Killing ${this.#browserProcess.pid} using process.kill failed`, error);
+ // Killing the process group can fail due e.g. to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill('SIGKILL');
+ }
+ }
+ }
+ catch (error) {
+ throw new Error(`${PROCESS_ERROR_EXPLANATION}\nError cause: ${isErrorLike(error) ? error.stack : error}`);
+ }
+ }
+ this.#clearListeners();
+ }
+ waitForLineOutput(regex, timeout = 0) {
+ if (!this.#browserProcess.stderr) {
+ throw new Error('`browserProcess` does not have stderr.');
+ }
+ const rl = readline_1.default.createInterface(this.#browserProcess.stderr);
+ let stderr = '';
+ return new Promise((resolve, reject) => {
+ rl.on('line', onLine);
+ rl.on('close', onClose);
+ this.#browserProcess.on('exit', onClose);
+ this.#browserProcess.on('error', onClose);
+ const timeoutId = timeout > 0 ? setTimeout(onTimeout, timeout) : undefined;
+ const cleanup = () => {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ rl.off('line', onLine);
+ rl.off('close', onClose);
+ this.#browserProcess.off('exit', onClose);
+ this.#browserProcess.off('error', onClose);
+ };
+ function onClose(error) {
+ cleanup();
+ reject(new Error([
+ `Failed to launch the browser process!${error ? ' ' + error.message : ''}`,
+ stderr,
+ '',
+ 'TROUBLESHOOTING: https://pptr.dev/troubleshooting',
+ '',
+ ].join('\n')));
+ }
+ function onTimeout() {
+ cleanup();
+ reject(new TimeoutError(`Timed out after ${timeout} ms while waiting for the WS endpoint URL to appear in stdout!`));
+ }
+ function onLine(line) {
+ stderr += line + '\n';
+ const match = line.match(regex);
+ if (!match) {
+ return;
+ }
+ cleanup();
+ // The RegExp matches, so this will obviously exist.
+ resolve(match[1]);
+ }
+ });
+ }
+}
+exports.Process = Process;
+const PROCESS_ERROR_EXPLANATION = `Puppeteer was unable to kill the process which ran the browser binary.
+This means that, on future Puppeteer launches, Puppeteer might not be able to launch the browser.
+Please check your open processes and ensure that the browser processes that Puppeteer launched have been killed.
+If you think this is a bug, please report it on the Puppeteer issue tracker.`;
+/**
+ * @internal
+ */
+function pidExists(pid) {
+ try {
+ return process.kill(pid, 0);
+ }
+ catch (error) {
+ if (isErrnoException(error)) {
+ if (error.code && error.code === 'ESRCH') {
+ return false;
+ }
+ }
+ throw error;
+ }
+}
+/**
+ * @internal
+ */
+function isErrorLike(obj) {
+ return (typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj);
+}
+exports.isErrorLike = isErrorLike;
+/**
+ * @internal
+ */
+function isErrnoException(obj) {
+ return (isErrorLike(obj) &&
+ ('errno' in obj || 'code' in obj || 'path' in obj || 'syscall' in obj));
+}
+exports.isErrnoException = isErrnoException;
+/**
+ * @public
+ */
+class TimeoutError extends Error {
+ /**
+ * @internal
+ */
+ constructor(message) {
+ super(message);
+ this.name = this.constructor.name;
+ Error.captureStackTrace(this, this.constructor);
+ }
+}
+exports.TimeoutError = TimeoutError;
+//# sourceMappingURL=launch.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js.map
new file mode 100644
index 0000000..e71e31f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/launch.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/launch.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts
new file mode 100644
index 0000000..0b495ec
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts
@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export {};
+//# sourceMappingURL=main-cli.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts.map
new file mode 100644
index 0000000..edf028a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"main-cli.d.ts","sourceRoot":"","sources":["../../src/main-cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js
new file mode 100644
index 0000000..0d467ee
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js
@@ -0,0 +1,21 @@
+#!/usr/bin/env node
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const CLI_js_1 = require("./CLI.js");
+void new CLI_js_1.CLI().run(process.argv);
+//# sourceMappingURL=main-cli.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js.map
new file mode 100644
index 0000000..75d7ec5
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main-cli.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main-cli.js","sourceRoot":"","sources":["../../src/main-cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;GAcG;;AAEH,qCAA6B;AAE7B,KAAK,IAAI,YAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts
new file mode 100644
index 0000000..ca0366a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export { launch, computeExecutablePath, computeSystemExecutablePath, TimeoutError, LaunchOptions, ComputeExecutablePathOptions as Options, SystemOptions, CDP_WEBSOCKET_ENDPOINT_REGEX, WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX, Process, } from './launch.js';
+export { install, getInstalledBrowsers, canDownload, uninstall, InstallOptions, GetInstalledBrowsersOptions, UninstallOptions, } from './install.js';
+export { detectBrowserPlatform } from './detectPlatform.js';
+export { resolveBuildId, Browser, BrowserPlatform, ChromeReleaseChannel, createProfile, ProfileOptions, } from './browser-data/browser-data.js';
+export { CLI, makeProgressCallback } from './CLI.js';
+export { Cache, InstalledBrowser } from './Cache.js';
+//# sourceMappingURL=main.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts.map
new file mode 100644
index 0000000..3566b93
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,4BAA4B,IAAI,OAAO,EACvC,aAAa,EACb,4BAA4B,EAC5B,uCAAuC,EACvC,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,cAAc,EACd,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,GAAG,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AACnD,OAAO,EAAC,KAAK,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js
new file mode 100644
index 0000000..5a172d5
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js
@@ -0,0 +1,46 @@
+"use strict";
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.InstalledBrowser = exports.Cache = exports.makeProgressCallback = exports.CLI = exports.createProfile = exports.ChromeReleaseChannel = exports.BrowserPlatform = exports.Browser = exports.resolveBuildId = exports.detectBrowserPlatform = exports.uninstall = exports.canDownload = exports.getInstalledBrowsers = exports.install = exports.Process = exports.WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX = exports.CDP_WEBSOCKET_ENDPOINT_REGEX = exports.TimeoutError = exports.computeSystemExecutablePath = exports.computeExecutablePath = exports.launch = void 0;
+var launch_js_1 = require("./launch.js");
+Object.defineProperty(exports, "launch", { enumerable: true, get: function () { return launch_js_1.launch; } });
+Object.defineProperty(exports, "computeExecutablePath", { enumerable: true, get: function () { return launch_js_1.computeExecutablePath; } });
+Object.defineProperty(exports, "computeSystemExecutablePath", { enumerable: true, get: function () { return launch_js_1.computeSystemExecutablePath; } });
+Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return launch_js_1.TimeoutError; } });
+Object.defineProperty(exports, "CDP_WEBSOCKET_ENDPOINT_REGEX", { enumerable: true, get: function () { return launch_js_1.CDP_WEBSOCKET_ENDPOINT_REGEX; } });
+Object.defineProperty(exports, "WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX", { enumerable: true, get: function () { return launch_js_1.WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX; } });
+Object.defineProperty(exports, "Process", { enumerable: true, get: function () { return launch_js_1.Process; } });
+var install_js_1 = require("./install.js");
+Object.defineProperty(exports, "install", { enumerable: true, get: function () { return install_js_1.install; } });
+Object.defineProperty(exports, "getInstalledBrowsers", { enumerable: true, get: function () { return install_js_1.getInstalledBrowsers; } });
+Object.defineProperty(exports, "canDownload", { enumerable: true, get: function () { return install_js_1.canDownload; } });
+Object.defineProperty(exports, "uninstall", { enumerable: true, get: function () { return install_js_1.uninstall; } });
+var detectPlatform_js_1 = require("./detectPlatform.js");
+Object.defineProperty(exports, "detectBrowserPlatform", { enumerable: true, get: function () { return detectPlatform_js_1.detectBrowserPlatform; } });
+var browser_data_js_1 = require("./browser-data/browser-data.js");
+Object.defineProperty(exports, "resolveBuildId", { enumerable: true, get: function () { return browser_data_js_1.resolveBuildId; } });
+Object.defineProperty(exports, "Browser", { enumerable: true, get: function () { return browser_data_js_1.Browser; } });
+Object.defineProperty(exports, "BrowserPlatform", { enumerable: true, get: function () { return browser_data_js_1.BrowserPlatform; } });
+Object.defineProperty(exports, "ChromeReleaseChannel", { enumerable: true, get: function () { return browser_data_js_1.ChromeReleaseChannel; } });
+Object.defineProperty(exports, "createProfile", { enumerable: true, get: function () { return browser_data_js_1.createProfile; } });
+var CLI_js_1 = require("./CLI.js");
+Object.defineProperty(exports, "CLI", { enumerable: true, get: function () { return CLI_js_1.CLI; } });
+Object.defineProperty(exports, "makeProgressCallback", { enumerable: true, get: function () { return CLI_js_1.makeProgressCallback; } });
+var Cache_js_1 = require("./Cache.js");
+Object.defineProperty(exports, "Cache", { enumerable: true, get: function () { return Cache_js_1.Cache; } });
+Object.defineProperty(exports, "InstalledBrowser", { enumerable: true, get: function () { return Cache_js_1.InstalledBrowser; } });
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js.map
new file mode 100644
index 0000000..b548a5c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/cjs/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,yCAWqB;AAVnB,mGAAA,MAAM,OAAA;AACN,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,yGAAA,YAAY,OAAA;AAIZ,yHAAA,4BAA4B,OAAA;AAC5B,oIAAA,uCAAuC,OAAA;AACvC,oGAAA,OAAO,OAAA;AAET,2CAQsB;AAPpB,qGAAA,OAAO,OAAA;AACP,kHAAA,oBAAoB,OAAA;AACpB,yGAAA,WAAW,OAAA;AACX,uGAAA,SAAS,OAAA;AAKX,yDAA0D;AAAlD,0HAAA,qBAAqB,OAAA;AAC7B,kEAOwC;AANtC,iHAAA,cAAc,OAAA;AACd,0GAAA,OAAO,OAAA;AACP,kHAAA,eAAe,OAAA;AACf,uHAAA,oBAAoB,OAAA;AACpB,gHAAA,aAAa,OAAA;AAGf,mCAAmD;AAA3C,6FAAA,GAAG,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AACjC,uCAAmD;AAA3C,iGAAA,KAAK,OAAA;AAAE,4GAAA,gBAAgB,OAAA"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts
new file mode 100644
index 0000000..769023f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts
@@ -0,0 +1,31 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+import * as readline from 'readline';
+import { Browser } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare class CLI {
+ #private;
+ constructor(cachePath?: string, rl?: readline.Interface);
+ run(argv: string[]): Promise;
+}
+/**
+ * @public
+ */
+export declare function makeProgressCallback(browser: Browser, buildId: string): (downloadedBytes: number, totalBytes: number) => void;
+//# sourceMappingURL=CLI.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts.map
new file mode 100644
index 0000000..dd94bdf
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAGH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAOrC,OAAO,EAEL,OAAO,EAGR,MAAM,gCAAgC,CAAC;AAmCxC;;GAEG;AACH,qBAAa,GAAG;;gBAIF,SAAS,SAAgB,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS;IAwCxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAwMzC;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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js
new file mode 100644
index 0000000..6b92085
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js
@@ -0,0 +1,207 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { stdin as input, stdout as output } from 'process';
+import * as readline from 'readline';
+import ProgressBar from 'progress';
+import { hideBin } from 'yargs/helpers';
+import yargs from 'yargs/yargs';
+import { resolveBuildId, BrowserPlatform, } from './browser-data/browser-data.js';
+import { Cache } from './Cache.js';
+import { detectBrowserPlatform } from './detectPlatform.js';
+import { install } from './install.js';
+import { computeExecutablePath, computeSystemExecutablePath, launch, } from './launch.js';
+/**
+ * @public
+ */
+export class CLI {
+ #cachePath;
+ #rl;
+ constructor(cachePath = process.cwd(), rl) {
+ this.#cachePath = cachePath;
+ this.#rl = rl;
+ }
+ #defineBrowserParameter(yargs) {
+ yargs.positional('browser', {
+ description: 'Which browser to install [@]. `latest` will try to find the latest available build. `buildId` is a browser-specific identifier such as a version or a revision.',
+ type: 'string',
+ coerce: (opt) => {
+ return {
+ name: this.#parseBrowser(opt),
+ buildId: this.#parseBuildId(opt),
+ };
+ },
+ });
+ }
+ #definePlatformParameter(yargs) {
+ yargs.option('platform', {
+ type: 'string',
+ desc: 'Platform that the binary needs to be compatible with.',
+ choices: Object.values(BrowserPlatform),
+ defaultDescription: 'Auto-detected',
+ });
+ }
+ #definePathParameter(yargs, required = false) {
+ yargs.option('path', {
+ type: 'string',
+ desc: 'Path to the root folder for the browser downloads and installation. The installation folder structure is compatible with the cache structure used by Puppeteer.',
+ defaultDescription: 'Current working directory',
+ ...(required ? {} : { default: process.cwd() }),
+ });
+ if (required) {
+ yargs.demandOption('path');
+ }
+ }
+ async run(argv) {
+ const yargsInstance = yargs(hideBin(argv));
+ await yargsInstance
+ .scriptName('@puppeteer/browsers')
+ .command('install ', '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: @).', yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('base-url', {
+ type: 'string',
+ desc: 'Base URL to download from',
+ });
+ yargs.example('$0 install chrome', 'Install the latest 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@canary', 'Install the latest available build for the Chrome Canary browser.');
+ yargs.example('$0 install chrome@115', 'Install the latest available build for Chrome 115.');
+ yargs.example('$0 install chromedriver@canary', 'Install the latest available build for ChromeDriver Canary.');
+ yargs.example('$0 install chromedriver@115', 'Install the latest available build for ChromeDriver 115.');
+ yargs.example('$0 install chromedriver@115.0.5790', 'Install the latest available patch (115.0.5790.X) build for ChromeDriver.');
+ yargs.example('$0 install chrome-headless-shell', 'Install the latest available chrome-headless-shell build.');
+ yargs.example('$0 install chrome-headless-shell@beta', 'Install the latest available chrome-headless-shell build corresponding to the Beta channel.');
+ yargs.example('$0 install chrome-headless-shell@118', 'Install the latest available chrome-headless-shell 118 build.');
+ yargs.example('$0 install chromium@1083080', 'Install the revision 1083080 of the Chromium browser.');
+ yargs.example('$0 install firefox', 'Install the latest available build of the Firefox browser.');
+ yargs.example('$0 install firefox --platform mac', 'Install the latest Mac (Intel) build of the Firefox browser.');
+ yargs.example('$0 install firefox --path /tmp/my-browser-cache', 'Install to the specified cache directory.');
+ }, async (argv) => {
+ const args = argv;
+ args.platform ??= detectBrowserPlatform();
+ if (!args.platform) {
+ throw new Error(`Could not resolve the current platform`);
+ }
+ 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,
+ });
+ 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 ', 'Launch the specified browser', yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('detached', {
+ type: 'boolean',
+ desc: 'Detach the child process.',
+ default: false,
+ });
+ yargs.option('system', {
+ type: 'boolean',
+ desc: 'Search for a browser installed on the system instead of the cache folder.',
+ default: false,
+ });
+ yargs.example('$0 launch chrome@115.0.5790.170', 'Launch Chrome 115.0.5790.170');
+ yargs.example('$0 launch firefox@112.0a1', 'Launch the Firefox browser identified by the milestone 112.0a1.');
+ yargs.example('$0 launch chrome@115.0.5790.170 --detached', 'Launch the browser but detach the sub-processes.');
+ yargs.example('$0 launch chrome@canary --system', 'Try to locate the Canary build of Chrome installed on the system and launch it.');
+ }, async (argv) => {
+ const args = argv;
+ const executablePath = args.system
+ ? computeSystemExecutablePath({
+ browser: args.browser.name,
+ // TODO: throw an error if not a ChromeReleaseChannel is provided.
+ channel: args.browser.buildId,
+ platform: args.platform,
+ })
+ : computeExecutablePath({
+ browser: args.browser.name,
+ buildId: args.browser.buildId,
+ cacheDir: args.path ?? this.#cachePath,
+ platform: args.platform,
+ });
+ launch({
+ executablePath,
+ detached: args.detached,
+ });
+ })
+ .command('clear', 'Removes all installed browsers from the specified cache directory', yargs => {
+ this.#definePathParameter(yargs, true);
+ }, async (argv) => {
+ const args = argv;
+ const cacheDir = args.path ?? this.#cachePath;
+ const rl = this.#rl ?? readline.createInterface({ input, output });
+ rl.question(`Do you want to permanently and recursively delete the content of ${cacheDir} (yes/No)? `, answer => {
+ rl.close();
+ if (!['y', 'yes'].includes(answer.toLowerCase().trim())) {
+ console.log('Cancelled.');
+ return;
+ }
+ const cache = new Cache(cacheDir);
+ cache.clear();
+ console.log(`${cacheDir} cleared.`);
+ });
+ })
+ .demandCommand(1)
+ .help()
+ .wrap(Math.min(120, yargsInstance.terminalWidth()))
+ .parse();
+ }
+ #parseBrowser(version) {
+ return version.split('@').shift();
+ }
+ #parseBuildId(version) {
+ const parts = version.split('@');
+ return parts.length === 2 ? parts[1] : 'latest';
+ }
+}
+/**
+ * @public
+ */
+export function makeProgressCallback(browser, buildId) {
+ let progressBar;
+ let lastDownloadedBytes = 0;
+ return (downloadedBytes, totalBytes) => {
+ if (!progressBar) {
+ progressBar = new ProgressBar(`Downloading ${browser} r${buildId} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, {
+ complete: '=',
+ incomplete: ' ',
+ width: 20,
+ total: totalBytes,
+ });
+ }
+ const delta = downloadedBytes - lastDownloadedBytes;
+ lastDownloadedBytes = downloadedBytes;
+ progressBar.tick(delta);
+ };
+}
+function toMegabytes(bytes) {
+ const mb = bytes / 1000 / 1000;
+ return `${Math.round(mb * 10) / 10} MB`;
+}
+//# sourceMappingURL=CLI.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js.map
new file mode 100644
index 0000000..99362fc
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/CLI.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"CLI.js","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAC,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,WAAW,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EACL,cAAc,EAEd,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,MAAM,GACP,MAAM,aAAa,CAAC;AA2BrB;;GAEG;AACH,MAAM,OAAO,GAAG;IACd,UAAU,CAAC;IACX,GAAG,CAAsB;IAEzB,YAAY,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,EAAuB;QAC5D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,uBAAuB,CAAC,KAA0B;QAChD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE;YAC1B,WAAW,EACT,0LAA0L;YAC5L,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC,GAAG,EAA0B,EAAE;gBACtC,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;oBAC7B,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;iBACjC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,KAA0B;QACjD,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YACvC,kBAAkB,EAAE,eAAe;SACpC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,KAA0B,EAAE,QAAQ,GAAG,KAAK;QAC/D,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,iKAAiK;YACvK,kBAAkB,EAAE,2BAA2B;YAC/C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAC,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,aAAa;aAChB,UAAU,CAAC,qBAAqB,CAAC;aACjC,OAAO,CACN,mBAAmB,EACnB,oNAAoN,EACpN,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;gBACvB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,2BAA2B;aAClC,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CACX,mBAAmB,EACnB,2DAA2D,CAC5D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,0BAA0B,EAC1B,4DAA4D,CAC7D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,0BAA0B,EAC1B,mEAAmE,CACpE,CAAC;YACF,KAAK,CAAC,OAAO,CACX,uBAAuB,EACvB,oDAAoD,CACrD,CAAC;YACF,KAAK,CAAC,OAAO,CACX,gCAAgC,EAChC,6DAA6D,CAC9D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,6BAA6B,EAC7B,0DAA0D,CAC3D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,oCAAoC,EACpC,2EAA2E,CAC5E,CAAC;YACF,KAAK,CAAC,OAAO,CACX,kCAAkC,EAClC,2DAA2D,CAC5D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,uCAAuC,EACvC,6FAA6F,CAC9F,CAAC;YACF,KAAK,CAAC,OAAO,CACX,sCAAsC,EACtC,+DAA+D,CAChE,CAAC;YACF,KAAK,CAAC,OAAO,CACX,6BAA6B,EAC7B,uDAAuD,CACxD,CAAC;YACF,KAAK,CAAC,OAAO,CACX,oBAAoB,EACpB,4DAA4D,CAC7D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,mCAAmC,EACnC,8DAA8D,CAC/D,CAAC;YACF,KAAK,CAAC,OAAO,CACX,iDAAiD,EACjD,2CAA2C,CAC5C,CAAC;QACJ,CAAC,EACD,KAAK,EAAC,IAAI,EAAC,EAAE;YACX,MAAM,IAAI,GAAG,IAA8B,CAAC;YAC5C,IAAI,CAAC,QAAQ,KAAK,qBAAqB,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,cAAc,CACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;YACF,MAAM,OAAO,CAAC;gBACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;gBACtC,wBAAwB,EAAE,oBAAoB,CAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAClB,IAAI,CAAC,OAAO,CAAC,OACf,IAAI,qBAAqB,CAAC;gBACxB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,EAAE,CACL,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CACN,kBAAkB,EAClB,8BAA8B,EAC9B,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,2EAA2E;gBACjF,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CACX,iCAAiC,EACjC,8BAA8B,CAC/B,CAAC;YACF,KAAK,CAAC,OAAO,CACX,2BAA2B,EAC3B,iEAAiE,CAClE,CAAC;YACF,KAAK,CAAC,OAAO,CACX,4CAA4C,EAC5C,kDAAkD,CACnD,CAAC;YACF,KAAK,CAAC,OAAO,CACX,kCAAkC,EAClC,iFAAiF,CAClF,CAAC;QACJ,CAAC,EACD,KAAK,EAAC,IAAI,EAAC,EAAE;YACX,MAAM,IAAI,GAAG,IAA6B,CAAC;YAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM;gBAChC,CAAC,CAAC,2BAA2B,CAAC;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC1B,kEAAkE;oBAClE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAA+B;oBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC;gBACJ,CAAC,CAAC,qBAAqB,CAAC;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;oBAC7B,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;oBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACP,MAAM,CAAC;gBACL,cAAc;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC,CACF;aACA,OAAO,CACN,OAAO,EACP,mEAAmE,EACnE,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,EACD,KAAK,EAAC,IAAI,EAAC,EAAE;YACX,MAAM,IAAI,GAAG,IAA4B,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;YACjE,EAAE,CAAC,QAAQ,CACT,oEAAoE,QAAQ,aAAa,EACzF,MAAM,CAAC,EAAE;gBACP,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE;oBACvD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO;iBACR;gBACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,WAAW,CAAC,CAAC;YACtC,CAAC,CACF,CAAC;QACJ,CAAC,CACF;aACA,aAAa,CAAC,CAAC,CAAC;aAChB,IAAI,EAAE;aACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;aAClD,KAAK,EAAE,CAAC;IACb,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAa,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,OAAe;IAEf,IAAI,WAAwB,CAAC;IAC7B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,eAAuB,EAAE,UAAkB,EAAE,EAAE;QACrD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,IAAI,WAAW,CAC3B,eAAe,OAAO,KAAK,OAAO,MAAM,WAAW,CACjD,UAAU,CACX,yBAAyB,EAC1B;gBACE,QAAQ,EAAE,GAAG;gBACb,UAAU,EAAE,GAAG;gBACf,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,UAAU;aAClB,CACF,CAAC;SACH;QACD,MAAM,KAAK,GAAG,eAAe,GAAG,mBAAmB,CAAC;QACpD,mBAAmB,GAAG,eAAe,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1C,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts
new file mode 100644
index 0000000..4c72bb4
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts
@@ -0,0 +1,63 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Browser, BrowserPlatform } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare class InstalledBrowser {
+ #private;
+ browser: Browser;
+ buildId: string;
+ platform: BrowserPlatform;
+ /**
+ * @internal
+ */
+ constructor(cache: Cache, browser: Browser, buildId: string, platform: BrowserPlatform);
+ /**
+ * Path to the root of the installation folder. Use
+ * {@link computeExecutablePath} to get the path to the executable binary.
+ */
+ get path(): string;
+ get executablePath(): string;
+}
+/**
+ * The cache used by Puppeteer relies on the following structure:
+ *
+ * - rootDir
+ * -- | browserRoot(browser1)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * -- | browserRoot(browser2)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * @internal
+ */
+export declare class Cache {
+ #private;
+ constructor(rootDir: string);
+ /**
+ * @internal
+ */
+ get rootDir(): string;
+ browserRoot(browser: Browser): string;
+ installationDir(browser: Browser, platform: BrowserPlatform, buildId: string): string;
+ clear(): void;
+ uninstall(browser: Browser, platform: BrowserPlatform, buildId: string): void;
+ getInstalledBrowsers(): InstalledBrowser[];
+}
+//# sourceMappingURL=Cache.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts.map
new file mode 100644
index 0000000..d712d8a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAGxE;;GAEG;AACH,qBAAa,gBAAgB;;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAI1B;;OAEG;gBAED,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe;IAQ3B;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,cAAc,IAAI,MAAM,CAO3B;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,KAAK;;gBAGJ,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAIrC,eAAe,CACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM;IAIT,KAAK,IAAI,IAAI;IASb,SAAS,CACP,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,IAAI;IASP,oBAAoB,IAAI,gBAAgB,EAAE;CA8B3C"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js
new file mode 100644
index 0000000..a9df98f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import fs from 'fs';
+import path from 'path';
+import { Browser } from './browser-data/browser-data.js';
+import { computeExecutablePath } from './launch.js';
+/**
+ * @public
+ */
+export class InstalledBrowser {
+ browser;
+ buildId;
+ platform;
+ #cache;
+ /**
+ * @internal
+ */
+ constructor(cache, browser, buildId, platform) {
+ this.#cache = cache;
+ this.browser = browser;
+ this.buildId = buildId;
+ this.platform = platform;
+ }
+ /**
+ * Path to the root of the installation folder. Use
+ * {@link computeExecutablePath} to get the path to the executable binary.
+ */
+ get path() {
+ return this.#cache.installationDir(this.browser, this.platform, this.buildId);
+ }
+ get executablePath() {
+ return computeExecutablePath({
+ cacheDir: this.#cache.rootDir,
+ platform: this.platform,
+ browser: this.browser,
+ buildId: this.buildId,
+ });
+ }
+}
+/**
+ * The cache used by Puppeteer relies on the following structure:
+ *
+ * - rootDir
+ * -- | browserRoot(browser1)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * -- | browserRoot(browser2)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * @internal
+ */
+export class Cache {
+ #rootDir;
+ constructor(rootDir) {
+ this.#rootDir = rootDir;
+ }
+ /**
+ * @internal
+ */
+ get rootDir() {
+ return this.#rootDir;
+ }
+ browserRoot(browser) {
+ return path.join(this.#rootDir, browser);
+ }
+ installationDir(browser, platform, buildId) {
+ return path.join(this.browserRoot(browser), `${platform}-${buildId}`);
+ }
+ clear() {
+ fs.rmSync(this.#rootDir, {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+ uninstall(browser, platform, buildId) {
+ fs.rmSync(this.installationDir(browser, platform, buildId), {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+ getInstalledBrowsers() {
+ if (!fs.existsSync(this.#rootDir)) {
+ return [];
+ }
+ const types = fs.readdirSync(this.#rootDir);
+ const browsers = types.filter((t) => {
+ return Object.values(Browser).includes(t);
+ });
+ return browsers.flatMap(browser => {
+ const files = fs.readdirSync(this.browserRoot(browser));
+ return files
+ .map(file => {
+ const result = parseFolderPath(path.join(this.browserRoot(browser), file));
+ if (!result) {
+ return null;
+ }
+ return new InstalledBrowser(this, browser, result.buildId, result.platform);
+ })
+ .filter((item) => {
+ return item !== null;
+ });
+ });
+ }
+}
+function parseFolderPath(folderPath) {
+ const name = path.basename(folderPath);
+ const splits = name.split('-');
+ if (splits.length !== 2) {
+ return;
+ }
+ const [platform, buildId] = splits;
+ if (!buildId || !platform) {
+ return;
+ }
+ return { platform, buildId };
+}
+//# sourceMappingURL=Cache.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js.map
new file mode 100644
index 0000000..10c0bc2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts
new file mode 100644
index 0000000..d39e861
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chromeHeadlessShell from './chrome-headless-shell.js';
+import * as chrome from './chrome.js';
+import * as chromedriver from './chromedriver.js';
+import * as chromium from './chromium.js';
+import * as firefox from './firefox.js';
+import { Browser, BrowserPlatform, ChromeReleaseChannel, ProfileOptions } from './types.js';
+export { ProfileOptions };
+export declare const downloadUrls: {
+ chromedriver: typeof chromedriver.resolveDownloadUrl;
+ "chrome-headless-shell": typeof chromeHeadlessShell.resolveDownloadUrl;
+ chrome: typeof chrome.resolveDownloadUrl;
+ chromium: typeof chromium.resolveDownloadUrl;
+ firefox: typeof firefox.resolveDownloadUrl;
+};
+export declare const downloadPaths: {
+ chromedriver: typeof chromedriver.resolveDownloadPath;
+ "chrome-headless-shell": typeof chromeHeadlessShell.resolveDownloadPath;
+ chrome: typeof chrome.resolveDownloadPath;
+ chromium: typeof chromium.resolveDownloadPath;
+ firefox: typeof firefox.resolveDownloadPath;
+};
+export declare const executablePathByBrowser: {
+ chromedriver: typeof chromedriver.relativeExecutablePath;
+ "chrome-headless-shell": typeof chromeHeadlessShell.relativeExecutablePath;
+ chrome: typeof chrome.relativeExecutablePath;
+ chromium: typeof chromium.relativeExecutablePath;
+ firefox: typeof firefox.relativeExecutablePath;
+};
+export { Browser, BrowserPlatform, ChromeReleaseChannel };
+/**
+ * @public
+ */
+export declare function resolveBuildId(browser: Browser, platform: BrowserPlatform, tag: string): Promise;
+/**
+ * @public
+ */
+export declare function createProfile(browser: Browser, opts: ProfileOptions): Promise;
+/**
+ * @public
+ */
+export declare function resolveSystemExecutablePath(browser: Browser, platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
+//# sourceMappingURL=browser-data.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts.map
new file mode 100644
index 0000000..adf12c2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"browser-data.d.ts","sourceRoot":"","sources":["../../../src/browser-data/browser-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,mBAAmB,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,OAAO,EACP,eAAe,EAEf,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAC,cAAc,EAAC,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;CAMnC,CAAC;AAEF,OAAO,EAAC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAC,CAAC;AAExD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA+FjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAYR"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js
new file mode 100644
index 0000000..70267b8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js
@@ -0,0 +1,157 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chromeHeadlessShell from './chrome-headless-shell.js';
+import * as chrome from './chrome.js';
+import * as chromedriver from './chromedriver.js';
+import * as chromium from './chromium.js';
+import * as firefox from './firefox.js';
+import { Browser, BrowserPlatform, BrowserTag, ChromeReleaseChannel, } from './types.js';
+export const downloadUrls = {
+ [Browser.CHROMEDRIVER]: chromedriver.resolveDownloadUrl,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadUrl,
+ [Browser.CHROME]: chrome.resolveDownloadUrl,
+ [Browser.CHROMIUM]: chromium.resolveDownloadUrl,
+ [Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+export const downloadPaths = {
+ [Browser.CHROMEDRIVER]: chromedriver.resolveDownloadPath,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadPath,
+ [Browser.CHROME]: chrome.resolveDownloadPath,
+ [Browser.CHROMIUM]: chromium.resolveDownloadPath,
+ [Browser.FIREFOX]: firefox.resolveDownloadPath,
+};
+export const executablePathByBrowser = {
+ [Browser.CHROMEDRIVER]: chromedriver.relativeExecutablePath,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.relativeExecutablePath,
+ [Browser.CHROME]: chrome.relativeExecutablePath,
+ [Browser.CHROMIUM]: chromium.relativeExecutablePath,
+ [Browser.FIREFOX]: firefox.relativeExecutablePath,
+};
+export { Browser, BrowserPlatform, ChromeReleaseChannel };
+/**
+ * @public
+ */
+export async function resolveBuildId(browser, platform, tag) {
+ switch (browser) {
+ case Browser.FIREFOX:
+ switch (tag) {
+ case BrowserTag.LATEST:
+ return await firefox.resolveBuildId('FIREFOX_NIGHTLY');
+ case BrowserTag.BETA:
+ case BrowserTag.CANARY:
+ case BrowserTag.DEV:
+ case BrowserTag.STABLE:
+ throw new Error(`${tag} is not supported for ${browser}. Use 'latest' instead.`);
+ }
+ case Browser.CHROME: {
+ switch (tag) {
+ case BrowserTag.LATEST:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.BETA:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.BETA);
+ case BrowserTag.CANARY:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.DEV:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.DEV);
+ case BrowserTag.STABLE:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chrome.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMEDRIVER: {
+ switch (tag) {
+ case BrowserTag.LATEST:
+ case BrowserTag.CANARY:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.BETA:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.BETA);
+ case BrowserTag.DEV:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.DEV);
+ case BrowserTag.STABLE:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chromedriver.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMEHEADLESSSHELL: {
+ switch (tag) {
+ case BrowserTag.LATEST:
+ case BrowserTag.CANARY:
+ return await chromeHeadlessShell.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.BETA:
+ return await chromeHeadlessShell.resolveBuildId(ChromeReleaseChannel.BETA);
+ case BrowserTag.DEV:
+ return await chromeHeadlessShell.resolveBuildId(ChromeReleaseChannel.DEV);
+ case BrowserTag.STABLE:
+ return await chromeHeadlessShell.resolveBuildId(ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chromeHeadlessShell.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMIUM:
+ switch (tag) {
+ case BrowserTag.LATEST:
+ return await chromium.resolveBuildId(platform);
+ case BrowserTag.BETA:
+ case BrowserTag.CANARY:
+ case BrowserTag.DEV:
+ case BrowserTag.STABLE:
+ throw new Error(`${tag} is not supported for ${browser}. Use 'latest' instead.`);
+ }
+ }
+ // We assume the tag is the buildId if it didn't match any keywords.
+ return tag;
+}
+/**
+ * @public
+ */
+export async function createProfile(browser, opts) {
+ switch (browser) {
+ case Browser.FIREFOX:
+ return await firefox.createProfile(opts);
+ case Browser.CHROME:
+ case Browser.CHROMIUM:
+ throw new Error(`Profile creation is not support for ${browser} yet`);
+ }
+}
+/**
+ * @public
+ */
+export function resolveSystemExecutablePath(browser, platform, channel) {
+ switch (browser) {
+ case Browser.CHROMEDRIVER:
+ case Browser.CHROMEHEADLESSSHELL:
+ case Browser.FIREFOX:
+ case Browser.CHROMIUM:
+ throw new Error(`System browser detection is not supported for ${browser} yet.`);
+ case Browser.CHROME:
+ return chrome.resolveSystemExecutablePath(platform, channel);
+ }
+}
+//# sourceMappingURL=browser-data.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js.map
new file mode 100644
index 0000000..4614510
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"browser-data.js","sourceRoot":"","sources":["../../../src/browser-data/browser-data.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts
new file mode 100644
index 0000000..cbd385c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts
@@ -0,0 +1,6 @@
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chrome-headless-shell.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts.map
new file mode 100644
index 0000000..aafc060
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome-headless-shell.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chrome-headless-shell.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAMV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAoBR;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js
new file mode 100644
index 0000000..cf45517
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+import { BrowserPlatform } from './types.js';
+function folder(platform) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+export function resolveDownloadPath(platform, buildId) {
+ return [
+ buildId,
+ folder(platform),
+ `chrome-headless-shell-${folder(platform)}.zip`,
+ ];
+}
+export function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join('chrome-headless-shell-' + folder(platform), 'chrome-headless-shell');
+ case BrowserPlatform.LINUX:
+ return path.join('chrome-headless-shell-linux64', 'chrome-headless-shell');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chrome-headless-shell-' + folder(platform), 'chrome-headless-shell.exe');
+ }
+}
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chrome-headless-shell.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js.map
new file mode 100644
index 0000000..648113a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome-headless-shell.js","sourceRoot":"","sources":["../../../src/browser-data/chrome-headless-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe,CAAC,GAAG;YACtB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;KAClB;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,6DAA6D;IAEvE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO;QACL,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC;QAChB,yBAAyB,MAAM,CAAC,QAAQ,CAAC,MAAM;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,GAAG,CAAC;QACzB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,IAAI,CAAC,IAAI,CACd,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAC3C,uBAAuB,CACxB,CAAC;QACJ,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CACd,+BAA+B,EAC/B,uBAAuB,CACxB,CAAC;QACJ,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CACd,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,EAC3C,2BAA2B,CAC5B,CAAC;KACL;AACH,CAAC;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts
new file mode 100644
index 0000000..0a84d67
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform, ChromeReleaseChannel } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function getLastKnownGoodReleaseForChannel(channel: ChromeReleaseChannel): Promise<{
+ version: string;
+ revision: string;
+}>;
+export declare function getLastKnownGoodReleaseForMilestone(milestone: string): Promise<{
+ version: string;
+ revision: string;
+} | undefined>;
+export declare function getLastKnownGoodReleaseForBuild(
+/**
+ * @example `112.0.23`,
+ */
+buildPrefix: string): Promise<{
+ version: string;
+ revision: string;
+} | undefined>;
+export declare function resolveBuildId(channel: ChromeReleaseChannel): Promise;
+export declare function resolveBuildId(channel: string): Promise;
+export declare function resolveSystemExecutablePath(platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
+//# sourceMappingURL=chrome.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts.map
new file mode 100644
index 0000000..e48cbe5
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAiBjE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC,CAqB9C;AAED,wBAAsB,mCAAmC,CACvD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAW1D;AAED,wBAAsB,+BAA+B;AACnD;;GAEG;AACH,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAW1D;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAwB/B,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAwCR"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js
new file mode 100644
index 0000000..e550644
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js
@@ -0,0 +1,123 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+import { getJSON } from '../httpUtil.js';
+import { BrowserPlatform, ChromeReleaseChannel } from './types.js';
+function folder(platform) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+export function resolveDownloadPath(platform, buildId) {
+ return [buildId, folder(platform), `chrome-${folder(platform)}.zip`];
+}
+export function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join('chrome-' + folder(platform), 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing');
+ case BrowserPlatform.LINUX:
+ return path.join('chrome-linux64', 'chrome');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chrome-' + folder(platform), 'chrome.exe');
+ }
+}
+export async function getLastKnownGoodReleaseForChannel(channel) {
+ const data = (await getJSON(new URL('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json')));
+ for (const channel of Object.keys(data.channels)) {
+ data.channels[channel.toLowerCase()] = data.channels[channel];
+ delete data.channels[channel];
+ }
+ return data.channels[channel];
+}
+export async function getLastKnownGoodReleaseForMilestone(milestone) {
+ const data = (await getJSON(new URL('https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone.json')));
+ return data.milestones[milestone];
+}
+export async function getLastKnownGoodReleaseForBuild(
+/**
+ * @example `112.0.23`,
+ */
+buildPrefix) {
+ const data = (await getJSON(new URL('https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build.json')));
+ return data.builds[buildPrefix];
+}
+export async function resolveBuildId(channel) {
+ if (Object.values(ChromeReleaseChannel).includes(channel)) {
+ return (await getLastKnownGoodReleaseForChannel(channel)).version;
+ }
+ if (channel.match(/^\d+$/)) {
+ // Potentially a milestone.
+ return (await getLastKnownGoodReleaseForMilestone(channel))?.version;
+ }
+ if (channel.match(/^\d+\.\d+\.\d+$/)) {
+ // Potentially a build prefix without the patch version.
+ return (await getLastKnownGoodReleaseForBuild(channel))?.version;
+ }
+ return;
+}
+export function resolveSystemExecutablePath(platform, channel) {
+ switch (platform) {
+ case BrowserPlatform.WIN64:
+ case BrowserPlatform.WIN32:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.BETA:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Beta\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.CANARY:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome SxS\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.DEV:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Dev\\Application\\chrome.exe`;
+ }
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
+ case ChromeReleaseChannel.BETA:
+ return '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta';
+ case ChromeReleaseChannel.CANARY:
+ return '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary';
+ case ChromeReleaseChannel.DEV:
+ return '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev';
+ }
+ case BrowserPlatform.LINUX:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return '/opt/google/chrome/chrome';
+ case ChromeReleaseChannel.BETA:
+ return '/opt/google/chrome-beta/chrome';
+ case ChromeReleaseChannel.DEV:
+ return '/opt/google/chrome-unstable/chrome';
+ }
+ }
+ throw new Error(`Unable to detect browser executable path for '${channel}' on ${platform}.`);
+}
+//# sourceMappingURL=chrome.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js.map
new file mode 100644
index 0000000..a42c9fa
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/browser-data/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAEjE,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe,CAAC,GAAG;YACtB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;KAClB;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,6DAA6D;IAEvE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,GAAG,CAAC;QACzB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,IAAI,CAAC,IAAI,CACd,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,EAC5B,+BAA+B,EAC/B,UAAU,EACV,OAAO,EACP,2BAA2B,CAC5B,CAAC;QACJ,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC/C,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;KAChE;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAA6B;IAE7B,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CACzB,IAAI,GAAG,CACL,qFAAqF,CACtF,CACF,CAEA,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,OACE,IAKD,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,SAAiB;IAEjB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CACzB,IAAI,GAAG,CACL,0FAA0F,CAC3F,CACF,CAEA,CAAC;IACF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAEnB,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B;AACnD;;GAEG;AACH,WAAmB;IAEnB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CACzB,IAAI,GAAG,CACL,4FAA4F,CAC7F,CACF,CAEA,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAEjB,CAAC;AAChB,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAsC;IAEtC,IACE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAC1C,OAA+B,CAChC,EACD;QACA,OAAO,CACL,MAAM,iCAAiC,CAAC,OAA+B,CAAC,CACzE,CAAC,OAAO,CAAC;KACX;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC1B,2BAA2B;QAC3B,OAAO,CAAC,MAAM,mCAAmC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC;KACtE;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;QACpC,wDAAwD;QACxD,OAAO,CAAC,MAAM,+BAA+B,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC;KAClE;IACD,OAAO;AACT,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAyB,EACzB,OAA6B;IAE7B,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,QAAQ,OAAO,EAAE;gBACf,KAAK,oBAAoB,CAAC,MAAM;oBAC9B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,2CAA2C,CAAC;gBACnF,KAAK,oBAAoB,CAAC,IAAI;oBAC5B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,gDAAgD,CAAC;gBACxF,KAAK,oBAAoB,CAAC,MAAM;oBAC9B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,+CAA+C,CAAC;gBACvF,KAAK,oBAAoB,CAAC,GAAG;oBAC3B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,+CAA+C,CAAC;aACxF;QACH,KAAK,eAAe,CAAC,OAAO,CAAC;QAC7B,KAAK,eAAe,CAAC,GAAG;YACtB,QAAQ,OAAO,EAAE;gBACf,KAAK,oBAAoB,CAAC,MAAM;oBAC9B,OAAO,8DAA8D,CAAC;gBACxE,KAAK,oBAAoB,CAAC,IAAI;oBAC5B,OAAO,wEAAwE,CAAC;gBAClF,KAAK,oBAAoB,CAAC,MAAM;oBAC9B,OAAO,4EAA4E,CAAC;gBACtF,KAAK,oBAAoB,CAAC,GAAG;oBAC3B,OAAO,sEAAsE,CAAC;aACjF;QACH,KAAK,eAAe,CAAC,KAAK;YACxB,QAAQ,OAAO,EAAE;gBACf,KAAK,oBAAoB,CAAC,MAAM;oBAC9B,OAAO,2BAA2B,CAAC;gBACrC,KAAK,oBAAoB,CAAC,IAAI;oBAC5B,OAAO,gCAAgC,CAAC;gBAC1C,KAAK,oBAAoB,CAAC,GAAG;oBAC3B,OAAO,oCAAoC,CAAC;aAC/C;KACJ;IAED,MAAM,IAAI,KAAK,CACb,iDAAiD,OAAO,QAAQ,QAAQ,GAAG,CAC5E,CAAC;AACJ,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts
new file mode 100644
index 0000000..32a0ed1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts
@@ -0,0 +1,6 @@
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chromedriver.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts.map
new file mode 100644
index 0000000..1683a3f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromedriver.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chromedriver.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAAgE,GACtE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js
new file mode 100644
index 0000000..a4504e4
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js
@@ -0,0 +1,51 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+import { BrowserPlatform } from './types.js';
+function folder(platform) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+export function resolveDownloadPath(platform, buildId) {
+ return [buildId, folder(platform), `chromedriver-${folder(platform)}.zip`];
+}
+export function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join('chromedriver-' + folder(platform), 'chromedriver');
+ case BrowserPlatform.LINUX:
+ return path.join('chromedriver-linux64', 'chromedriver');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chromedriver-' + folder(platform), 'chromedriver.exe');
+ }
+}
+export { resolveBuildId } from './chrome.js';
+//# sourceMappingURL=chromedriver.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js.map
new file mode 100644
index 0000000..e55b028
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromedriver.js","sourceRoot":"","sources":["../../../src/browser-data/chromedriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe,CAAC,GAAG;YACtB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,OAAO,CAAC;KAClB;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,6DAA6D;IAEvE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,GAAG,CAAC;QACzB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAC;QACvE,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;QAC3D,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC;KAC5E;AACH,CAAC;AAED,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts
new file mode 100644
index 0000000..ca88107
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function resolveBuildId(platform: BrowserPlatform): Promise;
+//# sourceMappingURL=chromium.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts.map
new file mode 100644
index 0000000..30e3552
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromium.d.ts","sourceRoot":"","sources":["../../../src/browser-data/chromium.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AA+B3C,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAA8D,GACpE,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AACD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CAQjB"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js
new file mode 100644
index 0000000..acc320b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js
@@ -0,0 +1,67 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+import { getText } from '../httpUtil.js';
+import { BrowserPlatform } from './types.js';
+function archive(platform, buildId) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'chrome-linux';
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return 'chrome-mac';
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ // Windows archive name changed at r591479.
+ return parseInt(buildId, 10) > 591479 ? 'chrome-win' : 'chrome-win32';
+ }
+}
+function folder(platform) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'Linux_x64';
+ case BrowserPlatform.MAC_ARM:
+ return 'Mac_Arm';
+ case BrowserPlatform.MAC:
+ return 'Mac';
+ case BrowserPlatform.WIN32:
+ return 'Win';
+ case BrowserPlatform.WIN64:
+ return 'Win_x64';
+ }
+}
+export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://storage.googleapis.com/chromium-browser-snapshots') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+export function resolveDownloadPath(platform, buildId) {
+ return [folder(platform), buildId, `${archive(platform, buildId)}.zip`];
+}
+export function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join('chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium');
+ case BrowserPlatform.LINUX:
+ return path.join('chrome-linux', 'chrome');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chrome-win', 'chrome.exe');
+ }
+}
+export async function resolveBuildId(platform) {
+ return await getText(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`));
+}
+//# sourceMappingURL=chromium.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js.map
new file mode 100644
index 0000000..eeeb3c1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chromium.js","sourceRoot":"","sources":["../../../src/browser-data/chromium.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,SAAS,OAAO,CAAC,QAAyB,EAAE,OAAe;IACzD,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,cAAc,CAAC;QACxB,KAAK,eAAe,CAAC,OAAO,CAAC;QAC7B,KAAK,eAAe,CAAC,GAAG;YACtB,OAAO,YAAY,CAAC;QACtB,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,2CAA2C;YAC3C,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;KACzE;AACH,CAAC;AAED,SAAS,MAAM,CAAC,QAAyB;IACvC,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe,CAAC,GAAG;YACtB,OAAO,KAAK,CAAC;QACf,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC;QACf,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,OAAe,EACf,OAAO,GAAG,2DAA2D;IAErE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,OAAe;IAEf,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE;QAChB,KAAK,eAAe,CAAC,GAAG,CAAC;QACzB,KAAK,eAAe,CAAC,OAAO;YAC1B,OAAO,IAAI,CAAC,IAAI,CACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,OAAO,EACP,UAAU,CACX,CAAC;QACJ,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC7C,KAAK,eAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,eAAe,CAAC,KAAK;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;KAChD;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAyB;IAEzB,OAAO,MAAM,OAAO,CAClB,IAAI,GAAG,CACL,6DAA6D,MAAM,CACjE,QAAQ,CACT,cAAc,CAChB,CACF,CAAC;AACJ,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts
new file mode 100644
index 0000000..e1d2311
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform, ProfileOptions } from './types.js';
+export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;
+export declare function resolveDownloadPath(platform: BrowserPlatform, buildId: string): string[];
+export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
+export declare function resolveBuildId(channel?: 'FIREFOX_NIGHTLY'): Promise;
+export declare function createProfile(options: ProfileOptions): Promise;
+//# sourceMappingURL=firefox.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts.map
new file mode 100644
index 0000000..3dbfa8b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../../src/browser-data/firefox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAe3D,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,SAA2E,GACjF,MAAM,CAER;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAED,wBAAsB,cAAc,CAClC,OAAO,GAAE,iBAAqC,GAC7C,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1E"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js
new file mode 100644
index 0000000..fbd73a9
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js
@@ -0,0 +1,259 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import fs from 'fs';
+import path from 'path';
+import { getJSON } from '../httpUtil.js';
+import { BrowserPlatform } from './types.js';
+function archive(platform, buildId) {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return `firefox-${buildId}.en-US.${platform}-x86_64.tar.bz2`;
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return `firefox-${buildId}.en-US.mac.dmg`;
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return `firefox-${buildId}.en-US.${platform}.zip`;
+ }
+}
+export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central') {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+export function resolveDownloadPath(platform, buildId) {
+ return [archive(platform, buildId)];
+}
+export function relativeExecutablePath(platform, _buildId) {
+ switch (platform) {
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return path.join('Firefox Nightly.app', 'Contents', 'MacOS', 'firefox');
+ case BrowserPlatform.LINUX:
+ return path.join('firefox', 'firefox');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('firefox', 'firefox.exe');
+ }
+}
+export async function resolveBuildId(channel = 'FIREFOX_NIGHTLY') {
+ const versions = (await getJSON(new URL('https://product-details.mozilla.org/1.0/firefox_versions.json')));
+ const version = versions[channel];
+ if (!version) {
+ throw new Error(`Channel ${channel} is not found.`);
+ }
+ return version;
+}
+export async function createProfile(options) {
+ if (!fs.existsSync(options.path)) {
+ await fs.promises.mkdir(options.path, {
+ recursive: true,
+ });
+ }
+ await writePreferences({
+ preferences: {
+ ...defaultProfilePreferences(options.preferences),
+ ...options.preferences,
+ },
+ path: options.path,
+ });
+}
+function defaultProfilePreferences(extraPrefs) {
+ const server = 'dummy.test';
+ const defaultPrefs = {
+ // Make sure Shield doesn't hit the network.
+ 'app.normandy.api_url': '',
+ // Disable Firefox old build background check
+ 'app.update.checkInstallTime': false,
+ // Disable automatically upgrading Firefox
+ 'app.update.disabledForTesting': true,
+ // Increase the APZ content response timeout to 1 minute
+ 'apz.content_response_timeout': 60000,
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'browser.contentblocking.features.standard': '-tp,tpPrivate,cookieBehavior0,-cm,-fp',
+ // Enable the dump function: which sends messages to the system
+ // console
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
+ 'browser.dom.window.dump.enabled': true,
+ // Disable topstories
+ 'browser.newtabpage.activity-stream.feeds.system.topstories': false,
+ // Always display a blank page
+ 'browser.newtabpage.enabled': false,
+ // Background thumbnails in particular cause grief: and disabling
+ // thumbnails in general cannot hurt
+ 'browser.pagethumbnails.capturing_disabled': true,
+ // Disable safebrowsing components.
+ 'browser.safebrowsing.blockedURIs.enabled': false,
+ 'browser.safebrowsing.downloads.enabled': false,
+ 'browser.safebrowsing.malware.enabled': false,
+ 'browser.safebrowsing.passwords.enabled': false,
+ 'browser.safebrowsing.phishing.enabled': false,
+ // Disable updates to search engines.
+ 'browser.search.update': false,
+ // Do not restore the last open set of tabs if the browser has crashed
+ 'browser.sessionstore.resume_from_crash': false,
+ // Skip check for default browser on startup
+ 'browser.shell.checkDefaultBrowser': false,
+ // Disable newtabpage
+ 'browser.startup.homepage': 'about:blank',
+ // Do not redirect user when a milstone upgrade of Firefox is detected
+ 'browser.startup.homepage_override.mstone': 'ignore',
+ // Start with a blank page about:blank
+ 'browser.startup.page': 0,
+ // Do not allow background tabs to be zombified on Android: otherwise for
+ // tests that open additional tabs: the test harness tab itself might get
+ // unloaded
+ 'browser.tabs.disableBackgroundZombification': false,
+ // Do not warn when closing all other open tabs
+ 'browser.tabs.warnOnCloseOtherTabs': false,
+ // Do not warn when multiple tabs will be opened
+ 'browser.tabs.warnOnOpen': false,
+ // Do not automatically offer translations, as tests do not expect this.
+ 'browser.translations.automaticallyPopup': false,
+ // Disable the UI tour.
+ 'browser.uitour.enabled': false,
+ // Turn off search suggestions in the location bar so as not to trigger
+ // network connections.
+ 'browser.urlbar.suggest.searches': false,
+ // Disable first run splash page on Windows 10
+ 'browser.usedOnWindows10.introURL': '',
+ // Do not warn on quitting Firefox
+ 'browser.warnOnQuit': false,
+ // Defensively disable data reporting systems
+ 'datareporting.healthreport.documentServerURI': `http://${server}/dummy/healthreport/`,
+ 'datareporting.healthreport.logging.consoleEnabled': false,
+ 'datareporting.healthreport.service.enabled': false,
+ 'datareporting.healthreport.service.firstRun': false,
+ 'datareporting.healthreport.uploadEnabled': false,
+ // Do not show datareporting policy notifications which can interfere with tests
+ 'datareporting.policy.dataSubmissionEnabled': false,
+ 'datareporting.policy.dataSubmissionPolicyBypassNotification': true,
+ // DevTools JSONViewer sometimes fails to load dependencies with its require.js.
+ // This doesn't affect Puppeteer but spams console (Bug 1424372)
+ 'devtools.jsonview.enabled': false,
+ // Disable popup-blocker
+ 'dom.disable_open_during_load': false,
+ // Enable the support for File object creation in the content process
+ // Required for |Page.setFileInputFiles| protocol method.
+ 'dom.file.createInChild': true,
+ // Disable the ProcessHangMonitor
+ 'dom.ipc.reportProcessHangs': false,
+ // Disable slow script dialogues
+ 'dom.max_chrome_script_run_time': 0,
+ 'dom.max_script_run_time': 0,
+ // Only load extensions from the application and user profile
+ // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
+ 'extensions.autoDisableScopes': 0,
+ 'extensions.enabledScopes': 5,
+ // Disable metadata caching for installed add-ons by default
+ 'extensions.getAddons.cache.enabled': false,
+ // Disable installing any distribution extensions or add-ons.
+ 'extensions.installDistroAddons': false,
+ // Disabled screenshots extension
+ 'extensions.screenshots.disabled': true,
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.enabled': false,
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.notifyUser': false,
+ // Make sure opening about:addons will not hit the network
+ 'extensions.webservice.discoverURL': `http://${server}/dummy/discoveryURL`,
+ // Temporarily force disable BFCache in parent (https://bit.ly/bug-1732263)
+ 'fission.bfcacheInParent': false,
+ // Force all web content to use a single content process
+ 'fission.webContentIsolationStrategy': 0,
+ // Allow the application to have focus even it runs in the background
+ 'focusmanager.testmode': true,
+ // Disable useragent updates
+ 'general.useragent.updates.enabled': false,
+ // Always use network provider for geolocation tests so we bypass the
+ // macOS dialog raised by the corelocation provider
+ 'geo.provider.testing': true,
+ // Do not scan Wifi
+ 'geo.wifi.scan': false,
+ // No hang monitor
+ 'hangmonitor.timeout': 0,
+ // Show chrome errors and warnings in the error console
+ 'javascript.options.showInConsole': true,
+ // Disable download and usage of OpenH264: and Widevine plugins
+ 'media.gmp-manager.updateEnabled': false,
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'network.cookie.cookieBehavior': 0,
+ // Disable experimental feature that is only available in Nightly
+ 'network.cookie.sameSite.laxByDefault': false,
+ // Do not prompt for temporary redirects
+ 'network.http.prompt-temp-redirect': false,
+ // Disable speculative connections so they are not reported as leaking
+ // when they are hanging around
+ 'network.http.speculative-parallel-limit': 0,
+ // Do not automatically switch between offline and online
+ 'network.manage-offline-status': false,
+ // Make sure SNTP requests do not hit the network
+ 'network.sntp.pools': server,
+ // Disable Flash.
+ 'plugin.state.flash': 0,
+ 'privacy.trackingprotection.enabled': false,
+ // Can be removed once Firefox 89 is no longer supported
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1710839
+ 'remote.enabled': true,
+ // Don't do network connections for mitm priming
+ 'security.certerrors.mitm.priming.enabled': false,
+ // Local documents have access to all other local documents,
+ // including directory listings
+ 'security.fileuri.strict_origin_policy': false,
+ // Do not wait for the notification button security delay
+ 'security.notification_enable_delay': 0,
+ // Ensure blocklist updates do not hit the network
+ 'services.settings.server': `http://${server}/dummy/blocklist/`,
+ // Do not automatically fill sign-in forms with known usernames and
+ // passwords
+ 'signon.autofillForms': false,
+ // Disable password capture, so that tests that include forms are not
+ // influenced by the presence of the persistent doorhanger notification
+ 'signon.rememberSignons': false,
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url': 'about:blank',
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url.additional': '',
+ // Disable browser animations (tabs, fullscreen, sliding alerts)
+ 'toolkit.cosmeticAnimations.enabled': false,
+ // Prevent starting into safe mode after application crashes
+ 'toolkit.startup.max_resumed_crashes': -1,
+ };
+ return Object.assign(defaultPrefs, extraPrefs);
+}
+/**
+ * Populates the user.js file with custom preferences as needed to allow
+ * Firefox's CDP support to properly function. These preferences will be
+ * automatically copied over to prefs.js during startup of Firefox. To be
+ * able to restore the original values of preferences a backup of prefs.js
+ * will be created.
+ *
+ * @param prefs - List of preferences to add.
+ * @param profilePath - Firefox profile to write the preferences to.
+ */
+async function writePreferences(options) {
+ const lines = Object.entries(options.preferences).map(([key, value]) => {
+ return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
+ });
+ await fs.promises.writeFile(path.join(options.path, 'user.js'), lines.join('\n'));
+ // Create a backup of the preferences file if it already exitsts.
+ const prefsPath = path.join(options.path, 'prefs.js');
+ if (fs.existsSync(prefsPath)) {
+ const prefsBackupPath = path.join(options.path, 'prefs.js.puppeteer');
+ await fs.promises.copyFile(prefsPath, prefsBackupPath);
+ }
+}
+//# sourceMappingURL=firefox.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js.map
new file mode 100644
index 0000000..a362e0c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/browser-data/firefox.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts
new file mode 100644
index 0000000..8d8f96c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts
@@ -0,0 +1,74 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chrome from './chrome.js';
+import * as firefox from './firefox.js';
+/**
+ * Supported browsers.
+ *
+ * @public
+ */
+export declare enum Browser {
+ CHROME = "chrome",
+ CHROMEHEADLESSSHELL = "chrome-headless-shell",
+ CHROMIUM = "chromium",
+ FIREFOX = "firefox",
+ CHROMEDRIVER = "chromedriver"
+}
+/**
+ * Platform names used to identify a OS platfrom x architecture combination in the way
+ * that is relevant for the browser download.
+ *
+ * @public
+ */
+export declare enum BrowserPlatform {
+ LINUX = "linux",
+ MAC = "mac",
+ MAC_ARM = "mac_arm",
+ WIN32 = "win32",
+ WIN64 = "win64"
+}
+export declare const downloadUrls: {
+ chrome: typeof chrome.resolveDownloadUrl;
+ chromium: typeof chrome.resolveDownloadUrl;
+ firefox: typeof firefox.resolveDownloadUrl;
+};
+/**
+ * @public
+ */
+export declare enum BrowserTag {
+ CANARY = "canary",
+ BETA = "beta",
+ DEV = "dev",
+ STABLE = "stable",
+ LATEST = "latest"
+}
+/**
+ * @public
+ */
+export interface ProfileOptions {
+ preferences: Record;
+ path: string;
+}
+/**
+ * @public
+ */
+export declare enum ChromeReleaseChannel {
+ STABLE = "stable",
+ DEV = "dev",
+ CANARY = "canary",
+ BETA = "beta"
+}
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts.map
new file mode 100644
index 0000000..b91954b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser-data/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;;GAIG;AACH,oBAAY,OAAO;IACjB,MAAM,WAAW;IACjB,mBAAmB,0BAA0B;IAC7C,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,YAAY,iBAAiB;CAC9B;AAED;;;;;GAKG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,IAAI,SAAS;CACd"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js
new file mode 100644
index 0000000..a88e03b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js
@@ -0,0 +1,71 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as chrome from './chrome.js';
+import * as firefox from './firefox.js';
+/**
+ * Supported browsers.
+ *
+ * @public
+ */
+export var Browser;
+(function (Browser) {
+ Browser["CHROME"] = "chrome";
+ Browser["CHROMEHEADLESSSHELL"] = "chrome-headless-shell";
+ Browser["CHROMIUM"] = "chromium";
+ Browser["FIREFOX"] = "firefox";
+ Browser["CHROMEDRIVER"] = "chromedriver";
+})(Browser || (Browser = {}));
+/**
+ * Platform names used to identify a OS platfrom x architecture combination in the way
+ * that is relevant for the browser download.
+ *
+ * @public
+ */
+export var BrowserPlatform;
+(function (BrowserPlatform) {
+ BrowserPlatform["LINUX"] = "linux";
+ BrowserPlatform["MAC"] = "mac";
+ BrowserPlatform["MAC_ARM"] = "mac_arm";
+ BrowserPlatform["WIN32"] = "win32";
+ BrowserPlatform["WIN64"] = "win64";
+})(BrowserPlatform || (BrowserPlatform = {}));
+export const downloadUrls = {
+ [Browser.CHROME]: chrome.resolveDownloadUrl,
+ [Browser.CHROMIUM]: chrome.resolveDownloadUrl,
+ [Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+/**
+ * @public
+ */
+export var BrowserTag;
+(function (BrowserTag) {
+ BrowserTag["CANARY"] = "canary";
+ BrowserTag["BETA"] = "beta";
+ BrowserTag["DEV"] = "dev";
+ BrowserTag["STABLE"] = "stable";
+ BrowserTag["LATEST"] = "latest";
+})(BrowserTag || (BrowserTag = {}));
+/**
+ * @public
+ */
+export var ChromeReleaseChannel;
+(function (ChromeReleaseChannel) {
+ ChromeReleaseChannel["STABLE"] = "stable";
+ ChromeReleaseChannel["DEV"] = "dev";
+ ChromeReleaseChannel["CANARY"] = "canary";
+ ChromeReleaseChannel["BETA"] = "beta";
+})(ChromeReleaseChannel || (ChromeReleaseChannel = {}));
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js.map
new file mode 100644
index 0000000..b8abc58
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/browser-data/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAN,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,4BAAiB,CAAA;IACjB,wDAA6C,CAAA;IAC7C,gCAAqB,CAAA;IACrB,8BAAmB,CAAA;IACnB,wCAA6B,CAAA;AAC/B,CAAC,EANW,OAAO,KAAP,OAAO,QAMlB;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,8BAAW,CAAA;IACX,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,kBAAkB;IAC3C,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,kBAAkB;IAC7C,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB;CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAUD;;GAEG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,mCAAW,CAAA;IACX,yCAAiB,CAAA;IACjB,qCAAa,CAAA;AACf,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts
new file mode 100644
index 0000000..b8b7fd2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts
@@ -0,0 +1,18 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import debug from 'debug';
+export { debug };
+//# sourceMappingURL=debug.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts.map
new file mode 100644
index 0000000..0e8f65d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAC,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js
new file mode 100644
index 0000000..9d430f4
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js
@@ -0,0 +1,18 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import debug from 'debug';
+export { debug };
+//# sourceMappingURL=debug.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js.map
new file mode 100644
index 0000000..2ea3834
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/debug.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAC,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts
new file mode 100644
index 0000000..706bdf0
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { BrowserPlatform } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export declare function detectBrowserPlatform(): BrowserPlatform | undefined;
+//# sourceMappingURL=detectPlatform.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts.map
new file mode 100644
index 0000000..e1abc46
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"detectPlatform.d.ts","sourceRoot":"","sources":["../../src/detectPlatform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,GAAG,SAAS,CAkBnE"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js
new file mode 100644
index 0000000..7dc7cea
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js
@@ -0,0 +1,56 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import os from 'os';
+import { BrowserPlatform } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export function detectBrowserPlatform() {
+ const platform = os.platform();
+ switch (platform) {
+ case 'darwin':
+ return os.arch() === 'arm64'
+ ? BrowserPlatform.MAC_ARM
+ : BrowserPlatform.MAC;
+ case 'linux':
+ return BrowserPlatform.LINUX;
+ case 'win32':
+ return os.arch() === 'x64' ||
+ // Windows 11 for ARM supports x64 emulation
+ (os.arch() === 'arm64' && isWindows11(os.release()))
+ ? BrowserPlatform.WIN64
+ : BrowserPlatform.WIN32;
+ default:
+ return undefined;
+ }
+}
+/**
+ * Windows 11 is identified by the version 10.0.22000 or greater
+ * @internal
+ */
+function isWindows11(version) {
+ const parts = version.split('.');
+ if (parts.length > 2) {
+ const major = parseInt(parts[0], 10);
+ const minor = parseInt(parts[1], 10);
+ const patch = parseInt(parts[2], 10);
+ return (major > 10 ||
+ (major === 10 && minor > 0) ||
+ (major === 10 && minor === 0 && patch >= 22000));
+ }
+ return false;
+}
+//# sourceMappingURL=detectPlatform.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js.map
new file mode 100644
index 0000000..be5cab9
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"detectPlatform.js","sourceRoot":"","sources":["../../src/detectPlatform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO;gBAC1B,CAAC,CAAC,eAAe,CAAC,OAAO;gBACzB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;gBACxB,4CAA4C;gBAC5C,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,CAAC,CAAC,eAAe,CAAC,KAAK;gBACvB,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5B;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,CACL,KAAK,GAAG,EAAE;YACV,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;YAC3B,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAChD,CAAC;KACH;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts
new file mode 100644
index 0000000..e64923d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts
@@ -0,0 +1,20 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @internal
+ */
+export declare function unpackArchive(archivePath: string, folderPath: string): Promise;
+//# sourceMappingURL=fileUtil.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts.map
new file mode 100644
index 0000000..7f6acfa
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"fileUtil.d.ts","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js
new file mode 100644
index 0000000..ad178f8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js
@@ -0,0 +1,80 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { exec as execChildProcess } from 'child_process';
+import { createReadStream } from 'fs';
+import { mkdir, readdir } from 'fs/promises';
+import * as path from 'path';
+import { promisify } from 'util';
+import extractZip from 'extract-zip';
+import tar from 'tar-fs';
+import bzip from 'unbzip2-stream';
+const exec = promisify(execChildProcess);
+/**
+ * @internal
+ */
+export async function unpackArchive(archivePath, folderPath) {
+ if (archivePath.endsWith('.zip')) {
+ await extractZip(archivePath, { dir: folderPath });
+ }
+ else if (archivePath.endsWith('.tar.bz2')) {
+ await extractTar(archivePath, folderPath);
+ }
+ else if (archivePath.endsWith('.dmg')) {
+ await mkdir(folderPath);
+ await installDMG(archivePath, folderPath);
+ }
+ else {
+ throw new Error(`Unsupported archive format: ${archivePath}`);
+ }
+}
+/**
+ * @internal
+ */
+function extractTar(tarPath, folderPath) {
+ return new Promise((fulfill, reject) => {
+ const tarStream = tar.extract(folderPath);
+ tarStream.on('error', reject);
+ tarStream.on('finish', fulfill);
+ const readStream = createReadStream(tarPath);
+ readStream.pipe(bzip()).pipe(tarStream);
+ });
+}
+/**
+ * @internal
+ */
+async function installDMG(dmgPath, folderPath) {
+ const { stdout } = await exec(`hdiutil attach -nobrowse -noautoopen "${dmgPath}"`);
+ const volumes = stdout.match(/\/Volumes\/(.*)/m);
+ if (!volumes) {
+ throw new Error(`Could not find volume path in ${stdout}`);
+ }
+ const mountPath = volumes[0];
+ try {
+ const fileNames = await readdir(mountPath);
+ const appName = fileNames.find(item => {
+ return typeof item === 'string' && item.endsWith('.app');
+ });
+ if (!appName) {
+ throw new Error(`Cannot find app in ${mountPath}`);
+ }
+ const mountedPath = path.join(mountPath, appName);
+ await exec(`cp -R "${mountedPath}" "${folderPath}"`);
+ }
+ finally {
+ await exec(`hdiutil detach "${mountPath}" -quiet`);
+ }
+}
+//# sourceMappingURL=fileUtil.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js.map
new file mode 100644
index 0000000..5bc7695
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/fileUtil.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts
new file mode 100644
index 0000000..6e52d1e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts
@@ -0,0 +1,28 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+///
+import * as http from 'http';
+import { URL } from 'url';
+export declare function headHttpRequest(url: URL): Promise;
+export declare function httpRequest(url: URL, method: string, response: (x: http.IncomingMessage) => void, keepAlive?: boolean): http.ClientRequest;
+/**
+ * @internal
+ */
+export declare function downloadFile(url: URL, destinationPath: string, progressCallback?: (downloadedBytes: number, totalBytes: number) => void): Promise;
+export declare function getJSON(url: URL): Promise;
+export declare function getText(url: URL): Promise;
+//# sourceMappingURL=httpUtil.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts.map
new file mode 100644
index 0000000..5996fa8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"httpUtil.d.ts","sourceRoot":"","sources":["../../src/httpUtil.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,GAAG,EAAmB,MAAM,KAAK,CAAC;AAI1C,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB1D;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,KAAK,IAAI,EAC3C,SAAS,UAAO,GACf,IAAI,CAAC,aAAa,CA8BpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,MAAM,EACvB,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACvE,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BjD"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js
new file mode 100644
index 0000000..cf95ab2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js
@@ -0,0 +1,131 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { createWriteStream } from 'fs';
+import * as http from 'http';
+import * as https from 'https';
+import { URL, urlToHttpOptions } from 'url';
+import { ProxyAgent } from 'proxy-agent';
+export function headHttpRequest(url) {
+ return new Promise(resolve => {
+ const request = httpRequest(url, 'HEAD', response => {
+ // consume response data free node process
+ response.resume();
+ resolve(response.statusCode === 200);
+ }, false);
+ request.on('error', () => {
+ resolve(false);
+ });
+ });
+}
+export function httpRequest(url, method, response, keepAlive = true) {
+ const options = {
+ protocol: url.protocol,
+ hostname: url.hostname,
+ port: url.port,
+ path: url.pathname + url.search,
+ method,
+ headers: keepAlive ? { Connection: 'keep-alive' } : undefined,
+ auth: urlToHttpOptions(url).auth,
+ agent: new ProxyAgent(),
+ };
+ const requestCallback = (res) => {
+ if (res.statusCode &&
+ res.statusCode >= 300 &&
+ res.statusCode < 400 &&
+ res.headers.location) {
+ httpRequest(new URL(res.headers.location), method, response);
+ }
+ else {
+ response(res);
+ }
+ };
+ const request = options.protocol === 'https:'
+ ? https.request(options, requestCallback)
+ : http.request(options, requestCallback);
+ request.end();
+ return request;
+}
+/**
+ * @internal
+ */
+export function downloadFile(url, destinationPath, progressCallback) {
+ return new Promise((resolve, reject) => {
+ let downloadedBytes = 0;
+ let totalBytes = 0;
+ function onData(chunk) {
+ downloadedBytes += chunk.length;
+ progressCallback(downloadedBytes, totalBytes);
+ }
+ const request = httpRequest(url, 'GET', response => {
+ if (response.statusCode !== 200) {
+ const error = new Error(`Download failed: server returned code ${response.statusCode}. URL: ${url}`);
+ // consume response data to free up memory
+ response.resume();
+ reject(error);
+ return;
+ }
+ const file = createWriteStream(destinationPath);
+ file.on('finish', () => {
+ return resolve();
+ });
+ file.on('error', error => {
+ return reject(error);
+ });
+ response.pipe(file);
+ totalBytes = parseInt(response.headers['content-length'], 10);
+ if (progressCallback) {
+ response.on('data', onData);
+ }
+ });
+ request.on('error', error => {
+ return reject(error);
+ });
+ });
+}
+export async function getJSON(url) {
+ const text = await getText(url);
+ try {
+ return JSON.parse(text);
+ }
+ catch {
+ throw new Error('Could not parse JSON from ' + url.toString());
+ }
+}
+export function getText(url) {
+ return new Promise((resolve, reject) => {
+ const request = httpRequest(url, 'GET', response => {
+ let data = '';
+ if (response.statusCode && response.statusCode >= 400) {
+ return reject(new Error(`Got status code ${response.statusCode}`));
+ }
+ response.on('data', chunk => {
+ data += chunk;
+ });
+ response.on('end', () => {
+ try {
+ return resolve(String(data));
+ }
+ catch {
+ return reject(new Error('Chrome version not found'));
+ }
+ });
+ }, false);
+ request.on('error', err => {
+ reject(err);
+ });
+ });
+}
+//# sourceMappingURL=httpUtil.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js.map
new file mode 100644
index 0000000..99d6637
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"httpUtil.js","sourceRoot":"","sources":["../../src/httpUtil.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts
new file mode 100644
index 0000000..68fb99d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2017 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Browser, BrowserPlatform } from './browser-data/browser-data.js';
+import { InstalledBrowser } from './Cache.js';
+/**
+ * @public
+ */
+export interface InstallOptions {
+ /**
+ * Determines the path to download browsers to.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to install.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+ /**
+ * Provides information about the progress of the download.
+ */
+ downloadProgressCallback?: (downloadedBytes: number, totalBytes: number) => void;
+ /**
+ * Determines the host that will be used for downloading.
+ *
+ * @defaultValue Either
+ *
+ * - https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing or
+ * - https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central
+ *
+ */
+ baseUrl?: string;
+ /**
+ * Whether to unpack and install browser archives.
+ *
+ * @defaultValue `true`
+ */
+ unpack?: boolean;
+}
+/**
+ * @public
+ */
+export declare function install(options: InstallOptions & {
+ unpack?: true;
+}): Promise;
+export declare function install(options: InstallOptions & {
+ unpack: false;
+}): Promise;
+/**
+ * @public
+ */
+export interface UninstallOptions {
+ /**
+ * Determines the platform for the browser binary.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which browser to uninstall.
+ */
+ browser: Browser;
+ /**
+ * The browser build to uninstall
+ */
+ buildId: string;
+}
+/**
+ *
+ * @public
+ */
+export declare function uninstall(options: UninstallOptions): Promise;
+/**
+ * @public
+ */
+export interface GetInstalledBrowsersOptions {
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+}
+/**
+ * Returns metadata about browsers installed in the cache directory.
+ *
+ * @public
+ */
+export declare function getInstalledBrowsers(options: GetInstalledBrowsersOptions): Promise;
+/**
+ * @public
+ */
+export declare function canDownload(options: InstallOptions): Promise;
+//# sourceMappingURL=install.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts.map
new file mode 100644
index 0000000..4a825e7
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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;;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;CAClB;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B,wBAAgB,OAAO,CACrB,OAAO,EAAE,cAAc,GAAG;IAAC,MAAM,EAAE,KAAK,CAAA;CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;AA+EnB;;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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js
new file mode 100644
index 0000000..892ab6c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js
@@ -0,0 +1,127 @@
+/**
+ * Copyright 2017 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import assert from 'assert';
+import { existsSync } from 'fs';
+import { mkdir, unlink } from 'fs/promises';
+import os from 'os';
+import path from 'path';
+import { downloadUrls, } from './browser-data/browser-data.js';
+import { Cache, InstalledBrowser } from './Cache.js';
+import { debug } from './debug.js';
+import { detectBrowserPlatform } from './detectPlatform.js';
+import { unpackArchive } from './fileUtil.js';
+import { downloadFile, headHttpRequest } from './httpUtil.js';
+const debugInstall = debug('puppeteer:browsers:install');
+const times = new Map();
+function debugTime(label) {
+ times.set(label, process.hrtime());
+}
+function debugTimeEnd(label) {
+ const end = process.hrtime();
+ const start = times.get(label);
+ if (!start) {
+ return;
+ }
+ const duration = end[0] * 1000 + end[1] / 1e6 - (start[0] * 1000 + start[1] / 1e6); // calculate duration in milliseconds
+ debugInstall(`Duration for ${label}: ${duration}ms`);
+}
+export async function install(options) {
+ options.platform ??= detectBrowserPlatform();
+ options.unpack ??= true;
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
+ }
+ const url = getDownloadUrl(options.browser, options.platform, options.buildId, options.baseUrl);
+ const fileName = url.toString().split('/').pop();
+ assert(fileName, `A malformed download URL was found: ${url}.`);
+ const cache = new Cache(options.cacheDir);
+ const browserRoot = cache.browserRoot(options.browser);
+ const archivePath = path.join(browserRoot, `${options.buildId}-${fileName}`);
+ if (!existsSync(browserRoot)) {
+ await mkdir(browserRoot, { recursive: true });
+ }
+ if (!options.unpack) {
+ if (existsSync(archivePath)) {
+ return archivePath;
+ }
+ debugInstall(`Downloading binary from ${url}`);
+ debugTime('download');
+ await downloadFile(url, archivePath, options.downloadProgressCallback);
+ debugTimeEnd('download');
+ return archivePath;
+ }
+ const outputPath = cache.installationDir(options.browser, options.platform, options.buildId);
+ if (existsSync(outputPath)) {
+ return new InstalledBrowser(cache, options.browser, options.buildId, options.platform);
+ }
+ try {
+ debugInstall(`Downloading binary from ${url}`);
+ try {
+ debugTime('download');
+ await downloadFile(url, archivePath, options.downloadProgressCallback);
+ }
+ finally {
+ debugTimeEnd('download');
+ }
+ debugInstall(`Installing ${archivePath} to ${outputPath}`);
+ try {
+ debugTime('extract');
+ await unpackArchive(archivePath, outputPath);
+ }
+ finally {
+ debugTimeEnd('extract');
+ }
+ }
+ finally {
+ if (existsSync(archivePath)) {
+ await unlink(archivePath);
+ }
+ }
+ return new InstalledBrowser(cache, options.browser, options.buildId, options.platform);
+}
+/**
+ *
+ * @public
+ */
+export async function uninstall(options) {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(`Cannot detect the browser platform for: ${os.platform()} (${os.arch()})`);
+ }
+ new Cache(options.cacheDir).uninstall(options.browser, options.platform, options.buildId);
+}
+/**
+ * Returns metadata about browsers installed in the cache directory.
+ *
+ * @public
+ */
+export async function getInstalledBrowsers(options) {
+ return new Cache(options.cacheDir).getInstalledBrowsers();
+}
+/**
+ * @public
+ */
+export async function canDownload(options) {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
+ }
+ return await headHttpRequest(getDownloadUrl(options.browser, options.platform, options.buildId, options.baseUrl));
+}
+function getDownloadUrl(browser, platform, buildId, baseUrl) {
+ return new URL(downloadUrls[browser](platform, buildId, baseUrl));
+}
+//# sourceMappingURL=install.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js.map
new file mode 100644
index 0000000..2c58165
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/install.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts
new file mode 100644
index 0000000..f60e2b9
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts
@@ -0,0 +1,134 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///
+///
+import childProcess from 'child_process';
+import { Browser, BrowserPlatform, ChromeReleaseChannel } from './browser-data/browser-data.js';
+/**
+ * @public
+ */
+export interface ComputeExecutablePathOptions {
+ /**
+ * Root path to the storage directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+}
+/**
+ * @public
+ */
+export declare function computeExecutablePath(options: ComputeExecutablePathOptions): string;
+/**
+ * @public
+ */
+export interface SystemOptions {
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Release channel to look for on the system.
+ */
+ channel: ChromeReleaseChannel;
+}
+/**
+ * @public
+ */
+export declare function computeSystemExecutablePath(options: SystemOptions): string;
+/**
+ * @public
+ */
+export interface LaunchOptions {
+ executablePath: string;
+ pipe?: boolean;
+ dumpio?: boolean;
+ args?: string[];
+ env?: Record;
+ handleSIGINT?: boolean;
+ handleSIGTERM?: boolean;
+ handleSIGHUP?: boolean;
+ detached?: boolean;
+ onExit?: () => Promise;
+}
+/**
+ * @public
+ */
+export declare function launch(opts: LaunchOptions): Process;
+/**
+ * @public
+ */
+export declare const CDP_WEBSOCKET_ENDPOINT_REGEX: RegExp;
+/**
+ * @public
+ */
+export declare const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX: RegExp;
+/**
+ * @public
+ */
+export declare class Process {
+ #private;
+ constructor(opts: LaunchOptions);
+ get nodeProcess(): childProcess.ChildProcess;
+ close(): Promise;
+ hasClosed(): Promise;
+ kill(): void;
+ waitForLineOutput(regex: RegExp, timeout?: number): Promise;
+}
+/**
+ * @internal
+ */
+export interface ErrorLike extends Error {
+ name: string;
+ message: string;
+}
+/**
+ * @internal
+ */
+export declare function isErrorLike(obj: unknown): obj is ErrorLike;
+/**
+ * @internal
+ */
+export declare function isErrnoException(obj: unknown): obj is NodeJS.ErrnoException;
+/**
+ * @public
+ */
+export declare class TimeoutError extends Error {
+ /**
+ * @internal
+ */
+ constructor(message?: string);
+}
+//# sourceMappingURL=launch.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts.map
new file mode 100644
index 0000000..eacb5f1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,OAAO,YAAY,MAAM,eAAe,CAAC;AAMzC,OAAO,EACL,OAAO,EACP,eAAe,EAGf,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAOxC;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;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;CACjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAgBR;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAoB1E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,QACF,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,uCAAuC,QACP,CAAC;AAE9C;;GAEG;AACH,qBAAa,OAAO;;gBAYN,IAAI,EAAE,aAAa;IA8E/B,IAAI,WAAW,IAAI,YAAY,CAAC,YAAY,CAE3C;IA4CK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,IAAI,IAAI,IAAI;IAwDZ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA+D/D;AAuBD;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAI1D;AACD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,cAAc,CAK3E;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;OAEG;gBACS,OAAO,CAAC,EAAE,MAAM;CAK7B"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js
new file mode 100644
index 0000000..2af1e3b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js
@@ -0,0 +1,339 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import childProcess from 'child_process';
+import { accessSync } from 'fs';
+import os from 'os';
+import path from 'path';
+import readline from 'readline';
+import { executablePathByBrowser, resolveSystemExecutablePath, } from './browser-data/browser-data.js';
+import { Cache } from './Cache.js';
+import { debug } from './debug.js';
+import { detectBrowserPlatform } from './detectPlatform.js';
+const debugLaunch = debug('puppeteer:browsers:launcher');
+/**
+ * @public
+ */
+export function computeExecutablePath(options) {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
+ }
+ const installationDir = new Cache(options.cacheDir).installationDir(options.browser, options.platform, options.buildId);
+ return path.join(installationDir, executablePathByBrowser[options.browser](options.platform, options.buildId));
+}
+/**
+ * @public
+ */
+export function computeSystemExecutablePath(options) {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
+ }
+ const path = resolveSystemExecutablePath(options.browser, options.platform, options.channel);
+ try {
+ accessSync(path);
+ }
+ catch (error) {
+ throw new Error(`Could not find Google Chrome executable for channel '${options.channel}' at '${path}'.`);
+ }
+ return path;
+}
+/**
+ * @public
+ */
+export function launch(opts) {
+ return new Process(opts);
+}
+/**
+ * @public
+ */
+export const CDP_WEBSOCKET_ENDPOINT_REGEX = /^DevTools listening on (ws:\/\/.*)$/;
+/**
+ * @public
+ */
+export const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX = /^WebDriver BiDi listening on (ws:\/\/.*)$/;
+/**
+ * @public
+ */
+export class Process {
+ #executablePath;
+ #args;
+ #browserProcess;
+ #exited = false;
+ // The browser process can be closed externally or from the driver process. We
+ // need to invoke the hooks only once though but we don't know how many times
+ // we will be invoked.
+ #hooksRan = false;
+ #onExitHook = async () => { };
+ #browserProcessExiting;
+ constructor(opts) {
+ this.#executablePath = opts.executablePath;
+ this.#args = opts.args ?? [];
+ opts.pipe ??= false;
+ opts.dumpio ??= false;
+ opts.handleSIGINT ??= true;
+ opts.handleSIGTERM ??= true;
+ opts.handleSIGHUP ??= true;
+ // On non-windows platforms, `detached: true` makes child process a
+ // leader of a new process group, making it possible to kill child
+ // process tree with `.kill(-pid)` command. @see
+ // https://nodejs.org/api/child_process.html#child_process_options_detached
+ opts.detached ??= process.platform !== 'win32';
+ const stdio = this.#configureStdio({
+ pipe: opts.pipe,
+ dumpio: opts.dumpio,
+ });
+ debugLaunch(`Launching ${this.#executablePath} ${this.#args.join(' ')}`, {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ });
+ this.#browserProcess = childProcess.spawn(this.#executablePath, this.#args, {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ });
+ debugLaunch(`Launched ${this.#browserProcess.pid}`);
+ if (opts.dumpio) {
+ this.#browserProcess.stderr?.pipe(process.stderr);
+ this.#browserProcess.stdout?.pipe(process.stdout);
+ }
+ process.on('exit', this.#onDriverProcessExit);
+ if (opts.handleSIGINT) {
+ process.on('SIGINT', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGTERM) {
+ process.on('SIGTERM', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGHUP) {
+ process.on('SIGHUP', this.#onDriverProcessSignal);
+ }
+ if (opts.onExit) {
+ this.#onExitHook = opts.onExit;
+ }
+ this.#browserProcessExiting = new Promise((resolve, reject) => {
+ this.#browserProcess.once('exit', async () => {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} onExit`);
+ this.#clearListeners();
+ this.#exited = true;
+ try {
+ await this.#runHooks();
+ }
+ catch (err) {
+ reject(err);
+ return;
+ }
+ resolve();
+ });
+ });
+ }
+ async #runHooks() {
+ if (this.#hooksRan) {
+ return;
+ }
+ this.#hooksRan = true;
+ await this.#onExitHook();
+ }
+ get nodeProcess() {
+ return this.#browserProcess;
+ }
+ #configureStdio(opts) {
+ if (opts.pipe) {
+ if (opts.dumpio) {
+ return ['ignore', 'pipe', 'pipe', 'pipe', 'pipe'];
+ }
+ else {
+ return ['ignore', 'ignore', 'ignore', 'pipe', 'pipe'];
+ }
+ }
+ else {
+ if (opts.dumpio) {
+ return ['pipe', 'pipe', 'pipe'];
+ }
+ else {
+ return ['pipe', 'ignore', 'pipe'];
+ }
+ }
+ }
+ #clearListeners() {
+ process.off('exit', this.#onDriverProcessExit);
+ process.off('SIGINT', this.#onDriverProcessSignal);
+ process.off('SIGTERM', this.#onDriverProcessSignal);
+ process.off('SIGHUP', this.#onDriverProcessSignal);
+ }
+ #onDriverProcessExit = (_code) => {
+ this.kill();
+ };
+ #onDriverProcessSignal = (signal) => {
+ switch (signal) {
+ case 'SIGINT':
+ this.kill();
+ process.exit(130);
+ case 'SIGTERM':
+ case 'SIGHUP':
+ void this.close();
+ break;
+ }
+ };
+ async close() {
+ await this.#runHooks();
+ if (!this.#exited) {
+ this.kill();
+ }
+ return this.#browserProcessExiting;
+ }
+ hasClosed() {
+ return this.#browserProcessExiting;
+ }
+ kill() {
+ debugLaunch(`Trying to kill ${this.#browserProcess.pid}`);
+ // If the process failed to launch (for example if the browser executable path
+ // is invalid), then the process does not get a pid assigned. A call to
+ // `proc.kill` would error, as the `pid` to-be-killed can not be found.
+ if (this.#browserProcess &&
+ this.#browserProcess.pid &&
+ pidExists(this.#browserProcess.pid)) {
+ try {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} exists`);
+ if (process.platform === 'win32') {
+ try {
+ childProcess.execSync(`taskkill /pid ${this.#browserProcess.pid} /T /F`);
+ }
+ catch (error) {
+ debugLaunch(`Killing ${this.#browserProcess.pid} using taskkill failed`, error);
+ // taskkill can fail to kill the process e.g. due to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill();
+ }
+ }
+ else {
+ // on linux the process group can be killed with the group id prefixed with
+ // a minus sign. The process group id is the group leader's pid.
+ const processGroupId = -this.#browserProcess.pid;
+ try {
+ process.kill(processGroupId, 'SIGKILL');
+ }
+ catch (error) {
+ debugLaunch(`Killing ${this.#browserProcess.pid} using process.kill failed`, error);
+ // Killing the process group can fail due e.g. to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill('SIGKILL');
+ }
+ }
+ }
+ catch (error) {
+ throw new Error(`${PROCESS_ERROR_EXPLANATION}\nError cause: ${isErrorLike(error) ? error.stack : error}`);
+ }
+ }
+ this.#clearListeners();
+ }
+ waitForLineOutput(regex, timeout = 0) {
+ if (!this.#browserProcess.stderr) {
+ throw new Error('`browserProcess` does not have stderr.');
+ }
+ const rl = readline.createInterface(this.#browserProcess.stderr);
+ let stderr = '';
+ return new Promise((resolve, reject) => {
+ rl.on('line', onLine);
+ rl.on('close', onClose);
+ this.#browserProcess.on('exit', onClose);
+ this.#browserProcess.on('error', onClose);
+ const timeoutId = timeout > 0 ? setTimeout(onTimeout, timeout) : undefined;
+ const cleanup = () => {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ rl.off('line', onLine);
+ rl.off('close', onClose);
+ this.#browserProcess.off('exit', onClose);
+ this.#browserProcess.off('error', onClose);
+ };
+ function onClose(error) {
+ cleanup();
+ reject(new Error([
+ `Failed to launch the browser process!${error ? ' ' + error.message : ''}`,
+ stderr,
+ '',
+ 'TROUBLESHOOTING: https://pptr.dev/troubleshooting',
+ '',
+ ].join('\n')));
+ }
+ function onTimeout() {
+ cleanup();
+ reject(new TimeoutError(`Timed out after ${timeout} ms while waiting for the WS endpoint URL to appear in stdout!`));
+ }
+ function onLine(line) {
+ stderr += line + '\n';
+ const match = line.match(regex);
+ if (!match) {
+ return;
+ }
+ cleanup();
+ // The RegExp matches, so this will obviously exist.
+ resolve(match[1]);
+ }
+ });
+ }
+}
+const PROCESS_ERROR_EXPLANATION = `Puppeteer was unable to kill the process which ran the browser binary.
+This means that, on future Puppeteer launches, Puppeteer might not be able to launch the browser.
+Please check your open processes and ensure that the browser processes that Puppeteer launched have been killed.
+If you think this is a bug, please report it on the Puppeteer issue tracker.`;
+/**
+ * @internal
+ */
+function pidExists(pid) {
+ try {
+ return process.kill(pid, 0);
+ }
+ catch (error) {
+ if (isErrnoException(error)) {
+ if (error.code && error.code === 'ESRCH') {
+ return false;
+ }
+ }
+ throw error;
+ }
+}
+/**
+ * @internal
+ */
+export function isErrorLike(obj) {
+ return (typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj);
+}
+/**
+ * @internal
+ */
+export function isErrnoException(obj) {
+ return (isErrorLike(obj) &&
+ ('errno' in obj || 'code' in obj || 'path' in obj || 'syscall' in obj));
+}
+/**
+ * @public
+ */
+export class TimeoutError extends Error {
+ /**
+ * @internal
+ */
+ constructor(message) {
+ super(message);
+ this.name = this.constructor.name;
+ Error.captureStackTrace(this, this.constructor);
+ }
+}
+//# sourceMappingURL=launch.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js.map
new file mode 100644
index 0000000..fee1f7f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/launch.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/launch.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts
new file mode 100644
index 0000000..0b495ec
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts
@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export {};
+//# sourceMappingURL=main-cli.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts.map
new file mode 100644
index 0000000..edf028a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"main-cli.d.ts","sourceRoot":"","sources":["../../src/main-cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js
new file mode 100644
index 0000000..16615f1
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env node
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { CLI } from './CLI.js';
+void new CLI().run(process.argv);
+//# sourceMappingURL=main-cli.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js.map
new file mode 100644
index 0000000..4ee99d2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main-cli.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main-cli.js","sourceRoot":"","sources":["../../src/main-cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAE7B,KAAK,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts
new file mode 100644
index 0000000..ca0366a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export { launch, computeExecutablePath, computeSystemExecutablePath, TimeoutError, LaunchOptions, ComputeExecutablePathOptions as Options, SystemOptions, CDP_WEBSOCKET_ENDPOINT_REGEX, WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX, Process, } from './launch.js';
+export { install, getInstalledBrowsers, canDownload, uninstall, InstallOptions, GetInstalledBrowsersOptions, UninstallOptions, } from './install.js';
+export { detectBrowserPlatform } from './detectPlatform.js';
+export { resolveBuildId, Browser, BrowserPlatform, ChromeReleaseChannel, createProfile, ProfileOptions, } from './browser-data/browser-data.js';
+export { CLI, makeProgressCallback } from './CLI.js';
+export { Cache, InstalledBrowser } from './Cache.js';
+//# sourceMappingURL=main.d.ts.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts.map
new file mode 100644
index 0000000..3566b93
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,4BAA4B,IAAI,OAAO,EACvC,aAAa,EACb,4BAA4B,EAC5B,uCAAuC,EACvC,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,cAAc,EACd,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,GAAG,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AACnD,OAAO,EAAC,KAAK,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js
new file mode 100644
index 0000000..509988e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export { launch, computeExecutablePath, computeSystemExecutablePath, TimeoutError, CDP_WEBSOCKET_ENDPOINT_REGEX, WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX, Process, } from './launch.js';
+export { install, getInstalledBrowsers, canDownload, uninstall, } from './install.js';
+export { detectBrowserPlatform } from './detectPlatform.js';
+export { resolveBuildId, Browser, BrowserPlatform, ChromeReleaseChannel, createProfile, } from './browser-data/browser-data.js';
+export { CLI, makeProgressCallback } from './CLI.js';
+export { Cache, InstalledBrowser } from './Cache.js';
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js.map b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js.map
new file mode 100644
index 0000000..dea3014
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EAIZ,4BAA4B,EAC5B,uCAAuC,EACvC,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,SAAS,GAIV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,aAAa,GAEd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,GAAG,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AACnD,OAAO,EAAC,KAAK,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/package.json b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/package.json
new file mode 100644
index 0000000..1632c2c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/lib/esm/package.json
@@ -0,0 +1 @@
+{"type": "module"}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/LICENSE b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/LICENSE
new file mode 100644
index 0000000..1a9820e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2014-2017 TJ Holowaychuk
+Copyright (c) 2018-2021 Josh Junon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the 'Software'), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/README.md b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/README.md
new file mode 100644
index 0000000..e9c3e04
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/README.md
@@ -0,0 +1,481 @@
+# debug
+[](https://travis-ci.org/debug-js/debug) [](https://coveralls.io/github/debug-js/debug?branch=master) [](https://visionmedia-community-slackin.now.sh/) [](#backers)
+[](#sponsors)
+
+
+
+A tiny JavaScript debugging utility modelled after Node.js core's debugging
+technique. Works in Node.js and web browsers.
+
+## Installation
+
+```bash
+$ npm install debug
+```
+
+## Usage
+
+`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
+
+Example [_app.js_](./examples/node/app.js):
+
+```js
+var debug = require('debug')('http')
+ , http = require('http')
+ , name = 'My App';
+
+// fake app
+
+debug('booting %o', name);
+
+http.createServer(function(req, res){
+ debug(req.method + ' ' + req.url);
+ res.end('hello\n');
+}).listen(3000, function(){
+ debug('listening');
+});
+
+// fake worker of some kind
+
+require('./worker');
+```
+
+Example [_worker.js_](./examples/node/worker.js):
+
+```js
+var a = require('debug')('worker:a')
+ , b = require('debug')('worker:b');
+
+function work() {
+ a('doing lots of uninteresting work');
+ setTimeout(work, Math.random() * 1000);
+}
+
+work();
+
+function workb() {
+ b('doing some work');
+ setTimeout(workb, Math.random() * 2000);
+}
+
+workb();
+```
+
+The `DEBUG` environment variable is then used to enable these based on space or
+comma-delimited names.
+
+Here are some examples:
+
+
+
+
+
+#### Windows command prompt notes
+
+##### CMD
+
+On Windows the environment variable is set using the `set` command.
+
+```cmd
+set DEBUG=*,-not_this
+```
+
+Example:
+
+```cmd
+set DEBUG=* & node app.js
+```
+
+##### PowerShell (VS Code default)
+
+PowerShell uses different syntax to set environment variables.
+
+```cmd
+$env:DEBUG = "*,-not_this"
+```
+
+Example:
+
+```cmd
+$env:DEBUG='app';node app.js
+```
+
+Then, run the program to be debugged as usual.
+
+npm script example:
+```js
+ "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js",
+```
+
+## Namespace Colors
+
+Every debug instance has a color generated for it based on its namespace name.
+This helps when visually parsing the debug output to identify which debug instance
+a debug line belongs to.
+
+#### Node.js
+
+In Node.js, colors are enabled when stderr is a TTY. You also _should_ install
+the [`supports-color`](https://npmjs.org/supports-color) module alongside debug,
+otherwise debug will only use a small handful of basic colors.
+
+
+
+#### Web Browser
+
+Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
+option. These are WebKit web inspectors, Firefox ([since version
+31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
+and the Firebug plugin for Firefox (any version).
+
+
+
+
+## Millisecond diff
+
+When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
+
+
+
+When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below:
+
+
+
+
+## Conventions
+
+If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output.
+
+## Wildcards
+
+The `*` character may be used as a wildcard. Suppose for example your library has
+debuggers named "connect:bodyParser", "connect:compress", "connect:session",
+instead of listing all three with
+`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do
+`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
+
+You can also exclude specific debuggers by prefixing them with a "-" character.
+For example, `DEBUG=*,-connect:*` would include all debuggers except those
+starting with "connect:".
+
+## Environment Variables
+
+When running through Node.js, you can set a few environment variables that will
+change the behavior of the debug logging:
+
+| Name | Purpose |
+|-----------|-------------------------------------------------|
+| `DEBUG` | Enables/disables specific debugging namespaces. |
+| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). |
+| `DEBUG_COLORS`| Whether or not to use colors in the debug output. |
+| `DEBUG_DEPTH` | Object inspection depth. |
+| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. |
+
+
+__Note:__ The environment variables beginning with `DEBUG_` end up being
+converted into an Options object that gets used with `%o`/`%O` formatters.
+See the Node.js documentation for
+[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
+for the complete list.
+
+## Formatters
+
+Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting.
+Below are the officially supported formatters:
+
+| Formatter | Representation |
+|-----------|----------------|
+| `%O` | Pretty-print an Object on multiple lines. |
+| `%o` | Pretty-print an Object all on a single line. |
+| `%s` | String. |
+| `%d` | Number (both integer and float). |
+| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
+| `%%` | Single percent sign ('%'). This does not consume an argument. |
+
+
+### Custom formatters
+
+You can add custom formatters by extending the `debug.formatters` object.
+For example, if you wanted to add support for rendering a Buffer as hex with
+`%h`, you could do something like:
+
+```js
+const createDebug = require('debug')
+createDebug.formatters.h = (v) => {
+ return v.toString('hex')
+}
+
+// …elsewhere
+const debug = createDebug('foo')
+debug('this is hex: %h', new Buffer('hello world'))
+// foo this is hex: 68656c6c6f20776f726c6421 +0ms
+```
+
+
+## Browser Support
+
+You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
+or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
+if you don't want to build it yourself.
+
+Debug's enable state is currently persisted by `localStorage`.
+Consider the situation shown below where you have `worker:a` and `worker:b`,
+and wish to debug both. You can enable this using `localStorage.debug`:
+
+```js
+localStorage.debug = 'worker:*'
+```
+
+And then refresh the page.
+
+```js
+a = debug('worker:a');
+b = debug('worker:b');
+
+setInterval(function(){
+ a('doing some work');
+}, 1000);
+
+setInterval(function(){
+ b('doing some work');
+}, 1200);
+```
+
+In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_.
+
+
+
+## Output streams
+
+ By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method:
+
+Example [_stdout.js_](./examples/node/stdout.js):
+
+```js
+var debug = require('debug');
+var error = debug('app:error');
+
+// by default stderr is used
+error('goes to stderr!');
+
+var log = debug('app:log');
+// set this namespace to log via console.log
+log.log = console.log.bind(console); // don't forget to bind to console!
+log('goes to stdout');
+error('still goes to stderr!');
+
+// set all output to go via console.info
+// overrides all per-namespace log settings
+debug.log = console.info.bind(console);
+error('now goes to stdout via console.info');
+log('still goes to stdout, but via console.info now');
+```
+
+## Extend
+You can simply extend debugger
+```js
+const log = require('debug')('auth');
+
+//creates new debug instance with extended namespace
+const logSign = log.extend('sign');
+const logLogin = log.extend('login');
+
+log('hello'); // auth hello
+logSign('hello'); //auth:sign hello
+logLogin('hello'); //auth:login hello
+```
+
+## Set dynamically
+
+You can also enable debug dynamically by calling the `enable()` method :
+
+```js
+let debug = require('debug');
+
+console.log(1, debug.enabled('test'));
+
+debug.enable('test');
+console.log(2, debug.enabled('test'));
+
+debug.disable();
+console.log(3, debug.enabled('test'));
+
+```
+
+print :
+```
+1 false
+2 true
+3 false
+```
+
+Usage :
+`enable(namespaces)`
+`namespaces` can include modes separated by a colon and wildcards.
+
+Note that calling `enable()` completely overrides previously set DEBUG variable :
+
+```
+$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))'
+=> false
+```
+
+`disable()`
+
+Will disable all namespaces. The functions returns the namespaces currently
+enabled (and skipped). This can be useful if you want to disable debugging
+temporarily without knowing what was enabled to begin with.
+
+For example:
+
+```js
+let debug = require('debug');
+debug.enable('foo:*,-foo:bar');
+let namespaces = debug.disable();
+debug.enable(namespaces);
+```
+
+Note: There is no guarantee that the string will be identical to the initial
+enable string, but semantically they will be identical.
+
+## Checking whether a debug target is enabled
+
+After you've created a debug instance, you can determine whether or not it is
+enabled by checking the `enabled` property:
+
+```javascript
+const debug = require('debug')('http');
+
+if (debug.enabled) {
+ // do stuff...
+}
+```
+
+You can also manually toggle this property to force the debug instance to be
+enabled or disabled.
+
+## Usage in child processes
+
+Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process.
+For example:
+
+```javascript
+worker = fork(WORKER_WRAP_PATH, [workerPath], {
+ stdio: [
+ /* stdin: */ 0,
+ /* stdout: */ 'pipe',
+ /* stderr: */ 'pipe',
+ 'ipc',
+ ],
+ env: Object.assign({}, process.env, {
+ DEBUG_COLORS: 1 // without this settings, colors won't be shown
+ }),
+});
+
+worker.stderr.pipe(process.stderr, { end: false });
+```
+
+
+## Authors
+
+ - TJ Holowaychuk
+ - Nathan Rajlich
+ - Andrew Rhyne
+ - Josh Junon
+
+## Backers
+
+Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Sponsors
+
+Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca>
+Copyright (c) 2018-2021 Josh Junon
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/package.json b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/package.json
new file mode 100644
index 0000000..3bcdc24
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "debug",
+ "version": "4.3.4",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/debug-js/debug.git"
+ },
+ "description": "Lightweight debugging utility for Node.js and the browser",
+ "keywords": [
+ "debug",
+ "log",
+ "debugger"
+ ],
+ "files": [
+ "src",
+ "LICENSE",
+ "README.md"
+ ],
+ "author": "Josh Junon ",
+ "contributors": [
+ "TJ Holowaychuk ",
+ "Nathan Rajlich (http://n8.io)",
+ "Andrew Rhyne "
+ ],
+ "license": "MIT",
+ "scripts": {
+ "lint": "xo",
+ "test": "npm run test:node && npm run test:browser && npm run lint",
+ "test:node": "istanbul cover _mocha -- test.js",
+ "test:browser": "karma start --single-run",
+ "test:coverage": "cat ./coverage/lcov.info | coveralls"
+ },
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "devDependencies": {
+ "brfs": "^2.0.1",
+ "browserify": "^16.2.3",
+ "coveralls": "^3.0.2",
+ "istanbul": "^0.4.5",
+ "karma": "^3.1.4",
+ "karma-browserify": "^6.0.0",
+ "karma-chrome-launcher": "^2.2.0",
+ "karma-mocha": "^1.3.0",
+ "mocha": "^5.2.0",
+ "mocha-lcov-reporter": "^1.2.0",
+ "xo": "^0.23.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ },
+ "main": "./src/index.js",
+ "browser": "./src/browser.js",
+ "engines": {
+ "node": ">=6.0"
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/browser.js b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/browser.js
new file mode 100644
index 0000000..cd0fc35
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/browser.js
@@ -0,0 +1,269 @@
+/* eslint-env browser */
+
+/**
+ * This is the web browser implementation of `debug()`.
+ */
+
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+exports.storage = localstorage();
+exports.destroy = (() => {
+ let warned = false;
+
+ return () => {
+ if (!warned) {
+ warned = true;
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
+ }
+ };
+})();
+
+/**
+ * Colors.
+ */
+
+exports.colors = [
+ '#0000CC',
+ '#0000FF',
+ '#0033CC',
+ '#0033FF',
+ '#0066CC',
+ '#0066FF',
+ '#0099CC',
+ '#0099FF',
+ '#00CC00',
+ '#00CC33',
+ '#00CC66',
+ '#00CC99',
+ '#00CCCC',
+ '#00CCFF',
+ '#3300CC',
+ '#3300FF',
+ '#3333CC',
+ '#3333FF',
+ '#3366CC',
+ '#3366FF',
+ '#3399CC',
+ '#3399FF',
+ '#33CC00',
+ '#33CC33',
+ '#33CC66',
+ '#33CC99',
+ '#33CCCC',
+ '#33CCFF',
+ '#6600CC',
+ '#6600FF',
+ '#6633CC',
+ '#6633FF',
+ '#66CC00',
+ '#66CC33',
+ '#9900CC',
+ '#9900FF',
+ '#9933CC',
+ '#9933FF',
+ '#99CC00',
+ '#99CC33',
+ '#CC0000',
+ '#CC0033',
+ '#CC0066',
+ '#CC0099',
+ '#CC00CC',
+ '#CC00FF',
+ '#CC3300',
+ '#CC3333',
+ '#CC3366',
+ '#CC3399',
+ '#CC33CC',
+ '#CC33FF',
+ '#CC6600',
+ '#CC6633',
+ '#CC9900',
+ '#CC9933',
+ '#CCCC00',
+ '#CCCC33',
+ '#FF0000',
+ '#FF0033',
+ '#FF0066',
+ '#FF0099',
+ '#FF00CC',
+ '#FF00FF',
+ '#FF3300',
+ '#FF3333',
+ '#FF3366',
+ '#FF3399',
+ '#FF33CC',
+ '#FF33FF',
+ '#FF6600',
+ '#FF6633',
+ '#FF9900',
+ '#FF9933',
+ '#FFCC00',
+ '#FFCC33'
+];
+
+/**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+// eslint-disable-next-line complexity
+function useColors() {
+ // NB: In an Electron preload script, document will be defined but not fully
+ // initialized. Since we know we're in Chrome, we'll just detect this case
+ // explicitly
+ if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
+ return true;
+ }
+
+ // Internet Explorer and Edge do not support colors.
+ if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
+ return false;
+ }
+
+ // Is webkit? http://stackoverflow.com/a/16459606/376773
+ // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
+ return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
+ // Is firebug? http://stackoverflow.com/a/398120/376773
+ (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
+ // Is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
+ // Double check webkit in userAgent just in case we are in a worker
+ (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
+}
+
+/**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs(args) {
+ args[0] = (this.useColors ? '%c' : '') +
+ this.namespace +
+ (this.useColors ? ' %c' : ' ') +
+ args[0] +
+ (this.useColors ? '%c ' : ' ') +
+ '+' + module.exports.humanize(this.diff);
+
+ if (!this.useColors) {
+ return;
+ }
+
+ const c = 'color: ' + this.color;
+ args.splice(1, 0, c, 'color: inherit');
+
+ // The final "%c" is somewhat tricky, because there could be other
+ // arguments passed either before or after the %c, so we need to
+ // figure out the correct index to insert the CSS into
+ let index = 0;
+ let lastC = 0;
+ args[0].replace(/%[a-zA-Z%]/g, match => {
+ if (match === '%%') {
+ return;
+ }
+ index++;
+ if (match === '%c') {
+ // We only are interested in the *last* %c
+ // (the user may have provided their own)
+ lastC = index;
+ }
+ });
+
+ args.splice(lastC, 0, c);
+}
+
+/**
+ * Invokes `console.debug()` when available.
+ * No-op when `console.debug` is not a "function".
+ * If `console.debug` is not available, falls back
+ * to `console.log`.
+ *
+ * @api public
+ */
+exports.log = console.debug || console.log || (() => {});
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+function save(namespaces) {
+ try {
+ if (namespaces) {
+ exports.storage.setItem('debug', namespaces);
+ } else {
+ exports.storage.removeItem('debug');
+ }
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+function load() {
+ let r;
+ try {
+ r = exports.storage.getItem('debug');
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+
+ // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
+ if (!r && typeof process !== 'undefined' && 'env' in process) {
+ r = process.env.DEBUG;
+ }
+
+ return r;
+}
+
+/**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+function localstorage() {
+ try {
+ // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
+ // The Browser also has localStorage in the global context.
+ return localStorage;
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+}
+
+module.exports = require('./common')(exports);
+
+const {formatters} = module.exports;
+
+/**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+formatters.j = function (v) {
+ try {
+ return JSON.stringify(v);
+ } catch (error) {
+ return '[UnexpectedJSONParseError]: ' + error.message;
+ }
+};
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/common.js b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/common.js
new file mode 100644
index 0000000..e3291b2
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/common.js
@@ -0,0 +1,274 @@
+
+/**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ */
+
+function setup(env) {
+ createDebug.debug = createDebug;
+ createDebug.default = createDebug;
+ createDebug.coerce = coerce;
+ createDebug.disable = disable;
+ createDebug.enable = enable;
+ createDebug.enabled = enabled;
+ createDebug.humanize = require('ms');
+ createDebug.destroy = destroy;
+
+ Object.keys(env).forEach(key => {
+ createDebug[key] = env[key];
+ });
+
+ /**
+ * The currently active debug mode names, and names to skip.
+ */
+
+ createDebug.names = [];
+ createDebug.skips = [];
+
+ /**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
+ */
+ createDebug.formatters = {};
+
+ /**
+ * Selects a color for a debug namespace
+ * @param {String} namespace The namespace string for the debug instance to be colored
+ * @return {Number|String} An ANSI color code for the given namespace
+ * @api private
+ */
+ function selectColor(namespace) {
+ let hash = 0;
+
+ for (let i = 0; i < namespace.length; i++) {
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
+ hash |= 0; // Convert to 32bit integer
+ }
+
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
+ }
+ createDebug.selectColor = selectColor;
+
+ /**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+ function createDebug(namespace) {
+ let prevTime;
+ let enableOverride = null;
+ let namespacesCache;
+ let enabledCache;
+
+ function debug(...args) {
+ // Disabled?
+ if (!debug.enabled) {
+ return;
+ }
+
+ const self = debug;
+
+ // Set `diff` timestamp
+ const curr = Number(new Date());
+ const ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ args[0] = createDebug.coerce(args[0]);
+
+ if (typeof args[0] !== 'string') {
+ // Anything else let's inspect with %O
+ args.unshift('%O');
+ }
+
+ // Apply any `formatters` transformations
+ let index = 0;
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
+ // If we encounter an escaped % then don't increase the array index
+ if (match === '%%') {
+ return '%';
+ }
+ index++;
+ const formatter = createDebug.formatters[format];
+ if (typeof formatter === 'function') {
+ const val = args[index];
+ match = formatter.call(self, val);
+
+ // Now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ // Apply env-specific formatting (colors, etc.)
+ createDebug.formatArgs.call(self, args);
+
+ const logFn = self.log || createDebug.log;
+ logFn.apply(self, args);
+ }
+
+ debug.namespace = namespace;
+ debug.useColors = createDebug.useColors();
+ debug.color = createDebug.selectColor(namespace);
+ debug.extend = extend;
+ debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
+
+ Object.defineProperty(debug, 'enabled', {
+ enumerable: true,
+ configurable: false,
+ get: () => {
+ if (enableOverride !== null) {
+ return enableOverride;
+ }
+ if (namespacesCache !== createDebug.namespaces) {
+ namespacesCache = createDebug.namespaces;
+ enabledCache = createDebug.enabled(namespace);
+ }
+
+ return enabledCache;
+ },
+ set: v => {
+ enableOverride = v;
+ }
+ });
+
+ // Env-specific initialization logic for debug instances
+ if (typeof createDebug.init === 'function') {
+ createDebug.init(debug);
+ }
+
+ return debug;
+ }
+
+ function extend(namespace, delimiter) {
+ const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
+ newDebug.log = this.log;
+ return newDebug;
+ }
+
+ /**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+ function enable(namespaces) {
+ createDebug.save(namespaces);
+ createDebug.namespaces = namespaces;
+
+ createDebug.names = [];
+ createDebug.skips = [];
+
+ let i;
+ const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
+ const len = split.length;
+
+ for (i = 0; i < len; i++) {
+ if (!split[i]) {
+ // ignore empty strings
+ continue;
+ }
+
+ namespaces = split[i].replace(/\*/g, '.*?');
+
+ if (namespaces[0] === '-') {
+ createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
+ } else {
+ createDebug.names.push(new RegExp('^' + namespaces + '$'));
+ }
+ }
+ }
+
+ /**
+ * Disable debug output.
+ *
+ * @return {String} namespaces
+ * @api public
+ */
+ function disable() {
+ const namespaces = [
+ ...createDebug.names.map(toNamespace),
+ ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
+ ].join(',');
+ createDebug.enable('');
+ return namespaces;
+ }
+
+ /**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+ function enabled(name) {
+ if (name[name.length - 1] === '*') {
+ return true;
+ }
+
+ let i;
+ let len;
+
+ for (i = 0, len = createDebug.skips.length; i < len; i++) {
+ if (createDebug.skips[i].test(name)) {
+ return false;
+ }
+ }
+
+ for (i = 0, len = createDebug.names.length; i < len; i++) {
+ if (createDebug.names[i].test(name)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Convert regexp to namespace
+ *
+ * @param {RegExp} regxep
+ * @return {String} namespace
+ * @api private
+ */
+ function toNamespace(regexp) {
+ return regexp.toString()
+ .substring(2, regexp.toString().length - 2)
+ .replace(/\.\*\?$/, '*');
+ }
+
+ /**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+ function coerce(val) {
+ if (val instanceof Error) {
+ return val.stack || val.message;
+ }
+ return val;
+ }
+
+ /**
+ * XXX DO NOT USE. This is a temporary stub function.
+ * XXX It WILL be removed in the next major release.
+ */
+ function destroy() {
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
+ }
+
+ createDebug.enable(createDebug.load());
+
+ return createDebug;
+}
+
+module.exports = setup;
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/index.js b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/index.js
new file mode 100644
index 0000000..bf4c57f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/index.js
@@ -0,0 +1,10 @@
+/**
+ * Detect Electron renderer / nwjs process, which is node, but we should
+ * treat as a browser.
+ */
+
+if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
+ module.exports = require('./browser.js');
+} else {
+ module.exports = require('./node.js');
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/node.js b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/node.js
new file mode 100644
index 0000000..79bc085
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/debug/src/node.js
@@ -0,0 +1,263 @@
+/**
+ * Module dependencies.
+ */
+
+const tty = require('tty');
+const util = require('util');
+
+/**
+ * This is the Node.js implementation of `debug()`.
+ */
+
+exports.init = init;
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+exports.destroy = util.deprecate(
+ () => {},
+ 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'
+);
+
+/**
+ * Colors.
+ */
+
+exports.colors = [6, 2, 3, 4, 5, 1];
+
+try {
+ // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
+ // eslint-disable-next-line import/no-extraneous-dependencies
+ const supportsColor = require('supports-color');
+
+ if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
+ exports.colors = [
+ 20,
+ 21,
+ 26,
+ 27,
+ 32,
+ 33,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 56,
+ 57,
+ 62,
+ 63,
+ 68,
+ 69,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 92,
+ 93,
+ 98,
+ 99,
+ 112,
+ 113,
+ 128,
+ 129,
+ 134,
+ 135,
+ 148,
+ 149,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 178,
+ 179,
+ 184,
+ 185,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 214,
+ 215,
+ 220,
+ 221
+ ];
+ }
+} catch (error) {
+ // Swallow - we only care if `supports-color` is available; it doesn't have to be.
+}
+
+/**
+ * Build up the default `inspectOpts` object from the environment variables.
+ *
+ * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
+ */
+
+exports.inspectOpts = Object.keys(process.env).filter(key => {
+ return /^debug_/i.test(key);
+}).reduce((obj, key) => {
+ // Camel-case
+ const prop = key
+ .substring(6)
+ .toLowerCase()
+ .replace(/_([a-z])/g, (_, k) => {
+ return k.toUpperCase();
+ });
+
+ // Coerce string value into JS value
+ let val = process.env[key];
+ if (/^(yes|on|true|enabled)$/i.test(val)) {
+ val = true;
+ } else if (/^(no|off|false|disabled)$/i.test(val)) {
+ val = false;
+ } else if (val === 'null') {
+ val = null;
+ } else {
+ val = Number(val);
+ }
+
+ obj[prop] = val;
+ return obj;
+}, {});
+
+/**
+ * Is stdout a TTY? Colored output is enabled when `true`.
+ */
+
+function useColors() {
+ return 'colors' in exports.inspectOpts ?
+ Boolean(exports.inspectOpts.colors) :
+ tty.isatty(process.stderr.fd);
+}
+
+/**
+ * Adds ANSI color escape codes if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs(args) {
+ const {namespace: name, useColors} = this;
+
+ if (useColors) {
+ const c = this.color;
+ const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
+ const prefix = ` ${colorCode};1m${name} \u001B[0m`;
+
+ args[0] = prefix + args[0].split('\n').join('\n' + prefix);
+ args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
+ } else {
+ args[0] = getDate() + name + ' ' + args[0];
+ }
+}
+
+function getDate() {
+ if (exports.inspectOpts.hideDate) {
+ return '';
+ }
+ return new Date().toISOString() + ' ';
+}
+
+/**
+ * Invokes `util.format()` with the specified arguments and writes to stderr.
+ */
+
+function log(...args) {
+ return process.stderr.write(util.format(...args) + '\n');
+}
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+function save(namespaces) {
+ if (namespaces) {
+ process.env.DEBUG = namespaces;
+ } else {
+ // If you set a process.env field to null or undefined, it gets cast to the
+ // string 'null' or 'undefined'. Just delete instead.
+ delete process.env.DEBUG;
+ }
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+function load() {
+ return process.env.DEBUG;
+}
+
+/**
+ * Init logic for `debug` instances.
+ *
+ * Create a new `inspectOpts` object in case `useColors` is set
+ * differently for a particular `debug` instance.
+ */
+
+function init(debug) {
+ debug.inspectOpts = {};
+
+ const keys = Object.keys(exports.inspectOpts);
+ for (let i = 0; i < keys.length; i++) {
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+ }
+}
+
+module.exports = require('./common')(exports);
+
+const {formatters} = module.exports;
+
+/**
+ * Map %o to `util.inspect()`, all on a single line.
+ */
+
+formatters.o = function (v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts)
+ .split('\n')
+ .map(str => str.trim())
+ .join(' ');
+};
+
+/**
+ * Map %O to `util.inspect()`, allowing multiple lines if needed.
+ */
+
+formatters.O = function (v) {
+ this.inspectOpts.colors = this.useColors;
+ return util.inspect(v, this.inspectOpts);
+};
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/index.js b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/index.js
new file mode 100644
index 0000000..c4498bc
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/index.js
@@ -0,0 +1,162 @@
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var w = d * 7;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} [options]
+ * @throws {Error} throw an error if val is not a non-empty string or a number
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === 'string' && val.length > 0) {
+ return parse(val);
+ } else if (type === 'number' && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
+ }
+ throw new Error(
+ 'val is not a non-empty string or a valid number. val=' +
+ JSON.stringify(val)
+ );
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
+ }
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
+ str
+ );
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'weeks':
+ case 'week':
+ case 'w':
+ return n * w;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ default:
+ return undefined;
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + 'd';
+ }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + 'h';
+ }
+ if (msAbs >= m) {
+ return Math.round(ms / m) + 'm';
+ }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + 's';
+ }
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural(ms, msAbs, d, 'day');
+ }
+ if (msAbs >= h) {
+ return plural(ms, msAbs, h, 'hour');
+ }
+ if (msAbs >= m) {
+ return plural(ms, msAbs, m, 'minute');
+ }
+ if (msAbs >= s) {
+ return plural(ms, msAbs, s, 'second');
+ }
+ return ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, msAbs, n, name) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/license.md b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/license.md
new file mode 100644
index 0000000..69b6125
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/license.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Zeit, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/package.json b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/package.json
new file mode 100644
index 0000000..eea666e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "ms",
+ "version": "2.1.2",
+ "description": "Tiny millisecond conversion utility",
+ "repository": "zeit/ms",
+ "main": "./index",
+ "files": [
+ "index.js"
+ ],
+ "scripts": {
+ "precommit": "lint-staged",
+ "lint": "eslint lib/* bin/*",
+ "test": "mocha tests.js"
+ },
+ "eslintConfig": {
+ "extends": "eslint:recommended",
+ "env": {
+ "node": true,
+ "es6": true
+ }
+ },
+ "lint-staged": {
+ "*.js": [
+ "npm run lint",
+ "prettier --single-quote --write",
+ "git add"
+ ]
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "eslint": "4.12.1",
+ "expect.js": "0.3.1",
+ "husky": "0.14.3",
+ "lint-staged": "5.0.0",
+ "mocha": "4.0.1"
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/readme.md b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/readme.md
new file mode 100644
index 0000000..9a1996b
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/node_modules/ms/readme.md
@@ -0,0 +1,60 @@
+# ms
+
+[](https://travis-ci.org/zeit/ms)
+[](https://spectrum.chat/zeit)
+
+Use this package to easily convert various time formats to milliseconds.
+
+## Examples
+
+```js
+ms('2 days') // 172800000
+ms('1d') // 86400000
+ms('10h') // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h') // 7200000
+ms('1m') // 60000
+ms('5s') // 5000
+ms('1y') // 31557600000
+ms('100') // 100
+ms('-3 days') // -259200000
+ms('-1h') // -3600000
+ms('-200') // -200
+```
+
+### Convert from Milliseconds
+
+```js
+ms(60000) // "1m"
+ms(2 * 60000) // "2m"
+ms(-3 * 60000) // "-3m"
+ms(ms('10 hours')) // "10h"
+```
+
+### Time Format Written-Out
+
+```js
+ms(60000, { long: true }) // "1 minute"
+ms(2 * 60000, { long: true }) // "2 minutes"
+ms(-3 * 60000, { long: true }) // "-3 minutes"
+ms(ms('10 hours'), { long: true }) // "10 hours"
+```
+
+## Features
+
+- Works both in [Node.js](https://nodejs.org) and in the browser
+- If a number is supplied to `ms`, a string with a unit is returned
+- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
+- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
+
+## Related Packages
+
+- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
+
+## Caught a Bug?
+
+1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
+2. Link the package to the global module directory: `npm link`
+3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
+
+As always, you can run the tests using: `npm test`
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/package.json b/BlockCoder/node_modules/@puppeteer/browsers/package.json
new file mode 100644
index 0000000..3b1558d
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/package.json
@@ -0,0 +1,113 @@
+{
+ "name": "@puppeteer/browsers",
+ "version": "1.7.0",
+ "description": "Download and launch browsers",
+ "scripts": {
+ "build:docs": "wireit",
+ "build": "wireit",
+ "build:test": "wireit",
+ "clean": "tsc --build --clean && rm -rf lib",
+ "test": "wireit"
+ },
+ "bin": "lib/cjs/main-cli.js",
+ "main": "./lib/cjs/main.js",
+ "module": "./lib/esm/main.js",
+ "type": "commonjs",
+ "exports": {
+ ".": {
+ "import": "./lib/esm/main.js",
+ "require": "./lib/cjs/main.js"
+ }
+ },
+ "wireit": {
+ "build": {
+ "command": "tsc -b && tsx ../../tools/chmod.ts 755 lib/cjs/main-cli.js lib/esm/main-cli.js",
+ "files": [
+ "src/**/*.ts",
+ "tsconfig.json"
+ ],
+ "clean": "if-file-deleted",
+ "output": [
+ "lib/**",
+ "!lib/esm/package.json"
+ ],
+ "dependencies": [
+ "generate:package-json"
+ ]
+ },
+ "generate:package-json": {
+ "command": "tsx ../../tools/generate_module_package_json.ts lib/esm/package.json",
+ "files": [
+ "../../tools/generate_module_package_json.ts"
+ ],
+ "output": [
+ "lib/esm/package.json"
+ ]
+ },
+ "build:docs": {
+ "command": "api-extractor run --local --config \"./api-extractor.docs.json\"",
+ "files": [
+ "api-extractor.docs.json",
+ "lib/esm/main.d.ts",
+ "tsconfig.json"
+ ],
+ "dependencies": [
+ "build"
+ ]
+ },
+ "build:test": {
+ "command": "tsc -b test/src/tsconfig.json",
+ "files": [
+ "test/**/*.ts",
+ "test/src/tsconfig.json"
+ ],
+ "output": [
+ "test/build/**"
+ ],
+ "dependencies": [
+ "build",
+ "../testserver:build"
+ ]
+ },
+ "test": {
+ "command": "node tools/downloadTestBrowsers.mjs && cross-env DEBUG=puppeteer:* mocha",
+ "files": [
+ ".mocharc.cjs"
+ ],
+ "dependencies": [
+ "build:test"
+ ]
+ }
+ },
+ "keywords": [
+ "puppeteer",
+ "browsers"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/puppeteer/puppeteer/tree/main/packages/browsers"
+ },
+ "author": "The Chromium Authors",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.3.0"
+ },
+ "files": [
+ "lib",
+ "src",
+ "!*.tsbuildinfo"
+ ],
+ "dependencies": {
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "progress": "2.0.3",
+ "proxy-agent": "6.3.0",
+ "tar-fs": "3.0.4",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.1"
+ },
+ "devDependencies": {
+ "@types/node": "^16.11.7",
+ "@types/yargs": "17.0.22"
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/CLI.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/CLI.ts
new file mode 100644
index 0000000..ab72615
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/CLI.ts
@@ -0,0 +1,346 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {stdin as input, stdout as output} from 'process';
+import * as readline from 'readline';
+
+import ProgressBar from 'progress';
+import type * as Yargs from 'yargs';
+import {hideBin} from 'yargs/helpers';
+import yargs from 'yargs/yargs';
+
+import {
+ resolveBuildId,
+ Browser,
+ BrowserPlatform,
+ ChromeReleaseChannel,
+} from './browser-data/browser-data.js';
+import {Cache} from './Cache.js';
+import {detectBrowserPlatform} from './detectPlatform.js';
+import {install} from './install.js';
+import {
+ computeExecutablePath,
+ computeSystemExecutablePath,
+ launch,
+} from './launch.js';
+
+interface InstallArgs {
+ browser: {
+ name: Browser;
+ buildId: string;
+ };
+ path?: string;
+ platform?: BrowserPlatform;
+ baseUrl?: string;
+}
+
+interface LaunchArgs {
+ browser: {
+ name: Browser;
+ buildId: string;
+ };
+ path?: string;
+ platform?: BrowserPlatform;
+ detached: boolean;
+ system: boolean;
+}
+
+interface ClearArgs {
+ path?: string;
+}
+
+/**
+ * @public
+ */
+export class CLI {
+ #cachePath;
+ #rl?: readline.Interface;
+
+ constructor(cachePath = process.cwd(), rl?: readline.Interface) {
+ this.#cachePath = cachePath;
+ this.#rl = rl;
+ }
+
+ #defineBrowserParameter(yargs: Yargs.Argv): void {
+ yargs.positional('browser', {
+ description:
+ 'Which browser to install [@]. `latest` will try to find the latest available build. `buildId` is a browser-specific identifier such as a version or a revision.',
+ type: 'string',
+ coerce: (opt): InstallArgs['browser'] => {
+ return {
+ name: this.#parseBrowser(opt),
+ buildId: this.#parseBuildId(opt),
+ };
+ },
+ });
+ }
+
+ #definePlatformParameter(yargs: Yargs.Argv): void {
+ yargs.option('platform', {
+ type: 'string',
+ desc: 'Platform that the binary needs to be compatible with.',
+ choices: Object.values(BrowserPlatform),
+ defaultDescription: 'Auto-detected',
+ });
+ }
+
+ #definePathParameter(yargs: Yargs.Argv, required = false): void {
+ yargs.option('path', {
+ type: 'string',
+ desc: 'Path to the root folder for the browser downloads and installation. The installation folder structure is compatible with the cache structure used by Puppeteer.',
+ defaultDescription: 'Current working directory',
+ ...(required ? {} : {default: process.cwd()}),
+ });
+ if (required) {
+ yargs.demandOption('path');
+ }
+ }
+
+ async run(argv: string[]): Promise {
+ const yargsInstance = yargs(hideBin(argv));
+ await yargsInstance
+ .scriptName('@puppeteer/browsers')
+ .command(
+ 'install ',
+ '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: @).',
+ yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('base-url', {
+ type: 'string',
+ desc: 'Base URL to download from',
+ });
+ yargs.example(
+ '$0 install chrome',
+ 'Install the latest 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@canary',
+ 'Install the latest available build for the Chrome Canary browser.'
+ );
+ yargs.example(
+ '$0 install chrome@115',
+ 'Install the latest available build for Chrome 115.'
+ );
+ yargs.example(
+ '$0 install chromedriver@canary',
+ 'Install the latest available build for ChromeDriver Canary.'
+ );
+ yargs.example(
+ '$0 install chromedriver@115',
+ 'Install the latest available build for ChromeDriver 115.'
+ );
+ yargs.example(
+ '$0 install chromedriver@115.0.5790',
+ 'Install the latest available patch (115.0.5790.X) build for ChromeDriver.'
+ );
+ yargs.example(
+ '$0 install chrome-headless-shell',
+ 'Install the latest available chrome-headless-shell build.'
+ );
+ yargs.example(
+ '$0 install chrome-headless-shell@beta',
+ 'Install the latest available chrome-headless-shell build corresponding to the Beta channel.'
+ );
+ yargs.example(
+ '$0 install chrome-headless-shell@118',
+ 'Install the latest available chrome-headless-shell 118 build.'
+ );
+ yargs.example(
+ '$0 install chromium@1083080',
+ 'Install the revision 1083080 of the Chromium browser.'
+ );
+ yargs.example(
+ '$0 install firefox',
+ 'Install the latest available build of the Firefox browser.'
+ );
+ yargs.example(
+ '$0 install firefox --platform mac',
+ 'Install the latest Mac (Intel) build of the Firefox browser.'
+ );
+ yargs.example(
+ '$0 install firefox --path /tmp/my-browser-cache',
+ 'Install to the specified cache directory.'
+ );
+ },
+ async argv => {
+ const args = argv as unknown as InstallArgs;
+ args.platform ??= detectBrowserPlatform();
+ if (!args.platform) {
+ throw new Error(`Could not resolve the current platform`);
+ }
+ 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,
+ });
+ 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 ',
+ 'Launch the specified browser',
+ yargs => {
+ this.#defineBrowserParameter(yargs);
+ this.#definePlatformParameter(yargs);
+ this.#definePathParameter(yargs);
+ yargs.option('detached', {
+ type: 'boolean',
+ desc: 'Detach the child process.',
+ default: false,
+ });
+ yargs.option('system', {
+ type: 'boolean',
+ desc: 'Search for a browser installed on the system instead of the cache folder.',
+ default: false,
+ });
+ yargs.example(
+ '$0 launch chrome@115.0.5790.170',
+ 'Launch Chrome 115.0.5790.170'
+ );
+ yargs.example(
+ '$0 launch firefox@112.0a1',
+ 'Launch the Firefox browser identified by the milestone 112.0a1.'
+ );
+ yargs.example(
+ '$0 launch chrome@115.0.5790.170 --detached',
+ 'Launch the browser but detach the sub-processes.'
+ );
+ yargs.example(
+ '$0 launch chrome@canary --system',
+ 'Try to locate the Canary build of Chrome installed on the system and launch it.'
+ );
+ },
+ async argv => {
+ const args = argv as unknown as LaunchArgs;
+ const executablePath = args.system
+ ? computeSystemExecutablePath({
+ browser: args.browser.name,
+ // TODO: throw an error if not a ChromeReleaseChannel is provided.
+ channel: args.browser.buildId as ChromeReleaseChannel,
+ platform: args.platform,
+ })
+ : computeExecutablePath({
+ browser: args.browser.name,
+ buildId: args.browser.buildId,
+ cacheDir: args.path ?? this.#cachePath,
+ platform: args.platform,
+ });
+ launch({
+ executablePath,
+ detached: args.detached,
+ });
+ }
+ )
+ .command(
+ 'clear',
+ 'Removes all installed browsers from the specified cache directory',
+ yargs => {
+ this.#definePathParameter(yargs, true);
+ },
+ async argv => {
+ const args = argv as unknown as ClearArgs;
+ const cacheDir = args.path ?? this.#cachePath;
+ const rl = this.#rl ?? readline.createInterface({input, output});
+ rl.question(
+ `Do you want to permanently and recursively delete the content of ${cacheDir} (yes/No)? `,
+ answer => {
+ rl.close();
+ if (!['y', 'yes'].includes(answer.toLowerCase().trim())) {
+ console.log('Cancelled.');
+ return;
+ }
+ const cache = new Cache(cacheDir);
+ cache.clear();
+ console.log(`${cacheDir} cleared.`);
+ }
+ );
+ }
+ )
+ .demandCommand(1)
+ .help()
+ .wrap(Math.min(120, yargsInstance.terminalWidth()))
+ .parse();
+ }
+
+ #parseBrowser(version: string): Browser {
+ return version.split('@').shift() as Browser;
+ }
+
+ #parseBuildId(version: string): string {
+ const parts = version.split('@');
+ return parts.length === 2 ? parts[1]! : 'latest';
+ }
+}
+
+/**
+ * @public
+ */
+export function makeProgressCallback(
+ browser: Browser,
+ buildId: string
+): (downloadedBytes: number, totalBytes: number) => void {
+ let progressBar: ProgressBar;
+ let lastDownloadedBytes = 0;
+ return (downloadedBytes: number, totalBytes: number) => {
+ if (!progressBar) {
+ progressBar = new ProgressBar(
+ `Downloading ${browser} r${buildId} - ${toMegabytes(
+ totalBytes
+ )} [:bar] :percent :etas `,
+ {
+ complete: '=',
+ incomplete: ' ',
+ width: 20,
+ total: totalBytes,
+ }
+ );
+ }
+ const delta = downloadedBytes - lastDownloadedBytes;
+ lastDownloadedBytes = downloadedBytes;
+ progressBar.tick(delta);
+ };
+}
+
+function toMegabytes(bytes: number) {
+ const mb = bytes / 1000 / 1000;
+ return `${Math.round(mb * 10) / 10} MB`;
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/Cache.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/Cache.ts
new file mode 100644
index 0000000..8312283
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/Cache.ts
@@ -0,0 +1,177 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import fs from 'fs';
+import path from 'path';
+
+import {Browser, BrowserPlatform} from './browser-data/browser-data.js';
+import {computeExecutablePath} from './launch.js';
+
+/**
+ * @public
+ */
+export class InstalledBrowser {
+ browser: Browser;
+ buildId: string;
+ platform: BrowserPlatform;
+
+ #cache: Cache;
+
+ /**
+ * @internal
+ */
+ constructor(
+ cache: Cache,
+ browser: Browser,
+ buildId: string,
+ platform: BrowserPlatform
+ ) {
+ this.#cache = cache;
+ this.browser = browser;
+ this.buildId = buildId;
+ this.platform = platform;
+ }
+
+ /**
+ * Path to the root of the installation folder. Use
+ * {@link computeExecutablePath} to get the path to the executable binary.
+ */
+ get path(): string {
+ return this.#cache.installationDir(
+ this.browser,
+ this.platform,
+ this.buildId
+ );
+ }
+
+ get executablePath(): string {
+ return computeExecutablePath({
+ cacheDir: this.#cache.rootDir,
+ platform: this.platform,
+ browser: this.browser,
+ buildId: this.buildId,
+ });
+ }
+}
+
+/**
+ * The cache used by Puppeteer relies on the following structure:
+ *
+ * - rootDir
+ * -- | browserRoot(browser1)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * -- | browserRoot(browser2)
+ * ---- - | installationDir()
+ * ------ the browser-platform-buildId
+ * ------ specific structure.
+ * @internal
+ */
+export class Cache {
+ #rootDir: string;
+
+ constructor(rootDir: string) {
+ this.#rootDir = rootDir;
+ }
+
+ /**
+ * @internal
+ */
+ get rootDir(): string {
+ return this.#rootDir;
+ }
+
+ browserRoot(browser: Browser): string {
+ return path.join(this.#rootDir, browser);
+ }
+
+ installationDir(
+ browser: Browser,
+ platform: BrowserPlatform,
+ buildId: string
+ ): string {
+ return path.join(this.browserRoot(browser), `${platform}-${buildId}`);
+ }
+
+ clear(): void {
+ fs.rmSync(this.#rootDir, {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+
+ uninstall(
+ browser: Browser,
+ platform: BrowserPlatform,
+ buildId: string
+ ): void {
+ fs.rmSync(this.installationDir(browser, platform, buildId), {
+ force: true,
+ recursive: true,
+ maxRetries: 10,
+ retryDelay: 500,
+ });
+ }
+
+ getInstalledBrowsers(): InstalledBrowser[] {
+ if (!fs.existsSync(this.#rootDir)) {
+ return [];
+ }
+ const types = fs.readdirSync(this.#rootDir);
+ const browsers = types.filter((t): t is Browser => {
+ return (Object.values(Browser) as string[]).includes(t);
+ });
+ return browsers.flatMap(browser => {
+ const files = fs.readdirSync(this.browserRoot(browser));
+ return files
+ .map(file => {
+ const result = parseFolderPath(
+ path.join(this.browserRoot(browser), file)
+ );
+ if (!result) {
+ return null;
+ }
+ return new InstalledBrowser(
+ this,
+ browser,
+ result.buildId,
+ result.platform as BrowserPlatform
+ );
+ })
+ .filter((item: InstalledBrowser | null): item is InstalledBrowser => {
+ return item !== null;
+ });
+ });
+ }
+}
+
+function parseFolderPath(
+ folderPath: string
+): {platform: string; buildId: string} | undefined {
+ const name = path.basename(folderPath);
+ const splits = name.split('-');
+ if (splits.length !== 2) {
+ return;
+ }
+ const [platform, buildId] = splits;
+ if (!buildId || !platform) {
+ return;
+ }
+ return {platform, buildId};
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/browser-data.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/browser-data.ts
new file mode 100644
index 0000000..3ad8ccb
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/browser-data.ts
@@ -0,0 +1,197 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as chromeHeadlessShell from './chrome-headless-shell.js';
+import * as chrome from './chrome.js';
+import * as chromedriver from './chromedriver.js';
+import * as chromium from './chromium.js';
+import * as firefox from './firefox.js';
+import {
+ Browser,
+ BrowserPlatform,
+ BrowserTag,
+ ChromeReleaseChannel,
+ ProfileOptions,
+} from './types.js';
+
+export {ProfileOptions};
+
+export const downloadUrls = {
+ [Browser.CHROMEDRIVER]: chromedriver.resolveDownloadUrl,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadUrl,
+ [Browser.CHROME]: chrome.resolveDownloadUrl,
+ [Browser.CHROMIUM]: chromium.resolveDownloadUrl,
+ [Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+
+export const downloadPaths = {
+ [Browser.CHROMEDRIVER]: chromedriver.resolveDownloadPath,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.resolveDownloadPath,
+ [Browser.CHROME]: chrome.resolveDownloadPath,
+ [Browser.CHROMIUM]: chromium.resolveDownloadPath,
+ [Browser.FIREFOX]: firefox.resolveDownloadPath,
+};
+
+export const executablePathByBrowser = {
+ [Browser.CHROMEDRIVER]: chromedriver.relativeExecutablePath,
+ [Browser.CHROMEHEADLESSSHELL]: chromeHeadlessShell.relativeExecutablePath,
+ [Browser.CHROME]: chrome.relativeExecutablePath,
+ [Browser.CHROMIUM]: chromium.relativeExecutablePath,
+ [Browser.FIREFOX]: firefox.relativeExecutablePath,
+};
+
+export {Browser, BrowserPlatform, ChromeReleaseChannel};
+
+/**
+ * @public
+ */
+export async function resolveBuildId(
+ browser: Browser,
+ platform: BrowserPlatform,
+ tag: string
+): Promise {
+ switch (browser) {
+ case Browser.FIREFOX:
+ switch (tag as BrowserTag) {
+ case BrowserTag.LATEST:
+ return await firefox.resolveBuildId('FIREFOX_NIGHTLY');
+ case BrowserTag.BETA:
+ case BrowserTag.CANARY:
+ case BrowserTag.DEV:
+ case BrowserTag.STABLE:
+ throw new Error(
+ `${tag} is not supported for ${browser}. Use 'latest' instead.`
+ );
+ }
+ case Browser.CHROME: {
+ switch (tag as BrowserTag) {
+ case BrowserTag.LATEST:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.BETA:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.BETA);
+ case BrowserTag.CANARY:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.DEV:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.DEV);
+ case BrowserTag.STABLE:
+ return await chrome.resolveBuildId(ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chrome.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMEDRIVER: {
+ switch (tag) {
+ case BrowserTag.LATEST:
+ case BrowserTag.CANARY:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.CANARY);
+ case BrowserTag.BETA:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.BETA);
+ case BrowserTag.DEV:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.DEV);
+ case BrowserTag.STABLE:
+ return await chromedriver.resolveBuildId(ChromeReleaseChannel.STABLE);
+ default:
+ const result = await chromedriver.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMEHEADLESSSHELL: {
+ switch (tag) {
+ case BrowserTag.LATEST:
+ case BrowserTag.CANARY:
+ return await chromeHeadlessShell.resolveBuildId(
+ ChromeReleaseChannel.CANARY
+ );
+ case BrowserTag.BETA:
+ return await chromeHeadlessShell.resolveBuildId(
+ ChromeReleaseChannel.BETA
+ );
+ case BrowserTag.DEV:
+ return await chromeHeadlessShell.resolveBuildId(
+ ChromeReleaseChannel.DEV
+ );
+ case BrowserTag.STABLE:
+ return await chromeHeadlessShell.resolveBuildId(
+ ChromeReleaseChannel.STABLE
+ );
+ default:
+ const result = await chromeHeadlessShell.resolveBuildId(tag);
+ if (result) {
+ return result;
+ }
+ }
+ return tag;
+ }
+ case Browser.CHROMIUM:
+ switch (tag as BrowserTag) {
+ case BrowserTag.LATEST:
+ return await chromium.resolveBuildId(platform);
+ case BrowserTag.BETA:
+ case BrowserTag.CANARY:
+ case BrowserTag.DEV:
+ case BrowserTag.STABLE:
+ throw new Error(
+ `${tag} is not supported for ${browser}. Use 'latest' instead.`
+ );
+ }
+ }
+ // We assume the tag is the buildId if it didn't match any keywords.
+ return tag;
+}
+
+/**
+ * @public
+ */
+export async function createProfile(
+ browser: Browser,
+ opts: ProfileOptions
+): Promise {
+ switch (browser) {
+ case Browser.FIREFOX:
+ return await firefox.createProfile(opts);
+ case Browser.CHROME:
+ case Browser.CHROMIUM:
+ throw new Error(`Profile creation is not support for ${browser} yet`);
+ }
+}
+
+/**
+ * @public
+ */
+export function resolveSystemExecutablePath(
+ browser: Browser,
+ platform: BrowserPlatform,
+ channel: ChromeReleaseChannel
+): string {
+ switch (browser) {
+ case Browser.CHROMEDRIVER:
+ case Browser.CHROMEHEADLESSSHELL:
+ case Browser.FIREFOX:
+ case Browser.CHROMIUM:
+ throw new Error(
+ `System browser detection is not supported for ${browser} yet.`
+ );
+ case Browser.CHROME:
+ return chrome.resolveSystemExecutablePath(platform, channel);
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome-headless-shell.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome-headless-shell.ts
new file mode 100644
index 0000000..cb5b48f
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome-headless-shell.ts
@@ -0,0 +1,79 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+
+import {BrowserPlatform} from './types.js';
+
+function folder(platform: BrowserPlatform): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+
+export function resolveDownloadUrl(
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing'
+): string {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+
+export function resolveDownloadPath(
+ platform: BrowserPlatform,
+ buildId: string
+): string[] {
+ return [
+ buildId,
+ folder(platform),
+ `chrome-headless-shell-${folder(platform)}.zip`,
+ ];
+}
+
+export function relativeExecutablePath(
+ platform: BrowserPlatform,
+ _buildId: string
+): string {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join(
+ 'chrome-headless-shell-' + folder(platform),
+ 'chrome-headless-shell'
+ );
+ case BrowserPlatform.LINUX:
+ return path.join(
+ 'chrome-headless-shell-linux64',
+ 'chrome-headless-shell'
+ );
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join(
+ 'chrome-headless-shell-' + folder(platform),
+ 'chrome-headless-shell.exe'
+ );
+ }
+}
+
+export {resolveBuildId} from './chrome.js';
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome.ts
new file mode 100644
index 0000000..30df676
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chrome.ts
@@ -0,0 +1,205 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import path from 'path';
+
+import {getJSON} from '../httpUtil.js';
+
+import {BrowserPlatform, ChromeReleaseChannel} from './types.js';
+
+function folder(platform: BrowserPlatform): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+
+export function resolveDownloadUrl(
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing'
+): string {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+
+export function resolveDownloadPath(
+ platform: BrowserPlatform,
+ buildId: string
+): string[] {
+ return [buildId, folder(platform), `chrome-${folder(platform)}.zip`];
+}
+
+export function relativeExecutablePath(
+ platform: BrowserPlatform,
+ _buildId: string
+): string {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join(
+ 'chrome-' + folder(platform),
+ 'Google Chrome for Testing.app',
+ 'Contents',
+ 'MacOS',
+ 'Google Chrome for Testing'
+ );
+ case BrowserPlatform.LINUX:
+ return path.join('chrome-linux64', 'chrome');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chrome-' + folder(platform), 'chrome.exe');
+ }
+}
+
+export async function getLastKnownGoodReleaseForChannel(
+ channel: ChromeReleaseChannel
+): Promise<{version: string; revision: string}> {
+ const data = (await getJSON(
+ new URL(
+ 'https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json'
+ )
+ )) as {
+ channels: Record;
+ };
+
+ for (const channel of Object.keys(data.channels)) {
+ data.channels[channel.toLowerCase()] = data.channels[channel]!;
+ delete data.channels[channel];
+ }
+
+ return (
+ data as {
+ channels: {
+ [channel in ChromeReleaseChannel]: {version: string; revision: string};
+ };
+ }
+ ).channels[channel];
+}
+
+export async function getLastKnownGoodReleaseForMilestone(
+ milestone: string
+): Promise<{version: string; revision: string} | undefined> {
+ const data = (await getJSON(
+ new URL(
+ 'https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone.json'
+ )
+ )) as {
+ milestones: Record;
+ };
+ return data.milestones[milestone] as
+ | {version: string; revision: string}
+ | undefined;
+}
+
+export async function getLastKnownGoodReleaseForBuild(
+ /**
+ * @example `112.0.23`,
+ */
+ buildPrefix: string
+): Promise<{version: string; revision: string} | undefined> {
+ const data = (await getJSON(
+ new URL(
+ 'https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build.json'
+ )
+ )) as {
+ builds: Record;
+ };
+ return data.builds[buildPrefix] as
+ | {version: string; revision: string}
+ | undefined;
+}
+
+export async function resolveBuildId(
+ channel: ChromeReleaseChannel
+): Promise;
+export async function resolveBuildId(
+ channel: string
+): Promise;
+export async function resolveBuildId(
+ channel: ChromeReleaseChannel | string
+): Promise {
+ if (
+ Object.values(ChromeReleaseChannel).includes(
+ channel as ChromeReleaseChannel
+ )
+ ) {
+ return (
+ await getLastKnownGoodReleaseForChannel(channel as ChromeReleaseChannel)
+ ).version;
+ }
+ if (channel.match(/^\d+$/)) {
+ // Potentially a milestone.
+ return (await getLastKnownGoodReleaseForMilestone(channel))?.version;
+ }
+ if (channel.match(/^\d+\.\d+\.\d+$/)) {
+ // Potentially a build prefix without the patch version.
+ return (await getLastKnownGoodReleaseForBuild(channel))?.version;
+ }
+ return;
+}
+
+export function resolveSystemExecutablePath(
+ platform: BrowserPlatform,
+ channel: ChromeReleaseChannel
+): string {
+ switch (platform) {
+ case BrowserPlatform.WIN64:
+ case BrowserPlatform.WIN32:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.BETA:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Beta\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.CANARY:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome SxS\\Application\\chrome.exe`;
+ case ChromeReleaseChannel.DEV:
+ return `${process.env['PROGRAMFILES']}\\Google\\Chrome Dev\\Application\\chrome.exe`;
+ }
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
+ case ChromeReleaseChannel.BETA:
+ return '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta';
+ case ChromeReleaseChannel.CANARY:
+ return '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary';
+ case ChromeReleaseChannel.DEV:
+ return '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev';
+ }
+ case BrowserPlatform.LINUX:
+ switch (channel) {
+ case ChromeReleaseChannel.STABLE:
+ return '/opt/google/chrome/chrome';
+ case ChromeReleaseChannel.BETA:
+ return '/opt/google/chrome-beta/chrome';
+ case ChromeReleaseChannel.DEV:
+ return '/opt/google/chrome-unstable/chrome';
+ }
+ }
+
+ throw new Error(
+ `Unable to detect browser executable path for '${channel}' on ${platform}.`
+ );
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromedriver.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromedriver.ts
new file mode 100644
index 0000000..0518d2e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromedriver.ts
@@ -0,0 +1,66 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import path from 'path';
+
+import {BrowserPlatform} from './types.js';
+
+function folder(platform: BrowserPlatform): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'linux64';
+ case BrowserPlatform.MAC_ARM:
+ return 'mac-arm64';
+ case BrowserPlatform.MAC:
+ return 'mac-x64';
+ case BrowserPlatform.WIN32:
+ return 'win32';
+ case BrowserPlatform.WIN64:
+ return 'win64';
+ }
+}
+
+export function resolveDownloadUrl(
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing'
+): string {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+
+export function resolveDownloadPath(
+ platform: BrowserPlatform,
+ buildId: string
+): string[] {
+ return [buildId, folder(platform), `chromedriver-${folder(platform)}.zip`];
+}
+
+export function relativeExecutablePath(
+ platform: BrowserPlatform,
+ _buildId: string
+): string {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join('chromedriver-' + folder(platform), 'chromedriver');
+ case BrowserPlatform.LINUX:
+ return path.join('chromedriver-linux64', 'chromedriver');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chromedriver-' + folder(platform), 'chromedriver.exe');
+ }
+}
+
+export {resolveBuildId} from './chrome.js';
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromium.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromium.ts
new file mode 100644
index 0000000..4215d34
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/chromium.ts
@@ -0,0 +1,98 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import path from 'path';
+
+import {getText} from '../httpUtil.js';
+
+import {BrowserPlatform} from './types.js';
+
+function archive(platform: BrowserPlatform, buildId: string): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'chrome-linux';
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return 'chrome-mac';
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ // Windows archive name changed at r591479.
+ return parseInt(buildId, 10) > 591479 ? 'chrome-win' : 'chrome-win32';
+ }
+}
+
+function folder(platform: BrowserPlatform): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return 'Linux_x64';
+ case BrowserPlatform.MAC_ARM:
+ return 'Mac_Arm';
+ case BrowserPlatform.MAC:
+ return 'Mac';
+ case BrowserPlatform.WIN32:
+ return 'Win';
+ case BrowserPlatform.WIN64:
+ return 'Win_x64';
+ }
+}
+
+export function resolveDownloadUrl(
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl = 'https://storage.googleapis.com/chromium-browser-snapshots'
+): string {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+
+export function resolveDownloadPath(
+ platform: BrowserPlatform,
+ buildId: string
+): string[] {
+ return [folder(platform), buildId, `${archive(platform, buildId)}.zip`];
+}
+
+export function relativeExecutablePath(
+ platform: BrowserPlatform,
+ _buildId: string
+): string {
+ switch (platform) {
+ case BrowserPlatform.MAC:
+ case BrowserPlatform.MAC_ARM:
+ return path.join(
+ 'chrome-mac',
+ 'Chromium.app',
+ 'Contents',
+ 'MacOS',
+ 'Chromium'
+ );
+ case BrowserPlatform.LINUX:
+ return path.join('chrome-linux', 'chrome');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('chrome-win', 'chrome.exe');
+ }
+}
+export async function resolveBuildId(
+ platform: BrowserPlatform
+): Promise {
+ return await getText(
+ new URL(
+ `https://storage.googleapis.com/chromium-browser-snapshots/${folder(
+ platform
+ )}/LAST_CHANGE`
+ )
+ );
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/firefox.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/firefox.ts
new file mode 100644
index 0000000..91ea887
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/firefox.ts
@@ -0,0 +1,335 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import fs from 'fs';
+import path from 'path';
+
+import {getJSON} from '../httpUtil.js';
+
+import {BrowserPlatform, ProfileOptions} from './types.js';
+
+function archive(platform: BrowserPlatform, buildId: string): string {
+ switch (platform) {
+ case BrowserPlatform.LINUX:
+ return `firefox-${buildId}.en-US.${platform}-x86_64.tar.bz2`;
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return `firefox-${buildId}.en-US.mac.dmg`;
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return `firefox-${buildId}.en-US.${platform}.zip`;
+ }
+}
+
+export function resolveDownloadUrl(
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl = 'https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central'
+): string {
+ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;
+}
+
+export function resolveDownloadPath(
+ platform: BrowserPlatform,
+ buildId: string
+): string[] {
+ return [archive(platform, buildId)];
+}
+
+export function relativeExecutablePath(
+ platform: BrowserPlatform,
+ _buildId: string
+): string {
+ switch (platform) {
+ case BrowserPlatform.MAC_ARM:
+ case BrowserPlatform.MAC:
+ return path.join('Firefox Nightly.app', 'Contents', 'MacOS', 'firefox');
+ case BrowserPlatform.LINUX:
+ return path.join('firefox', 'firefox');
+ case BrowserPlatform.WIN32:
+ case BrowserPlatform.WIN64:
+ return path.join('firefox', 'firefox.exe');
+ }
+}
+
+export async function resolveBuildId(
+ channel: 'FIREFOX_NIGHTLY' = 'FIREFOX_NIGHTLY'
+): Promise {
+ const versions = (await getJSON(
+ new URL('https://product-details.mozilla.org/1.0/firefox_versions.json')
+ )) as Record;
+ const version = versions[channel];
+ if (!version) {
+ throw new Error(`Channel ${channel} is not found.`);
+ }
+ return version;
+}
+
+export async function createProfile(options: ProfileOptions): Promise {
+ if (!fs.existsSync(options.path)) {
+ await fs.promises.mkdir(options.path, {
+ recursive: true,
+ });
+ }
+ await writePreferences({
+ preferences: {
+ ...defaultProfilePreferences(options.preferences),
+ ...options.preferences,
+ },
+ path: options.path,
+ });
+}
+
+function defaultProfilePreferences(
+ extraPrefs: Record
+): Record {
+ const server = 'dummy.test';
+
+ const defaultPrefs = {
+ // Make sure Shield doesn't hit the network.
+ 'app.normandy.api_url': '',
+ // Disable Firefox old build background check
+ 'app.update.checkInstallTime': false,
+ // Disable automatically upgrading Firefox
+ 'app.update.disabledForTesting': true,
+
+ // Increase the APZ content response timeout to 1 minute
+ 'apz.content_response_timeout': 60000,
+
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'browser.contentblocking.features.standard':
+ '-tp,tpPrivate,cookieBehavior0,-cm,-fp',
+
+ // Enable the dump function: which sends messages to the system
+ // console
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
+ 'browser.dom.window.dump.enabled': true,
+ // Disable topstories
+ 'browser.newtabpage.activity-stream.feeds.system.topstories': false,
+ // Always display a blank page
+ 'browser.newtabpage.enabled': false,
+ // Background thumbnails in particular cause grief: and disabling
+ // thumbnails in general cannot hurt
+ 'browser.pagethumbnails.capturing_disabled': true,
+
+ // Disable safebrowsing components.
+ 'browser.safebrowsing.blockedURIs.enabled': false,
+ 'browser.safebrowsing.downloads.enabled': false,
+ 'browser.safebrowsing.malware.enabled': false,
+ 'browser.safebrowsing.passwords.enabled': false,
+ 'browser.safebrowsing.phishing.enabled': false,
+
+ // Disable updates to search engines.
+ 'browser.search.update': false,
+ // Do not restore the last open set of tabs if the browser has crashed
+ 'browser.sessionstore.resume_from_crash': false,
+ // Skip check for default browser on startup
+ 'browser.shell.checkDefaultBrowser': false,
+
+ // Disable newtabpage
+ 'browser.startup.homepage': 'about:blank',
+ // Do not redirect user when a milstone upgrade of Firefox is detected
+ 'browser.startup.homepage_override.mstone': 'ignore',
+ // Start with a blank page about:blank
+ 'browser.startup.page': 0,
+
+ // Do not allow background tabs to be zombified on Android: otherwise for
+ // tests that open additional tabs: the test harness tab itself might get
+ // unloaded
+ 'browser.tabs.disableBackgroundZombification': false,
+ // Do not warn when closing all other open tabs
+ 'browser.tabs.warnOnCloseOtherTabs': false,
+ // Do not warn when multiple tabs will be opened
+ 'browser.tabs.warnOnOpen': false,
+
+ // Do not automatically offer translations, as tests do not expect this.
+ 'browser.translations.automaticallyPopup': false,
+
+ // Disable the UI tour.
+ 'browser.uitour.enabled': false,
+ // Turn off search suggestions in the location bar so as not to trigger
+ // network connections.
+ 'browser.urlbar.suggest.searches': false,
+ // Disable first run splash page on Windows 10
+ 'browser.usedOnWindows10.introURL': '',
+ // Do not warn on quitting Firefox
+ 'browser.warnOnQuit': false,
+
+ // Defensively disable data reporting systems
+ 'datareporting.healthreport.documentServerURI': `http://${server}/dummy/healthreport/`,
+ 'datareporting.healthreport.logging.consoleEnabled': false,
+ 'datareporting.healthreport.service.enabled': false,
+ 'datareporting.healthreport.service.firstRun': false,
+ 'datareporting.healthreport.uploadEnabled': false,
+
+ // Do not show datareporting policy notifications which can interfere with tests
+ 'datareporting.policy.dataSubmissionEnabled': false,
+ 'datareporting.policy.dataSubmissionPolicyBypassNotification': true,
+
+ // DevTools JSONViewer sometimes fails to load dependencies with its require.js.
+ // This doesn't affect Puppeteer but spams console (Bug 1424372)
+ 'devtools.jsonview.enabled': false,
+
+ // Disable popup-blocker
+ 'dom.disable_open_during_load': false,
+
+ // Enable the support for File object creation in the content process
+ // Required for |Page.setFileInputFiles| protocol method.
+ 'dom.file.createInChild': true,
+
+ // Disable the ProcessHangMonitor
+ 'dom.ipc.reportProcessHangs': false,
+
+ // Disable slow script dialogues
+ 'dom.max_chrome_script_run_time': 0,
+ 'dom.max_script_run_time': 0,
+
+ // Only load extensions from the application and user profile
+ // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
+ 'extensions.autoDisableScopes': 0,
+ 'extensions.enabledScopes': 5,
+
+ // Disable metadata caching for installed add-ons by default
+ 'extensions.getAddons.cache.enabled': false,
+
+ // Disable installing any distribution extensions or add-ons.
+ 'extensions.installDistroAddons': false,
+
+ // Disabled screenshots extension
+ 'extensions.screenshots.disabled': true,
+
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.enabled': false,
+
+ // Turn off extension updates so they do not bother tests
+ 'extensions.update.notifyUser': false,
+
+ // Make sure opening about:addons will not hit the network
+ 'extensions.webservice.discoverURL': `http://${server}/dummy/discoveryURL`,
+
+ // Temporarily force disable BFCache in parent (https://bit.ly/bug-1732263)
+ 'fission.bfcacheInParent': false,
+
+ // Force all web content to use a single content process
+ 'fission.webContentIsolationStrategy': 0,
+
+ // Allow the application to have focus even it runs in the background
+ 'focusmanager.testmode': true,
+ // Disable useragent updates
+ 'general.useragent.updates.enabled': false,
+ // Always use network provider for geolocation tests so we bypass the
+ // macOS dialog raised by the corelocation provider
+ 'geo.provider.testing': true,
+ // Do not scan Wifi
+ 'geo.wifi.scan': false,
+ // No hang monitor
+ 'hangmonitor.timeout': 0,
+ // Show chrome errors and warnings in the error console
+ 'javascript.options.showInConsole': true,
+
+ // Disable download and usage of OpenH264: and Widevine plugins
+ 'media.gmp-manager.updateEnabled': false,
+ // Prevent various error message on the console
+ // jest-puppeteer asserts that no error message is emitted by the console
+ 'network.cookie.cookieBehavior': 0,
+
+ // Disable experimental feature that is only available in Nightly
+ 'network.cookie.sameSite.laxByDefault': false,
+
+ // Do not prompt for temporary redirects
+ 'network.http.prompt-temp-redirect': false,
+
+ // Disable speculative connections so they are not reported as leaking
+ // when they are hanging around
+ 'network.http.speculative-parallel-limit': 0,
+
+ // Do not automatically switch between offline and online
+ 'network.manage-offline-status': false,
+
+ // Make sure SNTP requests do not hit the network
+ 'network.sntp.pools': server,
+
+ // Disable Flash.
+ 'plugin.state.flash': 0,
+
+ 'privacy.trackingprotection.enabled': false,
+
+ // Can be removed once Firefox 89 is no longer supported
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1710839
+ 'remote.enabled': true,
+
+ // Don't do network connections for mitm priming
+ 'security.certerrors.mitm.priming.enabled': false,
+ // Local documents have access to all other local documents,
+ // including directory listings
+ 'security.fileuri.strict_origin_policy': false,
+ // Do not wait for the notification button security delay
+ 'security.notification_enable_delay': 0,
+
+ // Ensure blocklist updates do not hit the network
+ 'services.settings.server': `http://${server}/dummy/blocklist/`,
+
+ // Do not automatically fill sign-in forms with known usernames and
+ // passwords
+ 'signon.autofillForms': false,
+ // Disable password capture, so that tests that include forms are not
+ // influenced by the presence of the persistent doorhanger notification
+ 'signon.rememberSignons': false,
+
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url': 'about:blank',
+
+ // Disable first-run welcome page
+ 'startup.homepage_welcome_url.additional': '',
+
+ // Disable browser animations (tabs, fullscreen, sliding alerts)
+ 'toolkit.cosmeticAnimations.enabled': false,
+
+ // Prevent starting into safe mode after application crashes
+ 'toolkit.startup.max_resumed_crashes': -1,
+ };
+
+ return Object.assign(defaultPrefs, extraPrefs);
+}
+
+/**
+ * Populates the user.js file with custom preferences as needed to allow
+ * Firefox's CDP support to properly function. These preferences will be
+ * automatically copied over to prefs.js during startup of Firefox. To be
+ * able to restore the original values of preferences a backup of prefs.js
+ * will be created.
+ *
+ * @param prefs - List of preferences to add.
+ * @param profilePath - Firefox profile to write the preferences to.
+ */
+async function writePreferences(options: ProfileOptions): Promise {
+ const lines = Object.entries(options.preferences).map(([key, value]) => {
+ return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
+ });
+
+ await fs.promises.writeFile(
+ path.join(options.path, 'user.js'),
+ lines.join('\n')
+ );
+
+ // Create a backup of the preferences file if it already exitsts.
+ const prefsPath = path.join(options.path, 'prefs.js');
+ if (fs.existsSync(prefsPath)) {
+ const prefsBackupPath = path.join(options.path, 'prefs.js.puppeteer');
+ await fs.promises.copyFile(prefsPath, prefsBackupPath);
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/types.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/types.ts
new file mode 100644
index 0000000..2f818e0
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/browser-data/types.ts
@@ -0,0 +1,80 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as chrome from './chrome.js';
+import * as firefox from './firefox.js';
+
+/**
+ * Supported browsers.
+ *
+ * @public
+ */
+export enum Browser {
+ CHROME = 'chrome',
+ CHROMEHEADLESSSHELL = 'chrome-headless-shell',
+ CHROMIUM = 'chromium',
+ FIREFOX = 'firefox',
+ CHROMEDRIVER = 'chromedriver',
+}
+
+/**
+ * Platform names used to identify a OS platfrom x architecture combination in the way
+ * that is relevant for the browser download.
+ *
+ * @public
+ */
+export enum BrowserPlatform {
+ LINUX = 'linux',
+ MAC = 'mac',
+ MAC_ARM = 'mac_arm',
+ WIN32 = 'win32',
+ WIN64 = 'win64',
+}
+
+export const downloadUrls = {
+ [Browser.CHROME]: chrome.resolveDownloadUrl,
+ [Browser.CHROMIUM]: chrome.resolveDownloadUrl,
+ [Browser.FIREFOX]: firefox.resolveDownloadUrl,
+};
+
+/**
+ * @public
+ */
+export enum BrowserTag {
+ CANARY = 'canary',
+ BETA = 'beta',
+ DEV = 'dev',
+ STABLE = 'stable',
+ LATEST = 'latest',
+}
+
+/**
+ * @public
+ */
+export interface ProfileOptions {
+ preferences: Record;
+ path: string;
+}
+
+/**
+ * @public
+ */
+export enum ChromeReleaseChannel {
+ STABLE = 'stable',
+ DEV = 'dev',
+ CANARY = 'canary',
+ BETA = 'beta',
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/debug.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/debug.ts
new file mode 100644
index 0000000..eee0a34
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/debug.ts
@@ -0,0 +1,19 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import debug from 'debug';
+
+export {debug};
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/detectPlatform.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/detectPlatform.ts
new file mode 100644
index 0000000..fed8c2e
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/detectPlatform.ts
@@ -0,0 +1,61 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import os from 'os';
+
+import {BrowserPlatform} from './browser-data/browser-data.js';
+
+/**
+ * @public
+ */
+export function detectBrowserPlatform(): BrowserPlatform | undefined {
+ const platform = os.platform();
+ switch (platform) {
+ case 'darwin':
+ return os.arch() === 'arm64'
+ ? BrowserPlatform.MAC_ARM
+ : BrowserPlatform.MAC;
+ case 'linux':
+ return BrowserPlatform.LINUX;
+ case 'win32':
+ return os.arch() === 'x64' ||
+ // Windows 11 for ARM supports x64 emulation
+ (os.arch() === 'arm64' && isWindows11(os.release()))
+ ? BrowserPlatform.WIN64
+ : BrowserPlatform.WIN32;
+ default:
+ return undefined;
+ }
+}
+
+/**
+ * Windows 11 is identified by the version 10.0.22000 or greater
+ * @internal
+ */
+function isWindows11(version: string): boolean {
+ const parts = version.split('.');
+ if (parts.length > 2) {
+ const major = parseInt(parts[0] as string, 10);
+ const minor = parseInt(parts[1] as string, 10);
+ const patch = parseInt(parts[2] as string, 10);
+ return (
+ major > 10 ||
+ (major === 10 && minor > 0) ||
+ (major === 10 && minor === 0 && patch >= 22000)
+ );
+ }
+ return false;
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/fileUtil.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/fileUtil.ts
new file mode 100644
index 0000000..6139acc
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/fileUtil.ts
@@ -0,0 +1,89 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {exec as execChildProcess} from 'child_process';
+import {createReadStream} from 'fs';
+import {mkdir, readdir} from 'fs/promises';
+import * as path from 'path';
+import {promisify} from 'util';
+
+import extractZip from 'extract-zip';
+import tar from 'tar-fs';
+import bzip from 'unbzip2-stream';
+
+const exec = promisify(execChildProcess);
+
+/**
+ * @internal
+ */
+export async function unpackArchive(
+ archivePath: string,
+ folderPath: string
+): Promise {
+ if (archivePath.endsWith('.zip')) {
+ await extractZip(archivePath, {dir: folderPath});
+ } else if (archivePath.endsWith('.tar.bz2')) {
+ await extractTar(archivePath, folderPath);
+ } else if (archivePath.endsWith('.dmg')) {
+ await mkdir(folderPath);
+ await installDMG(archivePath, folderPath);
+ } else {
+ throw new Error(`Unsupported archive format: ${archivePath}`);
+ }
+}
+
+/**
+ * @internal
+ */
+function extractTar(tarPath: string, folderPath: string): Promise {
+ return new Promise((fulfill, reject) => {
+ const tarStream = tar.extract(folderPath);
+ tarStream.on('error', reject);
+ tarStream.on('finish', fulfill);
+ const readStream = createReadStream(tarPath);
+ readStream.pipe(bzip()).pipe(tarStream);
+ });
+}
+
+/**
+ * @internal
+ */
+async function installDMG(dmgPath: string, folderPath: string): Promise {
+ const {stdout} = await exec(
+ `hdiutil attach -nobrowse -noautoopen "${dmgPath}"`
+ );
+
+ const volumes = stdout.match(/\/Volumes\/(.*)/m);
+ if (!volumes) {
+ throw new Error(`Could not find volume path in ${stdout}`);
+ }
+ const mountPath = volumes[0]!;
+
+ try {
+ const fileNames = await readdir(mountPath);
+ const appName = fileNames.find(item => {
+ return typeof item === 'string' && item.endsWith('.app');
+ });
+ if (!appName) {
+ throw new Error(`Cannot find app in ${mountPath}`);
+ }
+ const mountedPath = path.join(mountPath!, appName);
+
+ await exec(`cp -R "${mountedPath}" "${folderPath}"`);
+ } finally {
+ await exec(`hdiutil detach "${mountPath}" -quiet`);
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/httpUtil.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/httpUtil.ts
new file mode 100644
index 0000000..efbf57a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/httpUtil.ts
@@ -0,0 +1,161 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {createWriteStream} from 'fs';
+import * as http from 'http';
+import * as https from 'https';
+import {URL, urlToHttpOptions} from 'url';
+
+import {ProxyAgent} from 'proxy-agent';
+
+export function headHttpRequest(url: URL): Promise {
+ return new Promise(resolve => {
+ const request = httpRequest(
+ url,
+ 'HEAD',
+ response => {
+ // consume response data free node process
+ response.resume();
+ resolve(response.statusCode === 200);
+ },
+ false
+ );
+ request.on('error', () => {
+ resolve(false);
+ });
+ });
+}
+
+export function httpRequest(
+ url: URL,
+ method: string,
+ response: (x: http.IncomingMessage) => void,
+ keepAlive = true
+): http.ClientRequest {
+ const options: http.RequestOptions = {
+ protocol: url.protocol,
+ hostname: url.hostname,
+ port: url.port,
+ path: url.pathname + url.search,
+ method,
+ headers: keepAlive ? {Connection: 'keep-alive'} : undefined,
+ auth: urlToHttpOptions(url).auth,
+ agent: new ProxyAgent(),
+ };
+
+ const requestCallback = (res: http.IncomingMessage): void => {
+ if (
+ res.statusCode &&
+ res.statusCode >= 300 &&
+ res.statusCode < 400 &&
+ res.headers.location
+ ) {
+ httpRequest(new URL(res.headers.location), method, response);
+ } else {
+ response(res);
+ }
+ };
+ const request =
+ options.protocol === 'https:'
+ ? https.request(options, requestCallback)
+ : http.request(options, requestCallback);
+ request.end();
+ return request;
+}
+
+/**
+ * @internal
+ */
+export function downloadFile(
+ url: URL,
+ destinationPath: string,
+ progressCallback?: (downloadedBytes: number, totalBytes: number) => void
+): Promise {
+ return new Promise((resolve, reject) => {
+ let downloadedBytes = 0;
+ let totalBytes = 0;
+
+ function onData(chunk: string): void {
+ downloadedBytes += chunk.length;
+ progressCallback!(downloadedBytes, totalBytes);
+ }
+
+ const request = httpRequest(url, 'GET', response => {
+ if (response.statusCode !== 200) {
+ const error = new Error(
+ `Download failed: server returned code ${response.statusCode}. URL: ${url}`
+ );
+ // consume response data to free up memory
+ response.resume();
+ reject(error);
+ return;
+ }
+ const file = createWriteStream(destinationPath);
+ file.on('finish', () => {
+ return resolve();
+ });
+ file.on('error', error => {
+ return reject(error);
+ });
+ response.pipe(file);
+ totalBytes = parseInt(response.headers['content-length']!, 10);
+ if (progressCallback) {
+ response.on('data', onData);
+ }
+ });
+ request.on('error', error => {
+ return reject(error);
+ });
+ });
+}
+
+export async function getJSON(url: URL): Promise {
+ const text = await getText(url);
+ try {
+ return JSON.parse(text);
+ } catch {
+ throw new Error('Could not parse JSON from ' + url.toString());
+ }
+}
+
+export function getText(url: URL): Promise {
+ return new Promise((resolve, reject) => {
+ const request = httpRequest(
+ url,
+ 'GET',
+ response => {
+ let data = '';
+ if (response.statusCode && response.statusCode >= 400) {
+ return reject(new Error(`Got status code ${response.statusCode}`));
+ }
+ response.on('data', chunk => {
+ data += chunk;
+ });
+ response.on('end', () => {
+ try {
+ return resolve(String(data));
+ } catch {
+ return reject(new Error('Chrome version not found'));
+ }
+ });
+ },
+ false
+ );
+ request.on('error', err => {
+ reject(err);
+ });
+ });
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/install.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/install.ts
new file mode 100644
index 0000000..6b2160a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/install.ts
@@ -0,0 +1,278 @@
+/**
+ * Copyright 2017 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import assert from 'assert';
+import {existsSync} from 'fs';
+import {mkdir, unlink} from 'fs/promises';
+import os from 'os';
+import path from 'path';
+
+import {
+ Browser,
+ BrowserPlatform,
+ downloadUrls,
+} from './browser-data/browser-data.js';
+import {Cache, InstalledBrowser} from './Cache.js';
+import {debug} from './debug.js';
+import {detectBrowserPlatform} from './detectPlatform.js';
+import {unpackArchive} from './fileUtil.js';
+import {downloadFile, headHttpRequest} from './httpUtil.js';
+
+const debugInstall = debug('puppeteer:browsers:install');
+
+const times = new Map();
+function debugTime(label: string) {
+ times.set(label, process.hrtime());
+}
+
+function debugTimeEnd(label: string) {
+ const end = process.hrtime();
+ const start = times.get(label);
+ if (!start) {
+ return;
+ }
+ const duration =
+ end[0] * 1000 + end[1] / 1e6 - (start[0] * 1000 + start[1] / 1e6); // calculate duration in milliseconds
+ debugInstall(`Duration for ${label}: ${duration}ms`);
+}
+
+/**
+ * @public
+ */
+export interface InstallOptions {
+ /**
+ * Determines the path to download browsers to.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to install.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+ /**
+ * Provides information about the progress of the download.
+ */
+ downloadProgressCallback?: (
+ downloadedBytes: number,
+ totalBytes: number
+ ) => void;
+ /**
+ * Determines the host that will be used for downloading.
+ *
+ * @defaultValue Either
+ *
+ * - https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing or
+ * - https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central
+ *
+ */
+ baseUrl?: string;
+ /**
+ * Whether to unpack and install browser archives.
+ *
+ * @defaultValue `true`
+ */
+ unpack?: boolean;
+}
+
+/**
+ * @public
+ */
+export function install(
+ options: InstallOptions & {unpack?: true}
+): Promise;
+export function install(
+ options: InstallOptions & {unpack: false}
+): Promise;
+export async function install(
+ options: InstallOptions
+): Promise {
+ options.platform ??= detectBrowserPlatform();
+ options.unpack ??= true;
+ if (!options.platform) {
+ throw new Error(
+ `Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`
+ );
+ }
+ const url = getDownloadUrl(
+ options.browser,
+ options.platform,
+ options.buildId,
+ options.baseUrl
+ );
+ const fileName = url.toString().split('/').pop();
+ assert(fileName, `A malformed download URL was found: ${url}.`);
+ const cache = new Cache(options.cacheDir);
+ const browserRoot = cache.browserRoot(options.browser);
+ const archivePath = path.join(browserRoot, `${options.buildId}-${fileName}`);
+ if (!existsSync(browserRoot)) {
+ await mkdir(browserRoot, {recursive: true});
+ }
+
+ if (!options.unpack) {
+ if (existsSync(archivePath)) {
+ return archivePath;
+ }
+ debugInstall(`Downloading binary from ${url}`);
+ debugTime('download');
+ await downloadFile(url, archivePath, options.downloadProgressCallback);
+ debugTimeEnd('download');
+ return archivePath;
+ }
+
+ const outputPath = cache.installationDir(
+ options.browser,
+ options.platform,
+ options.buildId
+ );
+ if (existsSync(outputPath)) {
+ return new InstalledBrowser(
+ cache,
+ options.browser,
+ options.buildId,
+ options.platform
+ );
+ }
+ try {
+ debugInstall(`Downloading binary from ${url}`);
+ try {
+ debugTime('download');
+ await downloadFile(url, archivePath, options.downloadProgressCallback);
+ } finally {
+ debugTimeEnd('download');
+ }
+
+ debugInstall(`Installing ${archivePath} to ${outputPath}`);
+ try {
+ debugTime('extract');
+ await unpackArchive(archivePath, outputPath);
+ } finally {
+ debugTimeEnd('extract');
+ }
+ } finally {
+ if (existsSync(archivePath)) {
+ await unlink(archivePath);
+ }
+ }
+ return new InstalledBrowser(
+ cache,
+ options.browser,
+ options.buildId,
+ options.platform
+ );
+}
+
+/**
+ * @public
+ */
+export interface UninstallOptions {
+ /**
+ * Determines the platform for the browser binary.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which browser to uninstall.
+ */
+ browser: Browser;
+ /**
+ * The browser build to uninstall
+ */
+ buildId: string;
+}
+
+/**
+ *
+ * @public
+ */
+export async function uninstall(options: UninstallOptions): Promise {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(
+ `Cannot detect the browser platform for: ${os.platform()} (${os.arch()})`
+ );
+ }
+
+ new Cache(options.cacheDir).uninstall(
+ options.browser,
+ options.platform,
+ options.buildId
+ );
+}
+
+/**
+ * @public
+ */
+export interface GetInstalledBrowsersOptions {
+ /**
+ * The path to the root of the cache directory.
+ */
+ cacheDir: string;
+}
+
+/**
+ * Returns metadata about browsers installed in the cache directory.
+ *
+ * @public
+ */
+export async function getInstalledBrowsers(
+ options: GetInstalledBrowsersOptions
+): Promise {
+ return new Cache(options.cacheDir).getInstalledBrowsers();
+}
+
+/**
+ * @public
+ */
+export async function canDownload(options: InstallOptions): Promise {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(
+ `Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`
+ );
+ }
+ return await headHttpRequest(
+ getDownloadUrl(
+ options.browser,
+ options.platform,
+ options.buildId,
+ options.baseUrl
+ )
+ );
+}
+
+function getDownloadUrl(
+ browser: Browser,
+ platform: BrowserPlatform,
+ buildId: string,
+ baseUrl?: string
+): URL {
+ return new URL(downloadUrls[browser](platform, buildId, baseUrl));
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/launch.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/launch.ts
new file mode 100644
index 0000000..e47f14a
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/launch.ts
@@ -0,0 +1,495 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import childProcess from 'child_process';
+import {accessSync} from 'fs';
+import os from 'os';
+import path from 'path';
+import readline from 'readline';
+
+import {
+ Browser,
+ BrowserPlatform,
+ executablePathByBrowser,
+ resolveSystemExecutablePath,
+ ChromeReleaseChannel,
+} from './browser-data/browser-data.js';
+import {Cache} from './Cache.js';
+import {debug} from './debug.js';
+import {detectBrowserPlatform} from './detectPlatform.js';
+
+const debugLaunch = debug('puppeteer:browsers:launcher');
+
+/**
+ * @public
+ */
+export interface ComputeExecutablePathOptions {
+ /**
+ * Root path to the storage directory.
+ */
+ cacheDir: string;
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Determines which buildId to download. BuildId should uniquely identify
+ * binaries and they are used for caching.
+ */
+ buildId: string;
+}
+
+/**
+ * @public
+ */
+export function computeExecutablePath(
+ options: ComputeExecutablePathOptions
+): string {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(
+ `Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`
+ );
+ }
+ const installationDir = new Cache(options.cacheDir).installationDir(
+ options.browser,
+ options.platform,
+ options.buildId
+ );
+ return path.join(
+ installationDir,
+ executablePathByBrowser[options.browser](options.platform, options.buildId)
+ );
+}
+
+/**
+ * @public
+ */
+export interface SystemOptions {
+ /**
+ * Determines which platform the browser will be suited for.
+ *
+ * @defaultValue **Auto-detected.**
+ */
+ platform?: BrowserPlatform;
+ /**
+ * Determines which browser to launch.
+ */
+ browser: Browser;
+ /**
+ * Release channel to look for on the system.
+ */
+ channel: ChromeReleaseChannel;
+}
+
+/**
+ * @public
+ */
+export function computeSystemExecutablePath(options: SystemOptions): string {
+ options.platform ??= detectBrowserPlatform();
+ if (!options.platform) {
+ throw new Error(
+ `Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`
+ );
+ }
+ const path = resolveSystemExecutablePath(
+ options.browser,
+ options.platform,
+ options.channel
+ );
+ try {
+ accessSync(path);
+ } catch (error) {
+ throw new Error(
+ `Could not find Google Chrome executable for channel '${options.channel}' at '${path}'.`
+ );
+ }
+ return path;
+}
+
+/**
+ * @public
+ */
+export interface LaunchOptions {
+ executablePath: string;
+ pipe?: boolean;
+ dumpio?: boolean;
+ args?: string[];
+ env?: Record;
+ handleSIGINT?: boolean;
+ handleSIGTERM?: boolean;
+ handleSIGHUP?: boolean;
+ detached?: boolean;
+ onExit?: () => Promise;
+}
+
+/**
+ * @public
+ */
+export function launch(opts: LaunchOptions): Process {
+ return new Process(opts);
+}
+
+/**
+ * @public
+ */
+export const CDP_WEBSOCKET_ENDPOINT_REGEX =
+ /^DevTools listening on (ws:\/\/.*)$/;
+
+/**
+ * @public
+ */
+export const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX =
+ /^WebDriver BiDi listening on (ws:\/\/.*)$/;
+
+/**
+ * @public
+ */
+export class Process {
+ #executablePath;
+ #args: string[];
+ #browserProcess: childProcess.ChildProcess;
+ #exited = false;
+ // The browser process can be closed externally or from the driver process. We
+ // need to invoke the hooks only once though but we don't know how many times
+ // we will be invoked.
+ #hooksRan = false;
+ #onExitHook = async () => {};
+ #browserProcessExiting: Promise;
+
+ constructor(opts: LaunchOptions) {
+ this.#executablePath = opts.executablePath;
+ this.#args = opts.args ?? [];
+
+ opts.pipe ??= false;
+ opts.dumpio ??= false;
+ opts.handleSIGINT ??= true;
+ opts.handleSIGTERM ??= true;
+ opts.handleSIGHUP ??= true;
+ // On non-windows platforms, `detached: true` makes child process a
+ // leader of a new process group, making it possible to kill child
+ // process tree with `.kill(-pid)` command. @see
+ // https://nodejs.org/api/child_process.html#child_process_options_detached
+ opts.detached ??= process.platform !== 'win32';
+
+ const stdio = this.#configureStdio({
+ pipe: opts.pipe,
+ dumpio: opts.dumpio,
+ });
+
+ debugLaunch(`Launching ${this.#executablePath} ${this.#args.join(' ')}`, {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ });
+
+ this.#browserProcess = childProcess.spawn(
+ this.#executablePath,
+ this.#args,
+ {
+ detached: opts.detached,
+ env: opts.env,
+ stdio,
+ }
+ );
+
+ debugLaunch(`Launched ${this.#browserProcess.pid}`);
+ if (opts.dumpio) {
+ this.#browserProcess.stderr?.pipe(process.stderr);
+ this.#browserProcess.stdout?.pipe(process.stdout);
+ }
+ process.on('exit', this.#onDriverProcessExit);
+ if (opts.handleSIGINT) {
+ process.on('SIGINT', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGTERM) {
+ process.on('SIGTERM', this.#onDriverProcessSignal);
+ }
+ if (opts.handleSIGHUP) {
+ process.on('SIGHUP', this.#onDriverProcessSignal);
+ }
+ if (opts.onExit) {
+ this.#onExitHook = opts.onExit;
+ }
+ this.#browserProcessExiting = new Promise((resolve, reject) => {
+ this.#browserProcess.once('exit', async () => {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} onExit`);
+ this.#clearListeners();
+ this.#exited = true;
+ try {
+ await this.#runHooks();
+ } catch (err) {
+ reject(err);
+ return;
+ }
+ resolve();
+ });
+ });
+ }
+
+ async #runHooks() {
+ if (this.#hooksRan) {
+ return;
+ }
+ this.#hooksRan = true;
+ await this.#onExitHook();
+ }
+
+ get nodeProcess(): childProcess.ChildProcess {
+ return this.#browserProcess;
+ }
+
+ #configureStdio(opts: {
+ pipe: boolean;
+ dumpio: boolean;
+ }): Array<'ignore' | 'pipe'> {
+ if (opts.pipe) {
+ if (opts.dumpio) {
+ return ['ignore', 'pipe', 'pipe', 'pipe', 'pipe'];
+ } else {
+ return ['ignore', 'ignore', 'ignore', 'pipe', 'pipe'];
+ }
+ } else {
+ if (opts.dumpio) {
+ return ['pipe', 'pipe', 'pipe'];
+ } else {
+ return ['pipe', 'ignore', 'pipe'];
+ }
+ }
+ }
+
+ #clearListeners(): void {
+ process.off('exit', this.#onDriverProcessExit);
+ process.off('SIGINT', this.#onDriverProcessSignal);
+ process.off('SIGTERM', this.#onDriverProcessSignal);
+ process.off('SIGHUP', this.#onDriverProcessSignal);
+ }
+
+ #onDriverProcessExit = (_code: number) => {
+ this.kill();
+ };
+
+ #onDriverProcessSignal = (signal: string): void => {
+ switch (signal) {
+ case 'SIGINT':
+ this.kill();
+ process.exit(130);
+ case 'SIGTERM':
+ case 'SIGHUP':
+ void this.close();
+ break;
+ }
+ };
+
+ async close(): Promise {
+ await this.#runHooks();
+ if (!this.#exited) {
+ this.kill();
+ }
+ return this.#browserProcessExiting;
+ }
+
+ hasClosed(): Promise {
+ return this.#browserProcessExiting;
+ }
+
+ kill(): void {
+ debugLaunch(`Trying to kill ${this.#browserProcess.pid}`);
+ // If the process failed to launch (for example if the browser executable path
+ // is invalid), then the process does not get a pid assigned. A call to
+ // `proc.kill` would error, as the `pid` to-be-killed can not be found.
+ if (
+ this.#browserProcess &&
+ this.#browserProcess.pid &&
+ pidExists(this.#browserProcess.pid)
+ ) {
+ try {
+ debugLaunch(`Browser process ${this.#browserProcess.pid} exists`);
+ if (process.platform === 'win32') {
+ try {
+ childProcess.execSync(
+ `taskkill /pid ${this.#browserProcess.pid} /T /F`
+ );
+ } catch (error) {
+ debugLaunch(
+ `Killing ${this.#browserProcess.pid} using taskkill failed`,
+ error
+ );
+ // taskkill can fail to kill the process e.g. due to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill();
+ }
+ } else {
+ // on linux the process group can be killed with the group id prefixed with
+ // a minus sign. The process group id is the group leader's pid.
+ const processGroupId = -this.#browserProcess.pid;
+
+ try {
+ process.kill(processGroupId, 'SIGKILL');
+ } catch (error) {
+ debugLaunch(
+ `Killing ${this.#browserProcess.pid} using process.kill failed`,
+ error
+ );
+ // Killing the process group can fail due e.g. to missing permissions.
+ // Let's kill the process via Node API. This delays killing of all child
+ // processes of `this.proc` until the main Node.js process dies.
+ this.#browserProcess.kill('SIGKILL');
+ }
+ }
+ } catch (error) {
+ throw new Error(
+ `${PROCESS_ERROR_EXPLANATION}\nError cause: ${
+ isErrorLike(error) ? error.stack : error
+ }`
+ );
+ }
+ }
+ this.#clearListeners();
+ }
+
+ waitForLineOutput(regex: RegExp, timeout = 0): Promise {
+ if (!this.#browserProcess.stderr) {
+ throw new Error('`browserProcess` does not have stderr.');
+ }
+ const rl = readline.createInterface(this.#browserProcess.stderr);
+ let stderr = '';
+
+ return new Promise((resolve, reject) => {
+ rl.on('line', onLine);
+ rl.on('close', onClose);
+ this.#browserProcess.on('exit', onClose);
+ this.#browserProcess.on('error', onClose);
+ const timeoutId =
+ timeout > 0 ? setTimeout(onTimeout, timeout) : undefined;
+
+ const cleanup = (): void => {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ rl.off('line', onLine);
+ rl.off('close', onClose);
+ this.#browserProcess.off('exit', onClose);
+ this.#browserProcess.off('error', onClose);
+ };
+
+ function onClose(error?: Error): void {
+ cleanup();
+ reject(
+ new Error(
+ [
+ `Failed to launch the browser process!${
+ error ? ' ' + error.message : ''
+ }`,
+ stderr,
+ '',
+ 'TROUBLESHOOTING: https://pptr.dev/troubleshooting',
+ '',
+ ].join('\n')
+ )
+ );
+ }
+
+ function onTimeout(): void {
+ cleanup();
+ reject(
+ new TimeoutError(
+ `Timed out after ${timeout} ms while waiting for the WS endpoint URL to appear in stdout!`
+ )
+ );
+ }
+
+ function onLine(line: string): void {
+ stderr += line + '\n';
+ const match = line.match(regex);
+ if (!match) {
+ return;
+ }
+ cleanup();
+ // The RegExp matches, so this will obviously exist.
+ resolve(match[1]!);
+ }
+ });
+ }
+}
+
+const PROCESS_ERROR_EXPLANATION = `Puppeteer was unable to kill the process which ran the browser binary.
+This means that, on future Puppeteer launches, Puppeteer might not be able to launch the browser.
+Please check your open processes and ensure that the browser processes that Puppeteer launched have been killed.
+If you think this is a bug, please report it on the Puppeteer issue tracker.`;
+
+/**
+ * @internal
+ */
+function pidExists(pid: number): boolean {
+ try {
+ return process.kill(pid, 0);
+ } catch (error) {
+ if (isErrnoException(error)) {
+ if (error.code && error.code === 'ESRCH') {
+ return false;
+ }
+ }
+ throw error;
+ }
+}
+
+/**
+ * @internal
+ */
+export interface ErrorLike extends Error {
+ name: string;
+ message: string;
+}
+
+/**
+ * @internal
+ */
+export function isErrorLike(obj: unknown): obj is ErrorLike {
+ return (
+ typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj
+ );
+}
+/**
+ * @internal
+ */
+export function isErrnoException(obj: unknown): obj is NodeJS.ErrnoException {
+ return (
+ isErrorLike(obj) &&
+ ('errno' in obj || 'code' in obj || 'path' in obj || 'syscall' in obj)
+ );
+}
+
+/**
+ * @public
+ */
+export class TimeoutError extends Error {
+ /**
+ * @internal
+ */
+ constructor(message?: string) {
+ super(message);
+ this.name = this.constructor.name;
+ Error.captureStackTrace(this, this.constructor);
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/main-cli.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/main-cli.ts
new file mode 100644
index 0000000..a086c1c
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/main-cli.ts
@@ -0,0 +1,21 @@
+#!/usr/bin/env node
+
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {CLI} from './CLI.js';
+
+void new CLI().run(process.argv);
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/main.ts b/BlockCoder/node_modules/@puppeteer/browsers/src/main.ts
new file mode 100644
index 0000000..2149dba
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/main.ts
@@ -0,0 +1,48 @@
+/**
+ * Copyright 2023 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export {
+ launch,
+ computeExecutablePath,
+ computeSystemExecutablePath,
+ TimeoutError,
+ LaunchOptions,
+ ComputeExecutablePathOptions as Options,
+ SystemOptions,
+ CDP_WEBSOCKET_ENDPOINT_REGEX,
+ WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX,
+ Process,
+} from './launch.js';
+export {
+ install,
+ getInstalledBrowsers,
+ canDownload,
+ uninstall,
+ InstallOptions,
+ GetInstalledBrowsersOptions,
+ UninstallOptions,
+} from './install.js';
+export {detectBrowserPlatform} from './detectPlatform.js';
+export {
+ resolveBuildId,
+ Browser,
+ BrowserPlatform,
+ ChromeReleaseChannel,
+ createProfile,
+ ProfileOptions,
+} from './browser-data/browser-data.js';
+export {CLI, makeProgressCallback} from './CLI.js';
+export {Cache, InstalledBrowser} from './Cache.js';
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.cjs.json b/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.cjs.json
new file mode 100644
index 0000000..ef01b99
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.cjs.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../../tsconfig.base.json",
+ "compilerOptions": {
+ "module": "CommonJS",
+ "outDir": "../lib/cjs"
+ }
+}
diff --git a/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.esm.json b/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.esm.json
new file mode 100644
index 0000000..a824bc8
--- /dev/null
+++ b/BlockCoder/node_modules/@puppeteer/browsers/src/tsconfig.esm.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../lib/esm"
+ }
+}
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/LICENSE b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/LICENSE
new file mode 100644
index 0000000..07499f6
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+quickjs-emscripten copyright (c) 2019 Jake Teton-Landis
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/README.md b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/README.md
new file mode 100644
index 0000000..70658a5
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/README.md
@@ -0,0 +1,597 @@
+# quickjs-emscripten
+
+Javascript/Typescript bindings for QuickJS, a modern Javascript interpreter,
+compiled to WebAssembly.
+
+- Safely evaluate untrusted Javascript (up to ES2020).
+- Create and manipulate values inside the QuickJS runtime ([more][values]).
+- Expose host functions to the QuickJS runtime ([more][functions]).
+- Execute synchronous code that uses asynchronous functions, with [asyncify][asyncify].
+
+[Github] | [NPM] | [API Documentation][api] | [Examples][tests]
+
+```typescript
+import { getQuickJS } from "quickjs-emscripten"
+
+async function main() {
+ const QuickJS = await getQuickJS()
+ const vm = QuickJS.newContext()
+
+ const world = vm.newString("world")
+ vm.setProp(vm.global, "NAME", world)
+ world.dispose()
+
+ const result = vm.evalCode(`"Hello " + NAME + "!"`)
+ if (result.error) {
+ console.log("Execution failed:", vm.dump(result.error))
+ result.error.dispose()
+ } else {
+ console.log("Success:", vm.dump(result.value))
+ result.value.dispose()
+ }
+
+ vm.dispose()
+}
+
+main()
+```
+
+[github]: https://github.com/justjake/quickjs-emscripten
+[npm]: https://www.npmjs.com/package/quickjs-emscripten
+[api]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/modules.md
+[tests]: https://github.com/justjake/quickjs-emscripten/blob/main/ts/quickjs.test.ts
+[values]: #interfacing-with-the-interpreter
+[asyncify]: #asyncify
+[functions]: #exposing-apis
+
+## Usage
+
+Install from `npm`: `npm install --save quickjs-emscripten` or `yarn add quickjs-emscripten`.
+
+The root entrypoint of this library is the `getQuickJS` function, which returns
+a promise that resolves to a [QuickJS singleton](./doc/classes/quickjs.md) when
+the QuickJS WASM module is ready.
+
+Once `getQuickJS` has been awaited at least once, you also can use the `getQuickJSSync`
+function to directly access the singleton engine in your synchronous code.
+
+### Safely evaluate Javascript code
+
+See [QuickJS.evalCode](https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/quickjs.md#evalcode)
+
+```typescript
+import { getQuickJS, shouldInterruptAfterDeadline } from "quickjs-emscripten"
+
+getQuickJS().then((QuickJS) => {
+ const result = QuickJS.evalCode("1 + 1", {
+ shouldInterrupt: shouldInterruptAfterDeadline(Date.now() + 1000),
+ memoryLimitBytes: 1024 * 1024,
+ })
+ console.log(result)
+})
+```
+
+### Interfacing with the interpreter
+
+You can use [QuickJSContext](https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/QuickJSContext.md)
+to build a scripting environment by modifying globals and exposing functions
+into the QuickJS interpreter.
+
+Each `QuickJSContext` instance has its own environment -- globals, built-in
+classes -- and actions from one context won't leak into other contexts or
+runtimes (with one exception, see [Asyncify][asyncify]).
+
+Every context is created inside a
+[QuickJSRuntime](https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/QuickJSRuntime.md).
+A runtime represents a Javascript heap, and you can even share values between
+contexts in the same runtime.
+
+```typescript
+const vm = QuickJS.newContext()
+let state = 0
+
+const fnHandle = vm.newFunction("nextId", () => {
+ return vm.newNumber(++state)
+})
+
+vm.setProp(vm.global, "nextId", fnHandle)
+fnHandle.dispose()
+
+const nextId = vm.unwrapResult(vm.evalCode(`nextId(); nextId(); nextId()`))
+console.log("vm result:", vm.getNumber(nextId), "native state:", state)
+
+nextId.dispose()
+vm.dispose()
+```
+
+When you create a context from a top-level API like in the example above,
+instead of by calling `runtime.newContext()`, a runtime is automatically created
+for the lifetime of the context, and disposed of when you dispose the context.
+
+#### Runtime
+
+The runtime has APIs for CPU and memory limits that apply to all contexts within
+the runtime in aggregate. You can also use the runtime to configure EcmaScript
+module loading.
+
+```typescript
+const runtime = QuickJS.newRuntime()
+// "Should be enough for everyone" -- attributed to B. Gates
+runtime.setMemoryLimit(1024 * 640)
+// Limit stack size
+runtime.setMaxStackSize(1024 * 320)
+// Interrupt computation after 1024 calls to the interrupt handler
+let interruptCycles = 0
+runtime.setInterruptHandler(() => ++interruptCycles > 1024)
+// Toy module system that always returns the module name
+// as the default export
+runtime.setModuleLoader((moduleName) => `export default '${moduleName}'`)
+const context = runtime.newContext()
+const ok = context.evalCode(`
+import fooName from './foo.js'
+globalThis.result = fooName
+`)
+context.unwrapResult(ok).dispose()
+// logs "foo.js"
+console.log(context.getProp(context.global, "result").consume(context.dump))
+context.dispose()
+runtime.dispose()
+```
+
+### Memory Management
+
+Many methods in this library return handles to memory allocated inside the
+WebAssembly heap. These types cannot be garbage-collected as usual in
+Javascript. Instead, you must manually manage their memory by calling a
+`.dispose()` method to free the underlying resources. Once a handle has been
+disposed, it cannot be used anymore. Note that in the example above, we call
+`.dispose()` on each handle once it is no longer needed.
+
+Calling `QuickJSContext.dispose()` will throw a RuntimeError if you've forgotten to
+dispose any handles associated with that VM, so it's good practice to create a
+new VM instance for each of your tests, and to call `vm.dispose()` at the end
+of every test.
+
+```typescript
+const vm = QuickJS.newContext()
+const numberHandle = vm.newNumber(42)
+// Note: numberHandle not disposed, so it leaks memory.
+vm.dispose()
+// throws RuntimeError: abort(Assertion failed: list_empty(&rt->gc_obj_list), at: quickjs/quickjs.c,1963,JS_FreeRuntime)
+```
+
+Here are some strategies to reduce the toil of calling `.dispose()` on each
+handle you create:
+
+#### Scope
+
+A
+[`Scope`](https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/scope.md#class-scope)
+instance manages a set of disposables and calls their `.dispose()`
+method in the reverse order in which they're added to the scope. Here's the
+"Interfacing with the interpreter" example re-written using `Scope`:
+
+```typescript
+Scope.withScope((scope) => {
+ const vm = scope.manage(QuickJS.newContext())
+ let state = 0
+
+ const fnHandle = scope.manage(
+ vm.newFunction("nextId", () => {
+ return vm.newNumber(++state)
+ })
+ )
+
+ vm.setProp(vm.global, "nextId", fnHandle)
+
+ const nextId = scope.manage(vm.unwrapResult(vm.evalCode(`nextId(); nextId(); nextId()`)))
+ console.log("vm result:", vm.getNumber(nextId), "native state:", state)
+
+ // When the withScope block exits, it calls scope.dispose(), which in turn calls
+ // the .dispose() methods of all the disposables managed by the scope.
+})
+```
+
+You can also create `Scope` instances with `new Scope()` if you want to manage
+calling `scope.dispose()` yourself.
+
+#### `Lifetime.consume(fn)`
+
+[`Lifetime.consume`](https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/lifetime.md#consume)
+is sugar for the common pattern of using a handle and then
+immediately disposing of it. `Lifetime.consume` takes a `map` function that
+produces a result of any type. The `map` fuction is called with the handle,
+then the handle is disposed, then the result is returned.
+
+Here's the "Interfacing with interpreter" example re-written using `.consume()`:
+
+```typescript
+const vm = QuickJS.newContext()
+let state = 0
+
+vm.newFunction("nextId", () => {
+ return vm.newNumber(++state)
+}).consume((fnHandle) => vm.setProp(vm.global, "nextId", fnHandle))
+
+vm.unwrapResult(vm.evalCode(`nextId(); nextId(); nextId()`)).consume((nextId) =>
+ console.log("vm result:", vm.getNumber(nextId), "native state:", state)
+)
+
+vm.dispose()
+```
+
+Generally working with `Scope` leads to more straight-forward code, but
+`Lifetime.consume` can be handy sugar as part of a method call chain.
+
+### Exposing APIs
+
+To add APIs inside the QuickJS environment, you'll need to create objects to
+define the shape of your API, and add properties and functions to those objects
+to allow code inside QuickJS to call code on the host.
+
+By default, no host functionality is exposed to code running inside QuickJS.
+
+```typescript
+const vm = QuickJS.newContext()
+// `console.log`
+const logHandle = vm.newFunction("log", (...args) => {
+ const nativeArgs = args.map(vm.dump)
+ console.log("QuickJS:", ...nativeArgs)
+})
+// Partially implement `console` object
+const consoleHandle = vm.newObject()
+vm.setProp(consoleHandle, "log", logHandle)
+vm.setProp(vm.global, "console", consoleHandle)
+consoleHandle.dispose()
+logHandle.dispose()
+
+vm.unwrapResult(vm.evalCode(`console.log("Hello from QuickJS!")`)).dispose()
+```
+
+#### Promises
+
+To expose an asynchronous function that _returns a promise_ to callers within
+QuickJS, your function can return the handle of a `QuickJSDeferredPromise`
+created via `context.newPromise()`.
+
+When you resolve a `QuickJSDeferredPromise` -- and generally whenever async
+behavior completes for the VM -- pending listeners inside QuickJS may not
+execute immediately. Your code needs to explicitly call
+`runtime.executePendingJobs()` to resume execution inside QuickJS. This API
+gives your code maximum control to _schedule_ when QuickJS will block the host's
+event loop by resuming execution.
+
+To work with QuickJS handles that contain a promise inside the environment, you
+can convert the QuickJSHandle into a native promise using
+`context.resolvePromise()`. Take care with this API to avoid 'deadlocks' where
+the host awaits a guest promise, but the guest cannot make progress until the
+host calls `runtime.executePendingJobs()`. The simplest way to avoid this kind
+of deadlock is to always schedule `executePendingJobs` after any promise is
+settled.
+
+```typescript
+const vm = QuickJS.newContext()
+const fakeFileSystem = new Map([["example.txt", "Example file content"]])
+
+// Function that simulates reading data asynchronously
+const readFileHandle = vm.newFunction("readFile", (pathHandle) => {
+ const path = vm.getString(pathHandle)
+ const promise = vm.newPromise()
+ setTimeout(() => {
+ const content = fakeFileSystem.get(path)
+ promise.resolve(vm.newString(content || ""))
+ }, 100)
+ // IMPORTANT: Once you resolve an async action inside QuickJS,
+ // call runtime.executePendingJobs() to run any code that was
+ // waiting on the promise or callback.
+ promise.settled.then(vm.runtime.executePendingJobs)
+ return promise.handle
+})
+readFileHandle.consume((handle) => vm.setProp(vm.global, "readFile", handle))
+
+// Evaluate code that uses `readFile`, which returns a promise
+const result = vm.evalCode(`(async () => {
+ const content = await readFile('example.txt')
+ return content.toUpperCase()
+})()`)
+const promiseHandle = vm.unwrapResult(result)
+
+// Convert the promise handle into a native promise and await it.
+// If code like this deadlocks, make sure you are calling
+// runtime.executePendingJobs appropriately.
+const resolvedResult = await vm.resolvePromise(promiseHandle)
+promiseHandle.dispose()
+const resolvedHandle = vm.unwrapResult(resolvedResult)
+console.log("Result:", vm.getString(resolvedHandle))
+resolvedHandle.dispose()
+```
+
+#### Asyncify
+
+Sometimes, we want to create a function that's synchronous from the perspective
+of QuickJS, but prefer to implement that function _asynchronously_ in your host
+code. The most obvious use-case is for EcmaScript module loading. The underlying
+QuickJS C library expects the module loader function to return synchronously,
+but loading data synchronously in the browser or server is somewhere between "a
+bad idea" and "impossible". QuickJS also doesn't expose an API to "pause" the
+execution of a runtime, and adding such an API is tricky due to the VM's
+implementation.
+
+As a work-around, we provide an alternate build of QuickJS processed by
+Emscripten/Binaryen's [ASYNCIFY](https://emscripten.org/docs/porting/asyncify.html)
+compiler transform. Here's how Emscripten's documentation describes Asyncify:
+
+> Asyncify lets synchronous C or C++ code interact with asynchronous \[host] JavaScript. This allows things like:
+>
+> - A synchronous call in C that yields to the event loop, which allows browser events to be handled.
+>
+> - A synchronous call in C that waits for an asynchronous operation in \[host] JS to complete.
+>
+> Asyncify automatically transforms ... code into a form that can be paused and
+> resumed ..., so that it is asynchronous (hence the name “Asyncifyâ€) even though
+> \[it is written] in a normal synchronous way.
+
+This means we can suspend an _entire WebAssembly module_ (which could contain
+multiple runtimes and contexts) while our host Javascript loads data
+asynchronously, and then resume execution once the data load completes. This is
+a very handy superpower, but it comes with a couple of major limitations:
+
+1. _An asyncified WebAssembly module can only suspend to wait for a single
+ asynchronous call at a time_. You may call back into a suspended WebAssembly
+ module eg. to create a QuickJS value to return a result, but the system will
+ crash if this call tries to suspend again. Take a look at Emscripten's documentation
+ on [reentrancy](https://emscripten.org/docs/porting/asyncify.html#reentrancy).
+
+2. _Asyncified code is bigger and runs slower_. The asyncified build of
+ Quickjs-emscripten library is 1M, 2x larger than the 500K of the default
+ version. There may be room for further
+ [optimization](https://emscripten.org/docs/porting/asyncify.html#optimizing)
+ Of our build in the future.
+
+To use asyncify features, use the following functions:
+
+- [newAsyncRuntime][]: create a runtime inside a new WebAssembly module.
+- [newAsyncContext][]: create runtime and context together inside a new
+ WebAssembly module.
+- [newQuickJSAsyncWASMModule][]: create an empty WebAssembly module.
+
+[newasyncruntime]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/modules.md#newasyncruntime
+[newasynccontext]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/modules.md#newasynccontext
+[newquickjsasyncwasmmodule]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/modules.md#newquickjsasyncwasmmodule
+
+These functions are asynchronous because they always create a new underlying
+WebAssembly module so that each instance can suspend and resume independently,
+and instantiating a WebAssembly module is an async operation. This also adds
+substantial overhead compared to creating a runtime or context inside an
+existing module; if you only need to wait for a single async action at a time,
+you can create a single top-level module and create runtimes or contexts inside
+of it.
+
+##### Async module loader
+
+Here's an example of valuating a script that loads React asynchronously as an ES
+module. In our example, we're loading from the filesystem for reproducibility,
+but you can use this technique to load using `fetch`.
+
+```typescript
+const module = await newQuickJSAsyncWASMModule()
+const runtime = module.newRuntime()
+const path = await import("path")
+const { promises: fs } = await import("fs")
+
+const importsPath = path.join(__dirname, "../examples/imports") + "/"
+// Module loaders can return promises.
+// Execution will suspend until the promise resolves.
+runtime.setModuleLoader((moduleName) => {
+ const modulePath = path.join(importsPath, moduleName)
+ if (!modulePath.startsWith(importsPath)) {
+ throw new Error("out of bounds")
+ }
+ console.log("loading", moduleName, "from", modulePath)
+ return fs.readFile(modulePath, "utf-8")
+})
+
+// evalCodeAsync is required when execution may suspend.
+const context = runtime.newContext()
+const result = await context.evalCodeAsync(`
+import * as React from 'esm.sh/react@17'
+import * as ReactDOMServer from 'esm.sh/react-dom@17/server'
+const e = React.createElement
+globalThis.html = ReactDOMServer.renderToStaticMarkup(
+ e('div', null, e('strong', null, 'Hello world!'))
+)
+`)
+context.unwrapResult(result).dispose()
+const html = context.getProp(context.global, "html").consume(context.getString)
+console.log(html) //
Hello world!
+```
+
+##### Async on host, sync in QuickJS
+
+Here's an example of turning an async function into a sync function inside the
+VM.
+
+```typescript
+const context = await newAsyncContext()
+const path = await import("path")
+const { promises: fs } = await import("fs")
+
+const importsPath = path.join(__dirname, "../examples/imports") + "/"
+const readFileHandle = context.newAsyncifiedFunction("readFile", async (pathHandle) => {
+ const pathString = path.join(importsPath, context.getString(pathHandle))
+ if (!pathString.startsWith(importsPath)) {
+ throw new Error("out of bounds")
+ }
+ const data = await fs.readFile(pathString, "utf-8")
+ return context.newString(data)
+})
+readFileHandle.consume((fn) => context.setProp(context.global, "readFile", fn))
+
+// evalCodeAsync is required when execution may suspend.
+const result = await context.evalCodeAsync(`
+// Not a promise! Sync! vvvvvvvvvvvvvvvvvvvv
+const data = JSON.parse(readFile('data.json'))
+data.map(x => x.toUpperCase()).join(' ')
+`)
+const upperCaseData = context.unwrapResult(result).consume(context.getString)
+console.log(upperCaseData) // 'VERY USEFUL DATA'
+```
+
+### Testing your code
+
+This library is complicated to use, so please consider automated testing your
+implementation. We highly writing your test suite to run with both the "release"
+build variant of quickjs-emscripten, and also the [DEBUG_SYNC] build variant.
+The debug sync build variant has extra instrumentation code for detecting memory
+leaks.
+
+The class [TestQuickJSWASMModule] exposes the memory leak detection API, although
+this API is only accurate when using `DEBUG_SYNC` variant.
+
+```typescript
+// Define your test suite in a function, so that you can test against
+// different module loaders.
+function myTests(moduleLoader: () => Promise) {
+ let QuickJS: TestQuickJSWASMModule
+ beforeEach(async () => {
+ // Get a unique TestQuickJSWASMModule instance for each test.
+ const wasmModule = await moduleLoader()
+ QuickJS = new TestQuickJSWASMModule(wasmModule)
+ })
+ afterEach(() => {
+ // Assert that the test disposed all handles. The DEBUG_SYNC build
+ // variant will show detailed traces for each leak.
+ QuickJS.assertNoMemoryAllocated()
+ })
+
+ it("works well", () => {
+ // TODO: write a test using QuickJS
+ const context = QuickJS.newContext()
+ context.unwrapResult(context.evalCode("1 + 1")).dispose()
+ context.dispose()
+ })
+}
+
+// Run the test suite against a matrix of module loaders.
+describe("Check for memory leaks with QuickJS DEBUG build", () => {
+ const moduleLoader = memoizePromiseFactory(() => newQuickJSWASMModule(DEBUG_SYNC))
+ myTests(moduleLoader)
+})
+
+describe("Realistic test with QuickJS RELEASE build", () => {
+ myTests(getQuickJS)
+})
+```
+
+For more testing examples, please explore the typescript source of [quickjs-emscripten][ts] repository.
+
+[ts]: https://github.com/justjake/quickjs-emscripten/blob/main/ts
+[debug_sync]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/modules.md#debug_sync
+[testquickjswasmmodule]: https://github.com/justjake/quickjs-emscripten/blob/main/doc/classes/TestQuickJSWASMModule.md
+
+### Debugging
+
+- Switch to a DEBUG build variant of the WebAssembly module to see debug log messages from the C part of this library.
+- Set `process.env.QTS_DEBUG` to see debug log messages from the Javascript part of this library.
+
+### More Documentation
+
+[Github] | [NPM] | [API Documentation][api] | [Examples][tests]
+
+## Background
+
+This was inspired by seeing https://github.com/maple3142/duktape-eval
+[on Hacker News](https://news.ycombinator.com/item?id=21946565) and Figma's
+blogposts about using building a Javascript plugin runtime:
+
+- [How Figma built the Figma plugin system](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/): Describes the LowLevelJavascriptVm interface.
+- [An update on plugin security](https://www.figma.com/blog/an-update-on-plugin-security/): Figma switches to QuickJS.
+
+## Status & Roadmap
+
+**Stability**: Because the version number of this project is below `1.0.0`,
+\*expect occasional breaking API changes.
+
+**Security**: This project makes every effort to be secure, but has not been
+audited. Please use with care in production settings.
+
+**Roadmap**: I work on this project in my free time, for fun. Here's I'm
+thinking comes next. Last updated 2022-03-18.
+
+1. Further work on module loading APIs:
+
+ - Create modules via Javascript, instead of source text.
+ - Scan source text for imports, for ahead of time or concurrent loading.
+ (This is possible with third-party tools, so lower priority.)
+
+2. Higher-level tools for reading QuickJS values:
+
+ - Type guard functions: `context.isArray(handle)`, `context.isPromise(handle)`, etc.
+ - Iteration utilities: `context.getIterable(handle)`, `context.iterateObjectEntries(handle)`.
+ This better supports user-level code to deserialize complex handle objects.
+
+3. Higher-level tools for creating QuickJS values:
+
+ - Devise a way to avoid needing to mess around with handles when setting up
+ the environment.
+ - Consider integrating
+ [quickjs-emscripten-sync](https://github.com/reearth/quickjs-emscripten-sync)
+ for automatic translation.
+ - Consider class-based or interface-type-based marshalling.
+
+4. EcmaScript Modules / WebAssembly files / Deno support. This requires me to
+ learn a lot of new things, but should be interesting for modern browser usage.
+
+5. SQLite integration.
+
+## Related
+
+- Duktape wrapped in Wasm: https://github.com/maple3142/duktape-eval/blob/main/src/Makefile
+- QuickJS wrapped in C++: https://github.com/ftk/quickjspp
+
+## Developing
+
+This library is implemented in two languages: C (compiled to WASM with
+Emscripten), and Typescript.
+
+### The C parts
+
+The ./c directory contains C code that wraps the QuickJS C library (in ./quickjs).
+Public functions (those starting with `QTS_`) in ./c/interface.c are
+automatically exported to native code (via a generated header) and to
+Typescript (via a generated FFI class). See ./generate.ts for how this works.
+
+The C code builds as both with `emscripten` (using `emcc`), to produce WASM (or
+ASM.js) and with `clang`. Build outputs are checked in, so you can iterate on
+the Javascript parts of the library without setting up the Emscripten toolchain.
+
+Intermediate object files from QuickJS end up in ./build/quickjs/.
+
+This project uses `emscripten 3.1.32`.
+
+- On ARM64, you should install `emscripten` on your machine. For example on macOS, `brew install emscripten`.
+- If _the correct version of emcc_ is not in your PATH, compilation falls back to using Docker.
+ On ARM64, this is 10-50x slower than native compilation, but it's just fine on x64.
+
+Related NPM scripts:
+
+- `yarn update-quickjs` will sync the ./quickjs folder with a
+ github repo tracking the upstream QuickJS.
+- `yarn make-debug` will rebuild C outputs into ./build/wrapper
+- `yarn make-release` will rebuild C outputs in release mode, which is the mode
+ that should be checked into the repo.
+
+### The Typescript parts
+
+The ./ts directory contains Typescript types and wraps the generated Emscripten
+FFI in a more usable interface.
+
+You'll need `node` and `yarn`. Install dependencies with `yarn install`.
+
+- `yarn build` produces ./dist.
+- `yarn test` runs the tests.
+- `yarn test --watch` watches for changes and re-runs the tests.
+
+### Yarn updates
+
+Just run `yarn set version from sources` to upgrade the Yarn release.
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/c/interface.c b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/c/interface.c
new file mode 100644
index 0000000..0126cff
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/c/interface.c
@@ -0,0 +1,819 @@
+/**
+ * interface.c
+ *
+ * We primarily use JSValue* (pointer to JSValue) when communicating with the
+ * host javascript environment, because pointers are trivial to use for calls
+ * into emscripten because they're just a number!
+ *
+ * As with the quickjs.h API, a JSValueConst* value is "borrowed" and should
+ * not be freed. A JSValue* is "owned" and should be freed by the owner.
+ *
+ * Functions starting with "QTS_" are exported by generate.ts to:
+ * - interface.h for native C code.
+ * - ffi.ts for emscripten.
+ *
+ * We support building the following build outputs:
+ *
+ * ## 1. Native machine code
+ * For internal development testing purposes.
+ *
+ * ## 2. WASM via Emscripten
+ * For general production use.
+ *
+ * ## 3. Experimental: Asyncified WASM via Emscripten with -s ASYNCIFY=1.
+ * This variant supports treating async host Javascript calls as synchronous
+ * from the perspective of the WASM c code.
+ *
+ * The way this works is described here:
+ * https://emscripten.org/docs/porting/asyncify.html
+ *
+ * In this variant, any call into our C code could return a promise if it ended
+ * up suspended. We mark the methods we suspect might suspend due to users' code
+ * as returning MaybeAsync(T). This information is ignored for the regular
+ * build.
+ */
+
+#ifdef __EMSCRIPTEN__
+#include
+#endif
+
+#include // For NAN
+#include
+#include
+#include
+#ifdef QTS_SANITIZE_LEAK
+#include
+#endif
+
+#include "../quickjs/cutils.h"
+#include "../quickjs/quickjs-libc.h"
+#include "../quickjs/quickjs.h"
+
+#define PKG "quickjs-emscripten: "
+
+#ifdef QTS_DEBUG_MODE
+#define QTS_DEBUG(msg) qts_log(msg);
+#define QTS_DUMP(value) qts_dump(ctx, value);
+#else
+#define QTS_DEBUG(msg) ;
+#define QTS_DUMP(value) ;
+#endif
+
+/**
+ * Signal to our FFI code generator that this string argument should be passed as a pointer
+ * allocated by the caller on the heap, not a JS string on the stack.
+ * https://github.com/emscripten-core/emscripten/issues/6860#issuecomment-405818401
+ */
+#define BorrowedHeapChar const char
+#define OwnedHeapChar char
+#define JSBorrowedChar const char
+
+/**
+ * Signal to our FFI code generator that this function should be called
+ * asynchronously when compiled with ASYNCIFY.
+ */
+#define MaybeAsync(T) T
+
+/**
+ * Signal to our FFI code generator that this function is only available in
+ * ASYNCIFY builds.
+ */
+#define AsyncifyOnly(T) T
+
+#define JSVoid void
+
+#define EvalFlags int
+#define EvalDetectModule int
+
+void qts_log(char *msg) {
+ fputs(PKG, stderr);
+ fputs(msg, stderr);
+ fputs("\n", stderr);
+}
+
+void qts_dump(JSContext *ctx, JSValueConst value) {
+ const char *str = JS_ToCString(ctx, value);
+ if (!str) {
+ QTS_DEBUG("QTS_DUMP: can't dump");
+ return;
+ }
+ fputs(str, stderr);
+ JS_FreeCString(ctx, str);
+ putchar('\n');
+}
+
+void copy_prop_if_needed(JSContext *ctx, JSValueConst dest, JSValueConst src, const char *prop_name) {
+ JSAtom prop_atom = JS_NewAtom(ctx, prop_name);
+ JSValue dest_prop = JS_GetProperty(ctx, dest, prop_atom);
+ if (JS_IsUndefined(dest_prop)) {
+ JSValue src_prop = JS_GetProperty(ctx, src, prop_atom);
+ if (!JS_IsUndefined(src_prop) && !JS_IsException(src_prop)) {
+ JS_SetProperty(ctx, dest, prop_atom, src_prop);
+ }
+ } else {
+ JS_FreeValue(ctx, dest_prop);
+ }
+ JS_FreeAtom(ctx, prop_atom);
+}
+
+JSValue *jsvalue_to_heap(JSValueConst value) {
+ JSValue *result = malloc(sizeof(JSValue));
+ if (result) {
+ // Could be better optimized, but at -0z / -ftlo, it
+ // appears to produce the same binary code as a memcpy.
+ *result = value;
+ }
+ return result;
+}
+
+JSValue *QTS_Throw(JSContext *ctx, JSValueConst *error) {
+ JSValue copy = JS_DupValue(ctx, *error);
+ return jsvalue_to_heap(JS_Throw(ctx, copy));
+}
+
+JSValue *QTS_NewError(JSContext *ctx) {
+ return jsvalue_to_heap(JS_NewError(ctx));
+}
+
+/**
+ * Limits.
+ */
+
+/**
+ * Memory limit. Set to -1 to disable.
+ */
+void QTS_RuntimeSetMemoryLimit(JSRuntime *rt, size_t limit) {
+ JS_SetMemoryLimit(rt, limit);
+}
+
+/**
+ * Memory diagnostics
+ */
+
+JSValue *QTS_RuntimeComputeMemoryUsage(JSRuntime *rt, JSContext *ctx) {
+ JSMemoryUsage s;
+ JS_ComputeMemoryUsage(rt, &s);
+
+ // Note that we're going to allocate more memory just to report the memory usage.
+ // A more sound approach would be to bind JSMemoryUsage struct directly - but that's
+ // a lot of work. This should be okay in the mean time.
+ JSValue result = JS_NewObject(ctx);
+
+ // Manually generated via editor-fu from JSMemoryUsage struct definition in quickjs.h
+ JS_SetPropertyStr(ctx, result, "malloc_limit", JS_NewInt64(ctx, s.malloc_limit));
+ JS_SetPropertyStr(ctx, result, "memory_used_size", JS_NewInt64(ctx, s.memory_used_size));
+ JS_SetPropertyStr(ctx, result, "malloc_count", JS_NewInt64(ctx, s.malloc_count));
+ JS_SetPropertyStr(ctx, result, "memory_used_count", JS_NewInt64(ctx, s.memory_used_count));
+ JS_SetPropertyStr(ctx, result, "atom_count", JS_NewInt64(ctx, s.atom_count));
+ JS_SetPropertyStr(ctx, result, "atom_size", JS_NewInt64(ctx, s.atom_size));
+ JS_SetPropertyStr(ctx, result, "str_count", JS_NewInt64(ctx, s.str_count));
+ JS_SetPropertyStr(ctx, result, "str_size", JS_NewInt64(ctx, s.str_size));
+ JS_SetPropertyStr(ctx, result, "obj_count", JS_NewInt64(ctx, s.obj_count));
+ JS_SetPropertyStr(ctx, result, "obj_size", JS_NewInt64(ctx, s.obj_size));
+ JS_SetPropertyStr(ctx, result, "prop_count", JS_NewInt64(ctx, s.prop_count));
+ JS_SetPropertyStr(ctx, result, "prop_size", JS_NewInt64(ctx, s.prop_size));
+ JS_SetPropertyStr(ctx, result, "shape_count", JS_NewInt64(ctx, s.shape_count));
+ JS_SetPropertyStr(ctx, result, "shape_size", JS_NewInt64(ctx, s.shape_size));
+ JS_SetPropertyStr(ctx, result, "js_func_count", JS_NewInt64(ctx, s.js_func_count));
+ JS_SetPropertyStr(ctx, result, "js_func_size", JS_NewInt64(ctx, s.js_func_size));
+ JS_SetPropertyStr(ctx, result, "js_func_code_size", JS_NewInt64(ctx, s.js_func_code_size));
+ JS_SetPropertyStr(ctx, result, "js_func_pc2line_count", JS_NewInt64(ctx, s.js_func_pc2line_count));
+ JS_SetPropertyStr(ctx, result, "js_func_pc2line_size", JS_NewInt64(ctx, s.js_func_pc2line_size));
+ JS_SetPropertyStr(ctx, result, "c_func_count", JS_NewInt64(ctx, s.c_func_count));
+ JS_SetPropertyStr(ctx, result, "array_count", JS_NewInt64(ctx, s.array_count));
+ JS_SetPropertyStr(ctx, result, "fast_array_count", JS_NewInt64(ctx, s.fast_array_count));
+ JS_SetPropertyStr(ctx, result, "fast_array_elements", JS_NewInt64(ctx, s.fast_array_elements));
+ JS_SetPropertyStr(ctx, result, "binary_object_count", JS_NewInt64(ctx, s.binary_object_count));
+ JS_SetPropertyStr(ctx, result, "binary_object_size", JS_NewInt64(ctx, s.binary_object_size));
+
+ return jsvalue_to_heap(result);
+}
+
+OwnedHeapChar *QTS_RuntimeDumpMemoryUsage(JSRuntime *rt) {
+ char *result = malloc(sizeof(char) * 1024);
+ FILE *memfile = fmemopen(result, 1024, "w");
+ JSMemoryUsage s;
+ JS_ComputeMemoryUsage(rt, &s);
+ JS_DumpMemoryUsage(memfile, &s, rt);
+ fclose(memfile);
+ return result;
+}
+
+int QTS_RecoverableLeakCheck() {
+#ifdef QTS_SANITIZE_LEAK
+ return __lsan_do_recoverable_leak_check();
+#else
+ return 0;
+#endif
+}
+
+int QTS_BuildIsSanitizeLeak() {
+#ifdef QTS_SANITIZE_LEAK
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+#ifdef QTS_ASYNCIFY
+EM_JS(void, set_asyncify_stack_size, (size_t size), {
+ Asyncify.StackSize = size || 81920;
+});
+#endif
+
+/**
+ * Set the stack size limit, in bytes. Set to 0 to disable.
+ */
+void QTS_RuntimeSetMaxStackSize(JSRuntime *rt, size_t stack_size) {
+#ifdef QTS_ASYNCIFY
+ set_asyncify_stack_size(stack_size);
+#endif
+ JS_SetMaxStackSize(rt, stack_size);
+}
+
+/**
+ * Constant pointers. Because we always use JSValue* from the host Javascript environment,
+ * we need helper fuctions to return pointers to these constants.
+ */
+
+JSValueConst QTS_Undefined = JS_UNDEFINED;
+JSValueConst *QTS_GetUndefined() {
+ return &QTS_Undefined;
+}
+
+JSValueConst QTS_Null = JS_NULL;
+JSValueConst *QTS_GetNull() {
+ return &QTS_Null;
+}
+
+JSValueConst QTS_False = JS_FALSE;
+JSValueConst *QTS_GetFalse() {
+ return &QTS_False;
+}
+
+JSValueConst QTS_True = JS_TRUE;
+JSValueConst *QTS_GetTrue() {
+ return &QTS_True;
+}
+
+/**
+ * Standard FFI functions
+ */
+
+JSRuntime *QTS_NewRuntime() {
+ return JS_NewRuntime();
+}
+
+void QTS_FreeRuntime(JSRuntime *rt) {
+ JS_FreeRuntime(rt);
+}
+
+JSContext *QTS_NewContext(JSRuntime *rt) {
+ return JS_NewContext(rt);
+}
+
+void QTS_FreeContext(JSContext *ctx) {
+ JS_FreeContext(ctx);
+}
+
+void QTS_FreeValuePointer(JSContext *ctx, JSValue *value) {
+ JS_FreeValue(ctx, *value);
+ free(value);
+}
+
+void QTS_FreeValuePointerRuntime(JSRuntime *rt, JSValue *value) {
+ JS_FreeValueRT(rt, *value);
+ free(value);
+}
+
+void QTS_FreeVoidPointer(JSContext *ctx, JSVoid *ptr) {
+ js_free(ctx, ptr);
+}
+
+void QTS_FreeCString(JSContext *ctx, JSBorrowedChar *str) {
+ JS_FreeCString(ctx, str);
+}
+
+JSValue *QTS_DupValuePointer(JSContext *ctx, JSValueConst *val) {
+ return jsvalue_to_heap(JS_DupValue(ctx, *val));
+}
+
+JSValue *QTS_NewObject(JSContext *ctx) {
+ return jsvalue_to_heap(JS_NewObject(ctx));
+}
+
+JSValue *QTS_NewObjectProto(JSContext *ctx, JSValueConst *proto) {
+ return jsvalue_to_heap(JS_NewObjectProto(ctx, *proto));
+}
+
+JSValue *QTS_NewArray(JSContext *ctx) {
+ return jsvalue_to_heap(JS_NewArray(ctx));
+}
+
+JSValue *QTS_NewFloat64(JSContext *ctx, double num) {
+ return jsvalue_to_heap(JS_NewFloat64(ctx, num));
+}
+
+double QTS_GetFloat64(JSContext *ctx, JSValueConst *value) {
+ double result = NAN;
+ JS_ToFloat64(ctx, &result, *value);
+ return result;
+}
+
+JSValue *QTS_NewString(JSContext *ctx, BorrowedHeapChar *string) {
+ return jsvalue_to_heap(JS_NewString(ctx, string));
+}
+
+JSBorrowedChar *QTS_GetString(JSContext *ctx, JSValueConst *value) {
+ return JS_ToCString(ctx, *value);
+}
+
+JSValue qts_get_symbol_key(JSContext *ctx, JSValueConst *value) {
+ JSValue global = JS_GetGlobalObject(ctx);
+ JSValue Symbol = JS_GetPropertyStr(ctx, global, "Symbol");
+ JS_FreeValue(ctx, global);
+
+ JSValue Symbol_keyFor = JS_GetPropertyStr(ctx, Symbol, "keyFor");
+ JSValue key = JS_Call(ctx, Symbol_keyFor, Symbol, 1, value);
+ JS_FreeValue(ctx, Symbol_keyFor);
+ JS_FreeValue(ctx, Symbol);
+ return key;
+}
+
+JSValue *QTS_NewSymbol(JSContext *ctx, BorrowedHeapChar *description, int isGlobal) {
+ JSValue global = JS_GetGlobalObject(ctx);
+ JSValue Symbol = JS_GetPropertyStr(ctx, global, "Symbol");
+ JS_FreeValue(ctx, global);
+ JSValue descriptionValue = JS_NewString(ctx, description);
+ JSValue symbol;
+
+ if (isGlobal != 0) {
+ JSValue Symbol_for = JS_GetPropertyStr(ctx, Symbol, "for");
+ symbol = JS_Call(ctx, Symbol_for, Symbol, 1, &descriptionValue);
+ JS_FreeValue(ctx, descriptionValue);
+ JS_FreeValue(ctx, Symbol_for);
+ JS_FreeValue(ctx, Symbol);
+ return jsvalue_to_heap(symbol);
+ }
+
+ symbol = JS_Call(ctx, Symbol, JS_UNDEFINED, 1, &descriptionValue);
+ JS_FreeValue(ctx, descriptionValue);
+ JS_FreeValue(ctx, Symbol);
+
+ return jsvalue_to_heap(symbol);
+}
+
+MaybeAsync(JSBorrowedChar *) QTS_GetSymbolDescriptionOrKey(JSContext *ctx, JSValueConst *value) {
+ JSBorrowedChar *result;
+
+ JSValue key = qts_get_symbol_key(ctx, value);
+ if (!JS_IsUndefined(key)) {
+ result = JS_ToCString(ctx, key);
+ JS_FreeValue(ctx, key);
+ return result;
+ }
+
+ JSValue description = JS_GetPropertyStr(ctx, *value, "description");
+ result = JS_ToCString(ctx, description);
+ JS_FreeValue(ctx, description);
+ return result;
+}
+
+int QTS_IsGlobalSymbol(JSContext *ctx, JSValueConst *value) {
+ JSValue key = qts_get_symbol_key(ctx, value);
+ int undefined = JS_IsUndefined(key);
+ JS_FreeValue(ctx, key);
+
+ if (undefined) {
+ return 0;
+ } else {
+ return 1;
+ }
+}
+
+int QTS_IsJobPending(JSRuntime *rt) {
+ return JS_IsJobPending(rt);
+}
+
+/*
+ runs pending jobs (Promises/async functions) until it encounters
+ an exception or it executed the passed maxJobsToExecute jobs.
+
+ Passing a negative value will run the loop until there are no more
+ pending jobs or an exception happened
+
+ Returns the executed number of jobs or the exception encountered
+*/
+MaybeAsync(JSValue *) QTS_ExecutePendingJob(JSRuntime *rt, int maxJobsToExecute, JSContext **lastJobContext) {
+ JSContext *pctx;
+ int status = 1;
+ int executed = 0;
+ while (executed != maxJobsToExecute && status == 1) {
+ status = JS_ExecutePendingJob(rt, &pctx);
+ if (status == -1) {
+ *lastJobContext = pctx;
+ return jsvalue_to_heap(JS_GetException(pctx));
+ } else if (status == 1) {
+ *lastJobContext = pctx;
+ executed++;
+ }
+ }
+#ifdef QTS_DEBUG_MODE
+ char msg[500];
+ sprintf(msg, "QTS_ExecutePendingJob(executed: %d, pctx: %p, lastJobExecuted: %p)", executed, pctx, *lastJobContext);
+ QTS_DEBUG(msg)
+#endif
+ return jsvalue_to_heap(JS_NewFloat64(pctx, executed));
+}
+
+MaybeAsync(JSValue *) QTS_GetProp(JSContext *ctx, JSValueConst *this_val, JSValueConst *prop_name) {
+ JSAtom prop_atom = JS_ValueToAtom(ctx, *prop_name);
+ JSValue prop_val = JS_GetProperty(ctx, *this_val, prop_atom);
+ JS_FreeAtom(ctx, prop_atom);
+ return jsvalue_to_heap(prop_val);
+}
+
+MaybeAsync(void) QTS_SetProp(JSContext *ctx, JSValueConst *this_val, JSValueConst *prop_name, JSValueConst *prop_value) {
+ JSAtom prop_atom = JS_ValueToAtom(ctx, *prop_name);
+ JSValue extra_prop_value = JS_DupValue(ctx, *prop_value);
+ // TODO: should we use DefineProperty internally if this object doesn't have the property yet?
+ JS_SetProperty(ctx, *this_val, prop_atom, extra_prop_value); // consumes extra_prop_value
+ JS_FreeAtom(ctx, prop_atom);
+}
+
+void QTS_DefineProp(JSContext *ctx, JSValueConst *this_val, JSValueConst *prop_name, JSValueConst *prop_value, JSValueConst *get, JSValueConst *set, bool configurable, bool enumerable, bool has_value) {
+ JSAtom prop_atom = JS_ValueToAtom(ctx, *prop_name);
+
+ int flags = 0;
+ if (configurable) {
+ flags = flags | JS_PROP_CONFIGURABLE;
+ if (has_value) {
+ flags = flags | JS_PROP_HAS_CONFIGURABLE;
+ }
+ }
+ if (enumerable) {
+ flags = flags | JS_PROP_ENUMERABLE;
+ if (has_value) {
+ flags = flags | JS_PROP_HAS_ENUMERABLE;
+ }
+ }
+ if (!JS_IsUndefined(*get)) {
+ flags = flags | JS_PROP_HAS_GET;
+ }
+ if (!JS_IsUndefined(*set)) {
+ flags = flags | JS_PROP_HAS_SET;
+ }
+ if (has_value) {
+ flags = flags | JS_PROP_HAS_VALUE;
+ }
+
+ JS_DefineProperty(ctx, *this_val, prop_atom, *prop_value, *get, *set, flags);
+ JS_FreeAtom(ctx, prop_atom);
+}
+
+MaybeAsync(JSValue *) QTS_Call(JSContext *ctx, JSValueConst *func_obj, JSValueConst *this_obj, int argc, JSValueConst **argv_ptrs) {
+ // convert array of pointers to array of values
+ JSValueConst argv[argc];
+ int i;
+ for (i = 0; i < argc; i++) {
+ argv[i] = *(argv_ptrs[i]);
+ }
+
+ return jsvalue_to_heap(JS_Call(ctx, *func_obj, *this_obj, argc, argv));
+}
+
+/**
+ * If maybe_exception is an exception, get the error.
+ * Otherwise, return NULL.
+ */
+JSValue *QTS_ResolveException(JSContext *ctx, JSValue *maybe_exception) {
+ if (JS_IsException(*maybe_exception)) {
+ return jsvalue_to_heap(JS_GetException(ctx));
+ }
+
+ return NULL;
+}
+
+MaybeAsync(JSBorrowedChar *) QTS_Dump(JSContext *ctx, JSValueConst *obj) {
+ JSValue obj_json_value = JS_JSONStringify(ctx, *obj, JS_UNDEFINED, JS_UNDEFINED);
+ if (!JS_IsException(obj_json_value)) {
+ const char *obj_json_chars = JS_ToCString(ctx, obj_json_value);
+ JS_FreeValue(ctx, obj_json_value);
+ if (obj_json_chars != NULL) {
+ JSValue enumerable_props = JS_ParseJSON(ctx, obj_json_chars, strlen(obj_json_chars), "");
+ JS_FreeCString(ctx, obj_json_chars);
+ if (!JS_IsException(enumerable_props)) {
+ // Copy common non-enumerable props for different object types.
+ // Errors:
+ copy_prop_if_needed(ctx, enumerable_props, *obj, "name");
+ copy_prop_if_needed(ctx, enumerable_props, *obj, "message");
+ copy_prop_if_needed(ctx, enumerable_props, *obj, "stack");
+
+ // Serialize again.
+ JSValue enumerable_json = JS_JSONStringify(ctx, enumerable_props, JS_UNDEFINED, JS_UNDEFINED);
+ JS_FreeValue(ctx, enumerable_props);
+
+ JSBorrowedChar *result = QTS_GetString(ctx, &enumerable_json);
+ JS_FreeValue(ctx, enumerable_json);
+ return result;
+ }
+ }
+ }
+
+#ifdef QTS_DEBUG_MODE
+ qts_log("Error dumping JSON:");
+ js_std_dump_error(ctx);
+#endif
+
+ // Fallback: convert to string
+ return QTS_GetString(ctx, obj);
+}
+
+MaybeAsync(JSValue *) QTS_Eval(JSContext *ctx, BorrowedHeapChar *js_code, const char *filename, EvalDetectModule detectModule, EvalFlags evalFlags) {
+ size_t js_code_len = strlen(js_code);
+
+ if (detectModule) {
+ if (JS_DetectModule((const char *)js_code, js_code_len)) {
+ QTS_DEBUG("QTS_Eval: Detected module = true");
+ evalFlags |= JS_EVAL_TYPE_MODULE;
+ } else {
+ QTS_DEBUG("QTS_Eval: Detected module = false");
+ }
+ } else {
+ QTS_DEBUG("QTS_Eval: do not detect module");
+ }
+
+ return jsvalue_to_heap(JS_Eval(ctx, js_code, strlen(js_code), filename, evalFlags));
+}
+
+OwnedHeapChar *QTS_Typeof(JSContext *ctx, JSValueConst *value) {
+ const char *result = "unknown";
+ uint32_t tag = JS_VALUE_GET_TAG(*value);
+
+ if (JS_IsNumber(*value)) {
+ result = "number";
+ } else if (JS_IsBigInt(ctx, *value)) {
+ result = "bigint";
+ } else if (JS_IsBigFloat(*value)) {
+ result = "bigfloat";
+ } else if (JS_IsBigDecimal(*value)) {
+ result = "bigdecimal";
+ } else if (JS_IsFunction(ctx, *value)) {
+ result = "function";
+ } else if (JS_IsBool(*value)) {
+ result = "boolean";
+ } else if (JS_IsNull(*value)) {
+ result = "object";
+ } else if (JS_IsUndefined(*value)) {
+ result = "undefined";
+ } else if (JS_IsUninitialized(*value)) {
+ result = "undefined";
+ } else if (JS_IsString(*value)) {
+ result = "string";
+ } else if (JS_IsSymbol(*value)) {
+ result = "symbol";
+ } else if (JS_IsObject(*value)) {
+ result = "object";
+ }
+
+ char *out = strdup(result);
+ return out;
+}
+
+JSValue *QTS_GetGlobalObject(JSContext *ctx) {
+ return jsvalue_to_heap(JS_GetGlobalObject(ctx));
+}
+
+JSValue *QTS_NewPromiseCapability(JSContext *ctx, JSValue **resolve_funcs_out) {
+ JSValue resolve_funcs[2];
+ JSValue promise = JS_NewPromiseCapability(ctx, resolve_funcs);
+ resolve_funcs_out[0] = jsvalue_to_heap(resolve_funcs[0]);
+ resolve_funcs_out[1] = jsvalue_to_heap(resolve_funcs[1]);
+ return jsvalue_to_heap(promise);
+}
+
+void QTS_TestStringArg(const char *string) {
+ // pass
+}
+
+int QTS_BuildIsDebug() {
+#ifdef QTS_DEBUG_MODE
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+int QTS_BuildIsAsyncify() {
+#ifdef QTS_ASYNCIFY
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+// ----------------------------------------------------------------------------
+// Module loading helpers
+
+// ----------------------------------------------------------------------------
+// C -> Host Callbacks
+// Note: inside EM_JS, we need to use ['...'] subscript syntax for accessing JS
+// objects, because in optimized builds, Closure compiler will mangle all the
+// names.
+
+// -------------------
+// function: C -> Host
+#ifdef __EMSCRIPTEN__
+EM_JS(MaybeAsync(JSValue *), qts_host_call_function, (JSContext * ctx, JSValueConst *this_ptr, int argc, JSValueConst *argv, uint32_t magic_func_id), {
+#ifdef QTS_ASYNCIFY
+ const asyncify = {['handleSleep'] : Asyncify.handleSleep};
+#else
+ const asyncify = undefined;
+#endif
+ return Module['callbacks']['callFunction'](asyncify, ctx, this_ptr, argc, argv, magic_func_id);
+});
+#endif
+
+// Function: QuickJS -> C
+JSValue qts_call_function(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv, int magic) {
+ JSValue *result_ptr = qts_host_call_function(ctx, &this_val, argc, argv, magic);
+ if (result_ptr == NULL) {
+ return JS_UNDEFINED;
+ }
+ JSValue result = *result_ptr;
+ free(result_ptr);
+ return result;
+}
+
+// Function: Host -> QuickJS
+JSValue *QTS_NewFunction(JSContext *ctx, uint32_t func_id, const char *name) {
+#ifdef QTS_DEBUG_MODE
+ char msg[500];
+ sprintf(msg, "new_function(name: %s, magic: %d)", name, func_id);
+ QTS_DEBUG(msg)
+#endif
+ JSValue func_obj = JS_NewCFunctionMagic(
+ /* context */ ctx,
+ /* JSCFunctionMagic* */ &qts_call_function,
+ /* name */ name,
+ /* min argc */ 0,
+ /* function type */ JS_CFUNC_generic_magic,
+ /* magic: fn id */ func_id);
+ return jsvalue_to_heap(func_obj);
+}
+
+JSValueConst *QTS_ArgvGetJSValueConstPointer(JSValueConst *argv, int index) {
+ return &argv[index];
+}
+
+// --------------------
+// interrupt: C -> Host
+#ifdef __EMSCRIPTEN__
+EM_JS(int, qts_host_interrupt_handler, (JSRuntime * rt), {
+ // Async not supported here.
+ // #ifdef QTS_ASYNCIFY
+ // const asyncify = Asyncify;
+ // #else
+ const asyncify = undefined;
+ // #endif
+ return Module['callbacks']['shouldInterrupt'](asyncify, rt);
+});
+#endif
+
+// interrupt: QuickJS -> C
+int qts_interrupt_handler(JSRuntime *rt, void *_unused) {
+ return qts_host_interrupt_handler(rt);
+}
+
+// interrupt: Host -> QuickJS
+void QTS_RuntimeEnableInterruptHandler(JSRuntime *rt) {
+ JS_SetInterruptHandler(rt, &qts_interrupt_handler, NULL);
+}
+
+void QTS_RuntimeDisableInterruptHandler(JSRuntime *rt) {
+ JS_SetInterruptHandler(rt, NULL, NULL);
+}
+
+// --------------------
+// load module: C -> Host
+// TODO: a future version can support host returning JSModuleDef* directly;
+// for now we only support loading module source code.
+
+/*
+The module loading model under ASYNCIFY is convoluted. We need to make sure we
+never have an async request running concurrently for loading modules.
+
+The first implemenation looked like this:
+
+C HOST SUSPENDED
+qts_host_load_module(name) ------> false
+ call rt.loadModule(name) false
+ Start async load module false
+ Suspend C true
+ Async load complete true
+ < --------------- QTS_CompileModule(source) true
+QTS_Eval(source, COMPILE_ONLY) true
+Loaded module has import true
+qts_host_load_module(dep) -------> true
+ call rt.loadModule(dep) true
+ Start async load module true
+ ALREADY SUSPENDED, CRASH
+
+We can solve this in two different ways:
+
+1. Return to C as soon as we async load the module source.
+ That way, we unsuspend before calling QTS_CompileModule.
+2. Once we load the module, use a new API to detect and async
+ load the module's downstream dependencies. This way
+ they're loaded synchronously so we don't need to suspend "again".
+
+Probably we could optimize (2) to make it more performant, eg with parallel
+loading, but (1) seems much easier to implement in the sort run.
+*/
+
+JSModuleDef *qts_compile_module(JSContext *ctx, const char *module_name, BorrowedHeapChar *module_body) {
+#ifdef QTS_DEBUG_MODE
+ char msg[500];
+ sprintf(msg, "QTS_CompileModule(ctx: %p, name: %s, bodyLength: %lu)", ctx, module_name, strlen(module_body));
+ QTS_DEBUG(msg)
+#endif
+ JSValue func_val = JS_Eval(ctx, module_body, strlen(module_body), module_name, JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY);
+ if (JS_IsException(func_val)) {
+ return NULL;
+ }
+ // TODO: Is exception ok?
+ // TODO: set import.meta?
+ JSModuleDef *module = JS_VALUE_GET_PTR(func_val);
+ JS_FreeValue(ctx, func_val);
+ return module;
+}
+
+#ifdef __EMSCRIPTEN__
+EM_JS(MaybeAsync(char *), qts_host_load_module_source, (JSRuntime * rt, JSContext *ctx, const char *module_name), {
+#ifdef QTS_ASYNCIFY
+ const asyncify = {['handleSleep'] : Asyncify.handleSleep};
+#else
+ const asyncify = undefined;
+#endif
+ // https://emscripten.org/docs/api_reference/preamble.js.html#UTF8ToString
+ const moduleNameString = UTF8ToString(module_name);
+ return Module['callbacks']['loadModuleSource'](asyncify, rt, ctx, moduleNameString);
+});
+
+EM_JS(MaybeAsync(char *), qts_host_normalize_module, (JSRuntime * rt, JSContext *ctx, const char *module_base_name, const char *module_name), {
+#ifdef QTS_ASYNCIFY
+ const asyncify = {['handleSleep'] : Asyncify.handleSleep};
+#else
+ const asyncify = undefined;
+#endif
+ // https://emscripten.org/docs/api_reference/preamble.js.html#UTF8ToString
+ const moduleBaseNameString = UTF8ToString(module_base_name);
+ const moduleNameString = UTF8ToString(module_name);
+ return Module['callbacks']['normalizeModule'](asyncify, rt, ctx, moduleBaseNameString, moduleNameString);
+});
+#endif
+
+// load module: QuickJS -> C
+// See js_module_loader in quickjs/quickjs-libc.c:567
+JSModuleDef *qts_load_module(JSContext *ctx, const char *module_name, void *_unused) {
+ JSRuntime *rt = JS_GetRuntime(ctx);
+#ifdef QTS_DEBUG_MODE
+ char msg[500];
+ sprintf(msg, "qts_load_module(rt: %p, ctx: %p, name: %s)", rt, ctx, module_name);
+ QTS_DEBUG(msg)
+#endif
+ char *module_source = qts_host_load_module_source(rt, ctx, module_name);
+ if (module_source == NULL) {
+ return NULL;
+ }
+
+ JSModuleDef *module = qts_compile_module(ctx, module_name, module_source);
+ free(module_source);
+ return module;
+}
+
+char *qts_normalize_module(JSContext *ctx, const char *module_base_name, const char *module_name, void *_unused) {
+ JSRuntime *rt = JS_GetRuntime(ctx);
+#ifdef QTS_DEBUG_MODE
+ char msg[500];
+ sprintf(msg, "qts_normalize_module(rt: %p, ctx: %p, base_name: %s, name: %s)", rt, ctx, module_base_name, module_name);
+ QTS_DEBUG(msg)
+#endif
+ char *em_module_name = qts_host_normalize_module(rt, ctx, module_base_name, module_name);
+ char *js_module_name = js_strdup(ctx, em_module_name);
+ free(em_module_name);
+ return js_module_name;
+}
+
+// Load module: Host -> QuickJS
+void QTS_RuntimeEnableModuleLoader(JSRuntime *rt, int use_custom_normalize) {
+ JSModuleNormalizeFunc *module_normalize = NULL; /* use default name normalizer */
+ if (use_custom_normalize) {
+ module_normalize = &qts_normalize_module;
+ }
+ JS_SetModuleLoaderFunc(rt, module_normalize, &qts_load_module, NULL);
+}
+
+void QTS_RuntimeDisableModuleLoader(JSRuntime *rt) {
+ JS_SetModuleLoaderFunc(rt, NULL, NULL, NULL);
+}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts
new file mode 100644
index 0000000..f3bb599
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.d.ts
@@ -0,0 +1,24 @@
+declare function awaitYield(value: T | Promise): Generator, T, T>;
+declare function awaitYieldOf(generator: Generator, T, Yielded>): Generator, T, T>;
+export type AwaitYield = typeof awaitYield & {
+ of: typeof awaitYieldOf;
+};
+/**
+ * Create a function that may or may not be async, using a generator
+ *
+ * Within the generator, call `yield* awaited(maybePromise)` to await a value
+ * that may or may not be a promise.
+ *
+ * If the inner function never yields a promise, it will return synchronously.
+ */
+export declare function maybeAsyncFn<
+/** Function arguments */
+Args extends any[], This,
+/** Function return type */
+Return,
+/** Yields to unwrap */
+Yielded>(that: This, fn: (this: This, awaited: AwaitYield, ...args: Args) => Generator, Return, Yielded>): (...args: Args) => Return | Promise;
+export type MaybeAsyncBlock = (this: This, awaited: AwaitYield, ...args: Args) => Generator, Return, Yielded>;
+export declare function maybeAsync(that: This, startGenerator: (this: This, await: AwaitYield) => Generator, Return, Yielded>): Return | Promise;
+export declare function awaitEachYieldedPromise(gen: Generator, Returned, Yielded>): Returned | Promise;
+export {};
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js
new file mode 100644
index 0000000..c140dde
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js
@@ -0,0 +1,53 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.awaitEachYieldedPromise = exports.maybeAsync = exports.maybeAsyncFn = void 0;
+function* awaitYield(value) {
+ return (yield value);
+}
+function awaitYieldOf(generator) {
+ return awaitYield(awaitEachYieldedPromise(generator));
+}
+const AwaitYield = awaitYield;
+AwaitYield.of = awaitYieldOf;
+/**
+ * Create a function that may or may not be async, using a generator
+ *
+ * Within the generator, call `yield* awaited(maybePromise)` to await a value
+ * that may or may not be a promise.
+ *
+ * If the inner function never yields a promise, it will return synchronously.
+ */
+function maybeAsyncFn(that, fn) {
+ return (...args) => {
+ const generator = fn.call(that, AwaitYield, ...args);
+ return awaitEachYieldedPromise(generator);
+ };
+}
+exports.maybeAsyncFn = maybeAsyncFn;
+class Example {
+ constructor() {
+ this.maybeAsyncMethod = maybeAsyncFn(this, function* (awaited, a) {
+ yield* awaited(new Promise((resolve) => setTimeout(resolve, a)));
+ return 5;
+ });
+ }
+}
+function maybeAsync(that, startGenerator) {
+ const generator = startGenerator.call(that, AwaitYield);
+ return awaitEachYieldedPromise(generator);
+}
+exports.maybeAsync = maybeAsync;
+function awaitEachYieldedPromise(gen) {
+ function handleNextStep(step) {
+ if (step.done) {
+ return step.value;
+ }
+ if (step.value instanceof Promise) {
+ return step.value.then((value) => handleNextStep(gen.next(value)), (error) => handleNextStep(gen.throw(error)));
+ }
+ return handleNextStep(gen.next(step.value));
+ }
+ return handleNextStep(gen.next());
+}
+exports.awaitEachYieldedPromise = awaitEachYieldedPromise;
+//# sourceMappingURL=asyncify-helpers.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js.map b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js.map
new file mode 100644
index 0000000..10dcc46
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"asyncify-helpers.js","sourceRoot":"","sources":["../ts/asyncify-helpers.ts"],"names":[],"mappings":";;;AAAA,QAAQ,CAAC,CAAC,UAAU,CAAI,KAAqB;IAC3C,OAAO,CAAC,MAAM,KAAK,CAAM,CAAA;AAC3B,CAAC;AAED,SAAS,YAAY,CACnB,SAA4D;IAE5D,OAAO,UAAU,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAA;AACvD,CAAC;AAMD,MAAM,UAAU,GAAe,UAAwB,CAAA;AACvD,UAAU,CAAC,EAAE,GAAG,YAAY,CAAA;AAE5B;;;;;;;GAOG;AACH,SAAgB,YAAY,CAS1B,IAAU,EACV,EAI2D;IAE3D,OAAO,CAAC,GAAG,IAAU,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAA;QACpD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC,CAAA;AACH,CAAC;AApBD,oCAoBC;AAED,MAAM,OAAO;IAAb;QACU,qBAAgB,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAS;YACzE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAChE,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAQD,SAAgB,UAAU,CACxB,IAAU,EACV,cAG2D;IAE3D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACvD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;AAC3C,CAAC;AATD,gCASC;AAED,SAAgB,uBAAuB,CACrC,GAA6D;IAI7D,SAAS,cAAc,CAAC,IAAgB;QACtC,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QAED,IAAI,IAAI,CAAC,KAAK,YAAY,OAAO,EAAE;YACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5C,CAAA;SACF;QAED,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AACnC,CAAC;AArBD,0DAqBC","sourcesContent":["function* awaitYield(value: T | Promise) {\n return (yield value) as T\n}\n\nfunction awaitYieldOf(\n generator: Generator, T, Yielded>\n): Generator, T, T> {\n return awaitYield(awaitEachYieldedPromise(generator))\n}\n\nexport type AwaitYield = typeof awaitYield & {\n of: typeof awaitYieldOf\n}\n\nconst AwaitYield: AwaitYield = awaitYield as AwaitYield\nAwaitYield.of = awaitYieldOf\n\n/**\n * Create a function that may or may not be async, using a generator\n *\n * Within the generator, call `yield* awaited(maybePromise)` to await a value\n * that may or may not be a promise.\n *\n * If the inner function never yields a promise, it will return synchronously.\n */\nexport function maybeAsyncFn<\n /** Function arguments */\n Args extends any[],\n This,\n /** Function return type */\n Return,\n /** Yields to unwrap */\n Yielded\n>(\n that: This,\n fn: (\n this: This,\n awaited: AwaitYield,\n ...args: Args\n ) => Generator, Return, Yielded>\n): (...args: Args) => Return | Promise {\n return (...args: Args) => {\n const generator = fn.call(that, AwaitYield, ...args)\n return awaitEachYieldedPromise(generator)\n }\n}\n\nclass Example {\n private maybeAsyncMethod = maybeAsyncFn(this, function* (awaited, a: number) {\n yield* awaited(new Promise((resolve) => setTimeout(resolve, a)))\n return 5\n })\n}\n\nexport type MaybeAsyncBlock = (\n this: This,\n awaited: AwaitYield,\n ...args: Args\n) => Generator, Return, Yielded>\n\nexport function maybeAsync(\n that: This,\n startGenerator: (\n this: This,\n await: AwaitYield\n ) => Generator, Return, Yielded>\n): Return | Promise {\n const generator = startGenerator.call(that, AwaitYield)\n return awaitEachYieldedPromise(generator)\n}\n\nexport function awaitEachYieldedPromise(\n gen: Generator, Returned, Yielded>\n): Returned | Promise {\n type NextResult = ReturnType\n\n function handleNextStep(step: NextResult): Returned | Promise {\n if (step.done) {\n return step.value\n }\n\n if (step.value instanceof Promise) {\n return step.value.then(\n (value) => handleNextStep(gen.next(value)),\n (error) => handleNextStep(gen.throw(error))\n )\n }\n\n return handleNextStep(gen.next(step.value))\n }\n\n return handleNextStep(gen.next())\n}\n"]}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts
new file mode 100644
index 0000000..290a9ec
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.d.ts
@@ -0,0 +1,48 @@
+import { QuickJSContext } from "./context";
+import { QuickJSAsyncEmscriptenModule } from "./emscripten-types";
+import { QuickJSAsyncFFI } from "./variants";
+import { JSRuntimePointer } from "./types-ffi";
+import { Lifetime } from "./lifetime";
+import { QuickJSModuleCallbacks } from "./module";
+import { QuickJSAsyncRuntime } from "./runtime-asyncify";
+import { ContextEvalOptions, QuickJSHandle } from "./types";
+import { VmCallResult } from "./vm-interface";
+export type AsyncFunctionImplementation = (this: QuickJSHandle, ...args: QuickJSHandle[]) => Promise | void>;
+/**
+ * Asyncified version of [[QuickJSContext]].
+ *
+ * *Asyncify* allows normally synchronous code to wait for asynchronous Promises
+ * or callbacks. The asyncified version of QuickJSContext can wait for async
+ * host functions as though they were synchronous.
+ */
+export declare class QuickJSAsyncContext extends QuickJSContext {
+ runtime: QuickJSAsyncRuntime;
+ /** @private */
+ protected module: QuickJSAsyncEmscriptenModule;
+ /** @private */
+ protected ffi: QuickJSAsyncFFI;
+ /** @private */
+ protected rt: Lifetime;
+ /** @private */
+ protected callbacks: QuickJSModuleCallbacks;
+ /**
+ * Asyncified version of [[evalCode]].
+ */
+ evalCodeAsync(code: string, filename?: string,
+ /** See [[EvalFlags]] for number semantics */
+ options?: number | ContextEvalOptions): Promise>;
+ /**
+ * Similar to [[newFunction]].
+ * Convert an async host Javascript function into a synchronous QuickJS function value.
+ *
+ * Whenever QuickJS calls this function, the VM's stack will be unwound while
+ * waiting the async function to complete, and then restored when the returned
+ * promise resolves.
+ *
+ * Asyncified functions must never call other asyncified functions or
+ * `import`, even indirectly, because the stack cannot be unwound twice.
+ *
+ * See [Emscripten's docs on Asyncify](https://emscripten.org/docs/porting/asyncify.html).
+ */
+ newAsyncifiedFunction(name: string, fn: AsyncFunctionImplementation): QuickJSHandle;
+}
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js
new file mode 100644
index 0000000..7b3fe56
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js
@@ -0,0 +1,58 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.QuickJSAsyncContext = void 0;
+const context_1 = require("./context");
+const debug_1 = require("./debug");
+const types_1 = require("./types");
+/**
+ * Asyncified version of [[QuickJSContext]].
+ *
+ * *Asyncify* allows normally synchronous code to wait for asynchronous Promises
+ * or callbacks. The asyncified version of QuickJSContext can wait for async
+ * host functions as though they were synchronous.
+ */
+class QuickJSAsyncContext extends context_1.QuickJSContext {
+ /**
+ * Asyncified version of [[evalCode]].
+ */
+ async evalCodeAsync(code, filename = "eval.js",
+ /** See [[EvalFlags]] for number semantics */
+ options) {
+ const detectModule = (options === undefined ? 1 : 0);
+ const flags = (0, types_1.evalOptionsToFlags)(options);
+ let resultPtr = 0;
+ try {
+ resultPtr = await this.memory
+ .newHeapCharPointer(code)
+ .consume((charHandle) => this.ffi.QTS_Eval_MaybeAsync(this.ctx.value, charHandle.value, filename, detectModule, flags));
+ }
+ catch (error) {
+ (0, debug_1.debugLog)("QTS_Eval_MaybeAsync threw", error);
+ throw error;
+ }
+ const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr);
+ if (errorPtr) {
+ this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr);
+ return { error: this.memory.heapValueHandle(errorPtr) };
+ }
+ return { value: this.memory.heapValueHandle(resultPtr) };
+ }
+ /**
+ * Similar to [[newFunction]].
+ * Convert an async host Javascript function into a synchronous QuickJS function value.
+ *
+ * Whenever QuickJS calls this function, the VM's stack will be unwound while
+ * waiting the async function to complete, and then restored when the returned
+ * promise resolves.
+ *
+ * Asyncified functions must never call other asyncified functions or
+ * `import`, even indirectly, because the stack cannot be unwound twice.
+ *
+ * See [Emscripten's docs on Asyncify](https://emscripten.org/docs/porting/asyncify.html).
+ */
+ newAsyncifiedFunction(name, fn) {
+ return this.newFunction(name, fn);
+ }
+}
+exports.QuickJSAsyncContext = QuickJSAsyncContext;
+//# sourceMappingURL=context-asyncify.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js.map b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js.map
new file mode 100644
index 0000000..93695e2
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"context-asyncify.js","sourceRoot":"","sources":["../ts/context-asyncify.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAC1C,mCAAkC;AAOlC,mCAA+E;AAQ/E;;;;;;GAMG;AACH,MAAa,mBAAoB,SAAQ,wBAAc;IAWrD;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,WAAmB,SAAS;IAC5B,6CAA6C;IAC7C,OAAqC;QAErC,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAqB,CAAA;QACxE,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAc,CAAA;QACtD,IAAI,SAAS,GAAG,CAAmB,CAAA;QACnC,IAAI;YACF,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM;iBAC1B,kBAAkB,CAAC,IAAI,CAAC;iBACxB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACtB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,EACd,UAAU,CAAC,KAAK,EAChB,QAAQ,EACR,YAAY,EACZ,KAAK,CACN,CACF,CAAA;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,IAAA,gBAAQ,EAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;YAC5C,MAAM,KAAK,CAAA;SACZ;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACzE,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YACxD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;SACxD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,IAAY,EAAE,EAA+B;QACjE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC1C,CAAC;CACF;AA/DD,kDA+DC","sourcesContent":["import { QuickJSContext } from \"./context\"\nimport { debugLog } from \"./debug\"\nimport { QuickJSAsyncEmscriptenModule } from \"./emscripten-types\"\nimport { QuickJSAsyncFFI } from \"./variants\"\nimport { EvalDetectModule, EvalFlags, JSRuntimePointer, JSValuePointer } from \"./types-ffi\"\nimport { Lifetime } from \"./lifetime\"\nimport { QuickJSModuleCallbacks } from \"./module\"\nimport { QuickJSAsyncRuntime } from \"./runtime-asyncify\"\nimport { ContextEvalOptions, evalOptionsToFlags, QuickJSHandle } from \"./types\"\nimport { VmCallResult } from \"./vm-interface\"\n\nexport type AsyncFunctionImplementation = (\n this: QuickJSHandle,\n ...args: QuickJSHandle[]\n) => Promise | void>\n\n/**\n * Asyncified version of [[QuickJSContext]].\n *\n * *Asyncify* allows normally synchronous code to wait for asynchronous Promises\n * or callbacks. The asyncified version of QuickJSContext can wait for async\n * host functions as though they were synchronous.\n */\nexport class QuickJSAsyncContext extends QuickJSContext {\n public declare runtime: QuickJSAsyncRuntime\n /** @private */\n protected declare module: QuickJSAsyncEmscriptenModule\n /** @private */\n protected declare ffi: QuickJSAsyncFFI\n /** @private */\n protected declare rt: Lifetime\n /** @private */\n protected declare callbacks: QuickJSModuleCallbacks\n\n /**\n * Asyncified version of [[evalCode]].\n */\n async evalCodeAsync(\n code: string,\n filename: string = \"eval.js\",\n /** See [[EvalFlags]] for number semantics */\n options?: number | ContextEvalOptions\n ): Promise> {\n const detectModule = (options === undefined ? 1 : 0) as EvalDetectModule\n const flags = evalOptionsToFlags(options) as EvalFlags\n let resultPtr = 0 as JSValuePointer\n try {\n resultPtr = await this.memory\n .newHeapCharPointer(code)\n .consume((charHandle) =>\n this.ffi.QTS_Eval_MaybeAsync(\n this.ctx.value,\n charHandle.value,\n filename,\n detectModule,\n flags\n )\n )\n } catch (error) {\n debugLog(\"QTS_Eval_MaybeAsync threw\", error)\n throw error\n }\n const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr)\n if (errorPtr) {\n this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr)\n return { error: this.memory.heapValueHandle(errorPtr) }\n }\n return { value: this.memory.heapValueHandle(resultPtr) }\n }\n\n /**\n * Similar to [[newFunction]].\n * Convert an async host Javascript function into a synchronous QuickJS function value.\n *\n * Whenever QuickJS calls this function, the VM's stack will be unwound while\n * waiting the async function to complete, and then restored when the returned\n * promise resolves.\n *\n * Asyncified functions must never call other asyncified functions or\n * `import`, even indirectly, because the stack cannot be unwound twice.\n *\n * See [Emscripten's docs on Asyncify](https://emscripten.org/docs/porting/asyncify.html).\n */\n newAsyncifiedFunction(name: string, fn: AsyncFunctionImplementation): QuickJSHandle {\n return this.newFunction(name, fn as any)\n }\n}\n"]}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts
new file mode 100644
index 0000000..d30d199
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.d.ts
@@ -0,0 +1,371 @@
+import { QuickJSDeferredPromise } from "./deferred-promise";
+import type { EitherModule } from "./emscripten-types";
+import { JSBorrowedCharPointer, JSContextPointer, JSRuntimePointer, JSValueConstPointer, JSValuePointer } from "./types-ffi";
+import { Disposable, Lifetime, Scope } from "./lifetime";
+import { ModuleMemory } from "./memory";
+import { QuickJSModuleCallbacks } from "./module";
+import { QuickJSRuntime } from "./runtime";
+import { ContextEvalOptions, EitherFFI, JSValue, PromiseExecutor, QuickJSHandle } from "./types";
+import { LowLevelJavascriptVm, SuccessOrFail, VmCallResult, VmFunctionImplementation, VmPropertyDescriptor } from "./vm-interface";
+/**
+ * Property key for getting or setting a property on a handle with
+ * [[QuickJSContext.getProp]], [[QuickJSContext.setProp]], or [[QuickJSContext.defineProp]].
+ */
+export type QuickJSPropertyKey = number | string | QuickJSHandle;
+/**
+ * @private
+ */
+declare class ContextMemory extends ModuleMemory implements Disposable {
+ readonly owner: QuickJSRuntime;
+ readonly ctx: Lifetime;
+ readonly rt: Lifetime;
+ readonly module: EitherModule;
+ readonly ffi: EitherFFI;
+ readonly scope: Scope;
+ /** @private */
+ constructor(args: {
+ owner: QuickJSRuntime;
+ module: EitherModule;
+ ffi: EitherFFI;
+ ctx: Lifetime;
+ rt: Lifetime;
+ ownedLifetimes?: Disposable[];
+ });
+ get alive(): boolean;
+ dispose(): void;
+ /**
+ * Track `lifetime` so that it is disposed when this scope is disposed.
+ */
+ manage(lifetime: T): T;
+ copyJSValue: (ptr: JSValuePointer | JSValueConstPointer) => any;
+ freeJSValue: (ptr: JSValuePointer) => void;
+ consumeJSCharPointer(ptr: JSBorrowedCharPointer): string;
+ heapValueHandle(ptr: JSValuePointer): JSValue;
+}
+/**
+ * QuickJSContext wraps a QuickJS Javascript context (JSContext*) within a
+ * runtime. The contexts within the same runtime may exchange objects freely.
+ * You can think of separate runtimes like different domains in a browser, and
+ * the contexts within a runtime like the different windows open to the same
+ * domain. The {@link runtime} references the context's runtime.
+ *
+ * This class's methods return {@link QuickJSHandle}, which wrap C pointers (JSValue*).
+ * It's the caller's responsibility to call `.dispose()` on any
+ * handles you create to free memory once you're done with the handle.
+ *
+ * Use {@link QuickJSRuntime.newContext} or {@link QuickJSWASMModule.newContext}
+ * to create a new QuickJSContext.
+ *
+ * Create QuickJS values inside the interpreter with methods like
+ * [[newNumber]], [[newString]], [[newArray]], [[newObject]],
+ * [[newFunction]], and [[newPromise]].
+ *
+ * Call [[setProp]] or [[defineProp]] to customize objects. Use those methods
+ * with [[global]] to expose the values you create to the interior of the
+ * interpreter, so they can be used in [[evalCode]].
+ *
+ * Use [[evalCode]] or [[callFunction]] to execute Javascript inside the VM. If
+ * you're using asynchronous code inside the QuickJSContext, you may need to also
+ * call [[executePendingJobs]]. Executing code inside the runtime returns a
+ * result object representing successful execution or an error. You must dispose
+ * of any such results to avoid leaking memory inside the VM.
+ *
+ * Implement memory and CPU constraints at the runtime level, using [[runtime]].
+ * See {@link QuickJSRuntime} for more information.
+ *
+ */
+export declare class QuickJSContext implements LowLevelJavascriptVm, Disposable {
+ /**
+ * The runtime that created this context.
+ */
+ readonly runtime: QuickJSRuntime;
+ /** @private */
+ protected readonly ctx: Lifetime;
+ /** @private */
+ protected readonly rt: Lifetime;
+ /** @private */
+ protected readonly module: EitherModule;
+ /** @private */
+ protected readonly ffi: EitherFFI;
+ /** @private */
+ protected memory: ContextMemory;
+ /** @private */
+ protected _undefined: QuickJSHandle | undefined;
+ /** @private */
+ protected _null: QuickJSHandle | undefined;
+ /** @private */
+ protected _false: QuickJSHandle | undefined;
+ /** @private */
+ protected _true: QuickJSHandle | undefined;
+ /** @private */
+ protected _global: QuickJSHandle | undefined;
+ /** @private */
+ protected _BigInt: QuickJSHandle | undefined;
+ /**
+ * Use {@link QuickJS.createVm} to create a QuickJSContext instance.
+ */
+ constructor(args: {
+ module: EitherModule;
+ ffi: EitherFFI;
+ ctx: Lifetime;
+ rt: Lifetime;
+ runtime: QuickJSRuntime;
+ ownedLifetimes?: Disposable[];
+ callbacks: QuickJSModuleCallbacks;
+ });
+ get alive(): boolean;
+ /**
+ * Dispose of this VM's underlying resources.
+ *
+ * @throws Calling this method without disposing of all created handles
+ * will result in an error.
+ */
+ dispose(): void;
+ /**
+ * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined).
+ */
+ get undefined(): QuickJSHandle;
+ /**
+ * [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null).
+ */
+ get null(): QuickJSHandle;
+ /**
+ * [`true`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/true).
+ */
+ get true(): QuickJSHandle;
+ /**
+ * [`false`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/false).
+ */
+ get false(): QuickJSHandle;
+ /**
+ * [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects).
+ * A handle to the global object inside the interpreter.
+ * You can set properties to create global variables.
+ */
+ get global(): QuickJSHandle;
+ /**
+ * Converts a Javascript number into a QuickJS value.
+ */
+ newNumber(num: number): QuickJSHandle;
+ /**
+ * Create a QuickJS [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) value.
+ */
+ newString(str: string): QuickJSHandle;
+ /**
+ * Create a QuickJS [symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) value.
+ * No two symbols created with this function will be the same value.
+ */
+ newUniqueSymbol(description: string | symbol): QuickJSHandle;
+ /**
+ * Get a symbol from the [global registry](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry) for the given key.
+ * All symbols created with the same key will be the same value.
+ */
+ newSymbolFor(key: string | symbol): QuickJSHandle;
+ /**
+ * Create a QuickJS [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) value.
+ */
+ newBigInt(num: bigint): QuickJSHandle;
+ /**
+ * `{}`.
+ * Create a new QuickJS [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer).
+ *
+ * @param prototype - Like [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create).
+ */
+ newObject(prototype?: QuickJSHandle): QuickJSHandle;
+ /**
+ * `[]`.
+ * Create a new QuickJS [array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).
+ */
+ newArray(): QuickJSHandle;
+ /**
+ * Create a new [[QuickJSDeferredPromise]]. Use `deferred.resolve(handle)` and
+ * `deferred.reject(handle)` to fulfill the promise handle available at `deferred.handle`.
+ * Note that you are responsible for calling `deferred.dispose()` to free the underlying
+ * resources; see the documentation on [[QuickJSDeferredPromise]] for details.
+ */
+ newPromise(): QuickJSDeferredPromise;
+ /**
+ * Create a new [[QuickJSDeferredPromise]] that resolves when the
+ * given native Promise resolves. Rejections will be coerced
+ * to a QuickJS error.
+ *
+ * You can still resolve/reject the created promise "early" using its methods.
+ */
+ newPromise(promise: Promise): QuickJSDeferredPromise;
+ /**
+ * Construct a new native Promise, and then convert it into a
+ * [[QuickJSDeferredPromise]].
+ *
+ * You can still resolve/reject the created promise "early" using its methods.
+ */
+ newPromise(newPromiseFn: PromiseExecutor): QuickJSDeferredPromise;
+ /**
+ * Convert a Javascript function into a QuickJS function value.
+ * See [[VmFunctionImplementation]] for more details.
+ *
+ * A [[VmFunctionImplementation]] should not free its arguments or its return
+ * value. A VmFunctionImplementation should also not retain any references to
+ * its return value.
+ *
+ * To implement an async function, create a promise with [[newPromise]], then
+ * return the deferred promise handle from `deferred.handle` from your
+ * function implementation:
+ *
+ * ```
+ * const deferred = vm.newPromise()
+ * someNativeAsyncFunction().then(deferred.resolve)
+ * return deferred.handle
+ * ```
+ */
+ newFunction(name: string, fn: VmFunctionImplementation): QuickJSHandle;
+ newError(error: {
+ name: string;
+ message: string;
+ }): QuickJSHandle;
+ newError(message: string): QuickJSHandle;
+ newError(): QuickJSHandle;
+ /**
+ * `typeof` operator. **Not** [standards compliant](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof).
+ *
+ * @remarks
+ * Does not support BigInt values correctly.
+ */
+ typeof(handle: QuickJSHandle): string;
+ /**
+ * Converts `handle` into a Javascript number.
+ * @returns `NaN` on error, otherwise a `number`.
+ */
+ getNumber(handle: QuickJSHandle): number;
+ /**
+ * Converts `handle` to a Javascript string.
+ */
+ getString(handle: QuickJSHandle): string;
+ /**
+ * Converts `handle` into a Javascript symbol. If the symbol is in the global
+ * registry in the guest, it will be created with Symbol.for on the host.
+ */
+ getSymbol(handle: QuickJSHandle): symbol;
+ /**
+ * Converts `handle` to a Javascript bigint.
+ */
+ getBigInt(handle: QuickJSHandle): bigint;
+ /**
+ * `Promise.resolve(value)`.
+ * Convert a handle containing a Promise-like value inside the VM into an
+ * actual promise on the host.
+ *
+ * @remarks
+ * You may need to call [[executePendingJobs]] to ensure that the promise is resolved.
+ *
+ * @param promiseLikeHandle - A handle to a Promise-like value with a `.then(onSuccess, onError)` method.
+ */
+ resolvePromise(promiseLikeHandle: QuickJSHandle): Promise>;
+ /**
+ * `handle[key]`.
+ * Get a property from a JSValue.
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string (which will be converted automatically).
+ */
+ getProp(handle: QuickJSHandle, key: QuickJSPropertyKey): QuickJSHandle;
+ /**
+ * `handle[key] = value`.
+ * Set a property on a JSValue.
+ *
+ * @remarks
+ * Note that the QuickJS authors recommend using [[defineProp]] to define new
+ * properties.
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string or number (which will be converted automatically to a JSValue).
+ */
+ setProp(handle: QuickJSHandle, key: QuickJSPropertyKey, value: QuickJSHandle): void;
+ /**
+ * [`Object.defineProperty(handle, key, descriptor)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty).
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string or number (which will be converted automatically to a JSValue).
+ */
+ defineProp(handle: QuickJSHandle, key: QuickJSPropertyKey, descriptor: VmPropertyDescriptor): void;
+ /**
+ * [`func.call(thisVal, ...args)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call).
+ * Call a JSValue as a function.
+ *
+ * See [[unwrapResult]], which will throw if the function returned an error, or
+ * return the result handle directly. If evaluation returned a handle containing
+ * a promise, use [[resolvePromise]] to convert it to a native promise and
+ * [[executePendingJobs]] to finish evaluating the promise.
+ *
+ * @returns A result. If the function threw synchronously, `result.error` be a
+ * handle to the exception. Otherwise `result.value` will be a handle to the
+ * value.
+ */
+ callFunction(func: QuickJSHandle, thisVal: QuickJSHandle, ...args: QuickJSHandle[]): VmCallResult;
+ /**
+ * Like [`eval(code)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Description).
+ * Evaluates the Javascript source `code` in the global scope of this VM.
+ * When working with async code, you many need to call [[executePendingJobs]]
+ * to execute callbacks pending after synchronous evaluation returns.
+ *
+ * See [[unwrapResult]], which will throw if the function returned an error, or
+ * return the result handle directly. If evaluation returned a handle containing
+ * a promise, use [[resolvePromise]] to convert it to a native promise and
+ * [[executePendingJobs]] to finish evaluating the promise.
+ *
+ * *Note*: to protect against infinite loops, provide an interrupt handler to
+ * [[setInterruptHandler]]. You can use [[shouldInterruptAfterDeadline]] to
+ * create a time-based deadline.
+ *
+ * @returns The last statement's value. If the code threw synchronously,
+ * `result.error` will be a handle to the exception. If execution was
+ * interrupted, the error will have name `InternalError` and message
+ * `interrupted`.
+ */
+ evalCode(code: string, filename?: string,
+ /**
+ * If no options are passed, a heuristic will be used to detect if `code` is
+ * an ES module.
+ *
+ * See [[EvalFlags]] for number semantics.
+ */
+ options?: number | ContextEvalOptions): VmCallResult;
+ /**
+ * Throw an error in the VM, interrupted whatever current execution is in progress when execution resumes.
+ * @experimental
+ */
+ throw(error: Error | QuickJSHandle): any;
+ /**
+ * @private
+ */
+ protected borrowPropertyKey(key: QuickJSPropertyKey): QuickJSHandle;
+ /**
+ * @private
+ */
+ getMemory(rt: JSRuntimePointer): ContextMemory;
+ /**
+ * Dump a JSValue to Javascript in a best-effort fashion.
+ * Returns `handle.toString()` if it cannot be serialized to JSON.
+ */
+ dump(handle: QuickJSHandle): any;
+ /**
+ * Unwrap a SuccessOrFail result such as a [[VmCallResult]] or a
+ * [[ExecutePendingJobsResult]], where the fail branch contains a handle to a QuickJS error value.
+ * If the result is a success, returns the value.
+ * If the result is an error, converts the error to a native object and throws the error.
+ */
+ unwrapResult(result: SuccessOrFail): T;
+ /** @private */
+ protected fnNextId: number;
+ /** @private */
+ protected fnMaps: Map>>;
+ /** @private */
+ protected getFunction(fn_id: number): VmFunctionImplementation | undefined;
+ /** @private */
+ protected setFunction(fn_id: number, handle: VmFunctionImplementation): Map>;
+ /**
+ * @hidden
+ */
+ private cToHostCallbacks;
+ private errorToHandle;
+}
+export {};
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js
new file mode 100644
index 0000000..e65258d
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js
@@ -0,0 +1,691 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.QuickJSContext = void 0;
+const debug_1 = require("./debug");
+const deferred_promise_1 = require("./deferred-promise");
+const errors_1 = require("./errors");
+const lifetime_1 = require("./lifetime");
+const memory_1 = require("./memory");
+const types_1 = require("./types");
+/**
+ * @private
+ */
+class ContextMemory extends memory_1.ModuleMemory {
+ /** @private */
+ constructor(args) {
+ super(args.module);
+ this.scope = new lifetime_1.Scope();
+ this.copyJSValue = (ptr) => {
+ return this.ffi.QTS_DupValuePointer(this.ctx.value, ptr);
+ };
+ this.freeJSValue = (ptr) => {
+ this.ffi.QTS_FreeValuePointer(this.ctx.value, ptr);
+ };
+ args.ownedLifetimes?.forEach((lifetime) => this.scope.manage(lifetime));
+ this.owner = args.owner;
+ this.module = args.module;
+ this.ffi = args.ffi;
+ this.rt = args.rt;
+ this.ctx = this.scope.manage(args.ctx);
+ }
+ get alive() {
+ return this.scope.alive;
+ }
+ dispose() {
+ return this.scope.dispose();
+ }
+ /**
+ * Track `lifetime` so that it is disposed when this scope is disposed.
+ */
+ manage(lifetime) {
+ return this.scope.manage(lifetime);
+ }
+ consumeJSCharPointer(ptr) {
+ const str = this.module.UTF8ToString(ptr);
+ this.ffi.QTS_FreeCString(this.ctx.value, ptr);
+ return str;
+ }
+ heapValueHandle(ptr) {
+ return new lifetime_1.Lifetime(ptr, this.copyJSValue, this.freeJSValue, this.owner);
+ }
+}
+/**
+ * QuickJSContext wraps a QuickJS Javascript context (JSContext*) within a
+ * runtime. The contexts within the same runtime may exchange objects freely.
+ * You can think of separate runtimes like different domains in a browser, and
+ * the contexts within a runtime like the different windows open to the same
+ * domain. The {@link runtime} references the context's runtime.
+ *
+ * This class's methods return {@link QuickJSHandle}, which wrap C pointers (JSValue*).
+ * It's the caller's responsibility to call `.dispose()` on any
+ * handles you create to free memory once you're done with the handle.
+ *
+ * Use {@link QuickJSRuntime.newContext} or {@link QuickJSWASMModule.newContext}
+ * to create a new QuickJSContext.
+ *
+ * Create QuickJS values inside the interpreter with methods like
+ * [[newNumber]], [[newString]], [[newArray]], [[newObject]],
+ * [[newFunction]], and [[newPromise]].
+ *
+ * Call [[setProp]] or [[defineProp]] to customize objects. Use those methods
+ * with [[global]] to expose the values you create to the interior of the
+ * interpreter, so they can be used in [[evalCode]].
+ *
+ * Use [[evalCode]] or [[callFunction]] to execute Javascript inside the VM. If
+ * you're using asynchronous code inside the QuickJSContext, you may need to also
+ * call [[executePendingJobs]]. Executing code inside the runtime returns a
+ * result object representing successful execution or an error. You must dispose
+ * of any such results to avoid leaking memory inside the VM.
+ *
+ * Implement memory and CPU constraints at the runtime level, using [[runtime]].
+ * See {@link QuickJSRuntime} for more information.
+ *
+ */
+// TODO: Manage own callback registration
+class QuickJSContext {
+ /**
+ * Use {@link QuickJS.createVm} to create a QuickJSContext instance.
+ */
+ constructor(args) {
+ /** @private */
+ this._undefined = undefined;
+ /** @private */
+ this._null = undefined;
+ /** @private */
+ this._false = undefined;
+ /** @private */
+ this._true = undefined;
+ /** @private */
+ this._global = undefined;
+ /** @private */
+ this._BigInt = undefined;
+ /** @private */
+ this.fnNextId = -32768; // min value of signed 16bit int used by Quickjs
+ /** @private */
+ this.fnMaps = new Map();
+ /**
+ * @hidden
+ */
+ this.cToHostCallbacks = {
+ callFunction: (ctx, this_ptr, argc, argv, fn_id) => {
+ if (ctx !== this.ctx.value) {
+ throw new Error("QuickJSContext instance received C -> JS call with mismatched ctx");
+ }
+ const fn = this.getFunction(fn_id);
+ if (!fn) {
+ // this "throw" is not catch-able from the TS side. could we somehow handle this higher up?
+ throw new Error(`QuickJSContext had no callback with id ${fn_id}`);
+ }
+ return lifetime_1.Scope.withScopeMaybeAsync(this, function* (awaited, scope) {
+ const thisHandle = scope.manage(new lifetime_1.WeakLifetime(this_ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime));
+ const argHandles = new Array(argc);
+ for (let i = 0; i < argc; i++) {
+ const ptr = this.ffi.QTS_ArgvGetJSValueConstPointer(argv, i);
+ argHandles[i] = scope.manage(new lifetime_1.WeakLifetime(ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime));
+ }
+ try {
+ const result = yield* awaited(fn.apply(thisHandle, argHandles));
+ if (result) {
+ if ("error" in result && result.error) {
+ (0, debug_1.debugLog)("throw error", result.error);
+ throw result.error;
+ }
+ const handle = scope.manage(result instanceof lifetime_1.Lifetime ? result : result.value);
+ return this.ffi.QTS_DupValuePointer(this.ctx.value, handle.value);
+ }
+ return 0;
+ }
+ catch (error) {
+ return this.errorToHandle(error).consume((errorHandle) => this.ffi.QTS_Throw(this.ctx.value, errorHandle.value));
+ }
+ });
+ },
+ };
+ this.runtime = args.runtime;
+ this.module = args.module;
+ this.ffi = args.ffi;
+ this.rt = args.rt;
+ this.ctx = args.ctx;
+ this.memory = new ContextMemory({
+ ...args,
+ owner: this.runtime,
+ });
+ args.callbacks.setContextCallbacks(this.ctx.value, this.cToHostCallbacks);
+ this.dump = this.dump.bind(this);
+ this.getString = this.getString.bind(this);
+ this.getNumber = this.getNumber.bind(this);
+ this.resolvePromise = this.resolvePromise.bind(this);
+ }
+ // @implement Disposable ----------------------------------------------------
+ get alive() {
+ return this.memory.alive;
+ }
+ /**
+ * Dispose of this VM's underlying resources.
+ *
+ * @throws Calling this method without disposing of all created handles
+ * will result in an error.
+ */
+ dispose() {
+ this.memory.dispose();
+ }
+ // Globals ------------------------------------------------------------------
+ /**
+ * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined).
+ */
+ get undefined() {
+ if (this._undefined) {
+ return this._undefined;
+ }
+ // Undefined is a constant, immutable value in QuickJS.
+ const ptr = this.ffi.QTS_GetUndefined();
+ return (this._undefined = new lifetime_1.StaticLifetime(ptr));
+ }
+ /**
+ * [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null).
+ */
+ get null() {
+ if (this._null) {
+ return this._null;
+ }
+ // Null is a constant, immutable value in QuickJS.
+ const ptr = this.ffi.QTS_GetNull();
+ return (this._null = new lifetime_1.StaticLifetime(ptr));
+ }
+ /**
+ * [`true`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/true).
+ */
+ get true() {
+ if (this._true) {
+ return this._true;
+ }
+ // True is a constant, immutable value in QuickJS.
+ const ptr = this.ffi.QTS_GetTrue();
+ return (this._true = new lifetime_1.StaticLifetime(ptr));
+ }
+ /**
+ * [`false`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/false).
+ */
+ get false() {
+ if (this._false) {
+ return this._false;
+ }
+ // False is a constant, immutable value in QuickJS.
+ const ptr = this.ffi.QTS_GetFalse();
+ return (this._false = new lifetime_1.StaticLifetime(ptr));
+ }
+ /**
+ * [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects).
+ * A handle to the global object inside the interpreter.
+ * You can set properties to create global variables.
+ */
+ get global() {
+ if (this._global) {
+ return this._global;
+ }
+ // The global is a JSValue, but since it's lifetime is as long as the VM's,
+ // we should manage it.
+ const ptr = this.ffi.QTS_GetGlobalObject(this.ctx.value);
+ // Automatically clean up this reference when we dispose
+ this.memory.manage(this.memory.heapValueHandle(ptr));
+ // This isn't technically a static lifetime, but since it has the same
+ // lifetime as the VM, it's okay to fake one since when the VM is
+ // disposed, no other functions will accept the value.
+ this._global = new lifetime_1.StaticLifetime(ptr, this.runtime);
+ return this._global;
+ }
+ // New values ---------------------------------------------------------------
+ /**
+ * Converts a Javascript number into a QuickJS value.
+ */
+ newNumber(num) {
+ return this.memory.heapValueHandle(this.ffi.QTS_NewFloat64(this.ctx.value, num));
+ }
+ /**
+ * Create a QuickJS [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) value.
+ */
+ newString(str) {
+ const ptr = this.memory
+ .newHeapCharPointer(str)
+ .consume((charHandle) => this.ffi.QTS_NewString(this.ctx.value, charHandle.value));
+ return this.memory.heapValueHandle(ptr);
+ }
+ /**
+ * Create a QuickJS [symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) value.
+ * No two symbols created with this function will be the same value.
+ */
+ newUniqueSymbol(description) {
+ const key = (typeof description === "symbol" ? description.description : description) ?? "";
+ const ptr = this.memory
+ .newHeapCharPointer(key)
+ .consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 0));
+ return this.memory.heapValueHandle(ptr);
+ }
+ /**
+ * Get a symbol from the [global registry](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry) for the given key.
+ * All symbols created with the same key will be the same value.
+ */
+ newSymbolFor(key) {
+ const description = (typeof key === "symbol" ? key.description : key) ?? "";
+ const ptr = this.memory
+ .newHeapCharPointer(description)
+ .consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 1));
+ return this.memory.heapValueHandle(ptr);
+ }
+ /**
+ * Create a QuickJS [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) value.
+ */
+ newBigInt(num) {
+ if (!this._BigInt) {
+ const bigIntHandle = this.getProp(this.global, "BigInt");
+ this.memory.manage(bigIntHandle);
+ this._BigInt = new lifetime_1.StaticLifetime(bigIntHandle.value, this.runtime);
+ }
+ const bigIntHandle = this._BigInt;
+ const asString = String(num);
+ return this.newString(asString).consume((handle) => this.unwrapResult(this.callFunction(bigIntHandle, this.undefined, handle)));
+ }
+ /**
+ * `{}`.
+ * Create a new QuickJS [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer).
+ *
+ * @param prototype - Like [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create).
+ */
+ newObject(prototype) {
+ if (prototype) {
+ this.runtime.assertOwned(prototype);
+ }
+ const ptr = prototype
+ ? this.ffi.QTS_NewObjectProto(this.ctx.value, prototype.value)
+ : this.ffi.QTS_NewObject(this.ctx.value);
+ return this.memory.heapValueHandle(ptr);
+ }
+ /**
+ * `[]`.
+ * Create a new QuickJS [array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).
+ */
+ newArray() {
+ const ptr = this.ffi.QTS_NewArray(this.ctx.value);
+ return this.memory.heapValueHandle(ptr);
+ }
+ newPromise(value) {
+ const deferredPromise = lifetime_1.Scope.withScope((scope) => {
+ const mutablePointerArray = scope.manage(this.memory.newMutablePointerArray(2));
+ const promisePtr = this.ffi.QTS_NewPromiseCapability(this.ctx.value, mutablePointerArray.value.ptr);
+ const promiseHandle = this.memory.heapValueHandle(promisePtr);
+ const [resolveHandle, rejectHandle] = Array.from(mutablePointerArray.value.typedArray).map((jsvaluePtr) => this.memory.heapValueHandle(jsvaluePtr));
+ return new deferred_promise_1.QuickJSDeferredPromise({
+ context: this,
+ promiseHandle,
+ resolveHandle,
+ rejectHandle,
+ });
+ });
+ if (value && typeof value === "function") {
+ value = new Promise(value);
+ }
+ if (value) {
+ Promise.resolve(value).then(deferredPromise.resolve, (error) => error instanceof lifetime_1.Lifetime
+ ? deferredPromise.reject(error)
+ : this.newError(error).consume(deferredPromise.reject));
+ }
+ return deferredPromise;
+ }
+ /**
+ * Convert a Javascript function into a QuickJS function value.
+ * See [[VmFunctionImplementation]] for more details.
+ *
+ * A [[VmFunctionImplementation]] should not free its arguments or its return
+ * value. A VmFunctionImplementation should also not retain any references to
+ * its return value.
+ *
+ * To implement an async function, create a promise with [[newPromise]], then
+ * return the deferred promise handle from `deferred.handle` from your
+ * function implementation:
+ *
+ * ```
+ * const deferred = vm.newPromise()
+ * someNativeAsyncFunction().then(deferred.resolve)
+ * return deferred.handle
+ * ```
+ */
+ newFunction(name, fn) {
+ const fnId = ++this.fnNextId;
+ this.setFunction(fnId, fn);
+ return this.memory.heapValueHandle(this.ffi.QTS_NewFunction(this.ctx.value, fnId, name));
+ }
+ newError(error) {
+ const errorHandle = this.memory.heapValueHandle(this.ffi.QTS_NewError(this.ctx.value));
+ if (error && typeof error === "object") {
+ if (error.name !== undefined) {
+ this.newString(error.name).consume((handle) => this.setProp(errorHandle, "name", handle));
+ }
+ if (error.message !== undefined) {
+ this.newString(error.message).consume((handle) => this.setProp(errorHandle, "message", handle));
+ }
+ }
+ else if (typeof error === "string") {
+ this.newString(error).consume((handle) => this.setProp(errorHandle, "message", handle));
+ }
+ else if (error !== undefined) {
+ // This isn't supported in the type signature but maybe it will make life easier.
+ this.newString(String(error)).consume((handle) => this.setProp(errorHandle, "message", handle));
+ }
+ return errorHandle;
+ }
+ // Read values --------------------------------------------------------------
+ /**
+ * `typeof` operator. **Not** [standards compliant](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof).
+ *
+ * @remarks
+ * Does not support BigInt values correctly.
+ */
+ typeof(handle) {
+ this.runtime.assertOwned(handle);
+ return this.memory.consumeHeapCharPointer(this.ffi.QTS_Typeof(this.ctx.value, handle.value));
+ }
+ /**
+ * Converts `handle` into a Javascript number.
+ * @returns `NaN` on error, otherwise a `number`.
+ */
+ getNumber(handle) {
+ this.runtime.assertOwned(handle);
+ return this.ffi.QTS_GetFloat64(this.ctx.value, handle.value);
+ }
+ /**
+ * Converts `handle` to a Javascript string.
+ */
+ getString(handle) {
+ this.runtime.assertOwned(handle);
+ return this.memory.consumeJSCharPointer(this.ffi.QTS_GetString(this.ctx.value, handle.value));
+ }
+ /**
+ * Converts `handle` into a Javascript symbol. If the symbol is in the global
+ * registry in the guest, it will be created with Symbol.for on the host.
+ */
+ getSymbol(handle) {
+ this.runtime.assertOwned(handle);
+ const key = this.memory.consumeJSCharPointer(this.ffi.QTS_GetSymbolDescriptionOrKey(this.ctx.value, handle.value));
+ const isGlobal = this.ffi.QTS_IsGlobalSymbol(this.ctx.value, handle.value);
+ return isGlobal ? Symbol.for(key) : Symbol(key);
+ }
+ /**
+ * Converts `handle` to a Javascript bigint.
+ */
+ getBigInt(handle) {
+ this.runtime.assertOwned(handle);
+ const asString = this.getString(handle);
+ return BigInt(asString);
+ }
+ /**
+ * `Promise.resolve(value)`.
+ * Convert a handle containing a Promise-like value inside the VM into an
+ * actual promise on the host.
+ *
+ * @remarks
+ * You may need to call [[executePendingJobs]] to ensure that the promise is resolved.
+ *
+ * @param promiseLikeHandle - A handle to a Promise-like value with a `.then(onSuccess, onError)` method.
+ */
+ resolvePromise(promiseLikeHandle) {
+ this.runtime.assertOwned(promiseLikeHandle);
+ const vmResolveResult = lifetime_1.Scope.withScope((scope) => {
+ const vmPromise = scope.manage(this.getProp(this.global, "Promise"));
+ const vmPromiseResolve = scope.manage(this.getProp(vmPromise, "resolve"));
+ return this.callFunction(vmPromiseResolve, vmPromise, promiseLikeHandle);
+ });
+ if (vmResolveResult.error) {
+ return Promise.resolve(vmResolveResult);
+ }
+ return new Promise((resolve) => {
+ lifetime_1.Scope.withScope((scope) => {
+ const resolveHandle = scope.manage(this.newFunction("resolve", (value) => {
+ resolve({ value: value && value.dup() });
+ }));
+ const rejectHandle = scope.manage(this.newFunction("reject", (error) => {
+ resolve({ error: error && error.dup() });
+ }));
+ const promiseHandle = scope.manage(vmResolveResult.value);
+ const promiseThenHandle = scope.manage(this.getProp(promiseHandle, "then"));
+ this.unwrapResult(this.callFunction(promiseThenHandle, promiseHandle, resolveHandle, rejectHandle)).dispose();
+ });
+ });
+ }
+ // Properties ---------------------------------------------------------------
+ /**
+ * `handle[key]`.
+ * Get a property from a JSValue.
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string (which will be converted automatically).
+ */
+ getProp(handle, key) {
+ this.runtime.assertOwned(handle);
+ const ptr = this.borrowPropertyKey(key).consume((quickJSKey) => this.ffi.QTS_GetProp(this.ctx.value, handle.value, quickJSKey.value));
+ const result = this.memory.heapValueHandle(ptr);
+ return result;
+ }
+ /**
+ * `handle[key] = value`.
+ * Set a property on a JSValue.
+ *
+ * @remarks
+ * Note that the QuickJS authors recommend using [[defineProp]] to define new
+ * properties.
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string or number (which will be converted automatically to a JSValue).
+ */
+ setProp(handle, key, value) {
+ this.runtime.assertOwned(handle);
+ // free newly allocated value if key was a string or number. No-op if string was already
+ // a QuickJS handle.
+ this.borrowPropertyKey(key).consume((quickJSKey) => this.ffi.QTS_SetProp(this.ctx.value, handle.value, quickJSKey.value, value.value));
+ }
+ /**
+ * [`Object.defineProperty(handle, key, descriptor)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty).
+ *
+ * @param key - The property may be specified as a JSValue handle, or as a
+ * Javascript string or number (which will be converted automatically to a JSValue).
+ */
+ defineProp(handle, key, descriptor) {
+ this.runtime.assertOwned(handle);
+ lifetime_1.Scope.withScope((scope) => {
+ const quickJSKey = scope.manage(this.borrowPropertyKey(key));
+ const value = descriptor.value || this.undefined;
+ const configurable = Boolean(descriptor.configurable);
+ const enumerable = Boolean(descriptor.enumerable);
+ const hasValue = Boolean(descriptor.value);
+ const get = descriptor.get
+ ? scope.manage(this.newFunction(descriptor.get.name, descriptor.get))
+ : this.undefined;
+ const set = descriptor.set
+ ? scope.manage(this.newFunction(descriptor.set.name, descriptor.set))
+ : this.undefined;
+ this.ffi.QTS_DefineProp(this.ctx.value, handle.value, quickJSKey.value, value.value, get.value, set.value, configurable, enumerable, hasValue);
+ });
+ }
+ // Evaluation ---------------------------------------------------------------
+ /**
+ * [`func.call(thisVal, ...args)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call).
+ * Call a JSValue as a function.
+ *
+ * See [[unwrapResult]], which will throw if the function returned an error, or
+ * return the result handle directly. If evaluation returned a handle containing
+ * a promise, use [[resolvePromise]] to convert it to a native promise and
+ * [[executePendingJobs]] to finish evaluating the promise.
+ *
+ * @returns A result. If the function threw synchronously, `result.error` be a
+ * handle to the exception. Otherwise `result.value` will be a handle to the
+ * value.
+ */
+ callFunction(func, thisVal, ...args) {
+ this.runtime.assertOwned(func);
+ const resultPtr = this.memory
+ .toPointerArray(args)
+ .consume((argsArrayPtr) => this.ffi.QTS_Call(this.ctx.value, func.value, thisVal.value, args.length, argsArrayPtr.value));
+ const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr);
+ if (errorPtr) {
+ this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr);
+ return { error: this.memory.heapValueHandle(errorPtr) };
+ }
+ return { value: this.memory.heapValueHandle(resultPtr) };
+ }
+ /**
+ * Like [`eval(code)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Description).
+ * Evaluates the Javascript source `code` in the global scope of this VM.
+ * When working with async code, you many need to call [[executePendingJobs]]
+ * to execute callbacks pending after synchronous evaluation returns.
+ *
+ * See [[unwrapResult]], which will throw if the function returned an error, or
+ * return the result handle directly. If evaluation returned a handle containing
+ * a promise, use [[resolvePromise]] to convert it to a native promise and
+ * [[executePendingJobs]] to finish evaluating the promise.
+ *
+ * *Note*: to protect against infinite loops, provide an interrupt handler to
+ * [[setInterruptHandler]]. You can use [[shouldInterruptAfterDeadline]] to
+ * create a time-based deadline.
+ *
+ * @returns The last statement's value. If the code threw synchronously,
+ * `result.error` will be a handle to the exception. If execution was
+ * interrupted, the error will have name `InternalError` and message
+ * `interrupted`.
+ */
+ evalCode(code, filename = "eval.js",
+ /**
+ * If no options are passed, a heuristic will be used to detect if `code` is
+ * an ES module.
+ *
+ * See [[EvalFlags]] for number semantics.
+ */
+ options) {
+ const detectModule = (options === undefined ? 1 : 0);
+ const flags = (0, types_1.evalOptionsToFlags)(options);
+ const resultPtr = this.memory
+ .newHeapCharPointer(code)
+ .consume((charHandle) => this.ffi.QTS_Eval(this.ctx.value, charHandle.value, filename, detectModule, flags));
+ const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr);
+ if (errorPtr) {
+ this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr);
+ return { error: this.memory.heapValueHandle(errorPtr) };
+ }
+ return { value: this.memory.heapValueHandle(resultPtr) };
+ }
+ /**
+ * Throw an error in the VM, interrupted whatever current execution is in progress when execution resumes.
+ * @experimental
+ */
+ throw(error) {
+ return this.errorToHandle(error).consume((handle) => this.ffi.QTS_Throw(this.ctx.value, handle.value));
+ }
+ /**
+ * @private
+ */
+ borrowPropertyKey(key) {
+ if (typeof key === "number") {
+ return this.newNumber(key);
+ }
+ if (typeof key === "string") {
+ return this.newString(key);
+ }
+ // key is already a JSValue, but we're borrowing it. Return a static handle
+ // for internal use only.
+ return new lifetime_1.StaticLifetime(key.value, this.runtime);
+ }
+ /**
+ * @private
+ */
+ getMemory(rt) {
+ if (rt === this.rt.value) {
+ return this.memory;
+ }
+ else {
+ throw new Error("Private API. Cannot get memory from a different runtime");
+ }
+ }
+ // Utilities ----------------------------------------------------------------
+ /**
+ * Dump a JSValue to Javascript in a best-effort fashion.
+ * Returns `handle.toString()` if it cannot be serialized to JSON.
+ */
+ dump(handle) {
+ this.runtime.assertOwned(handle);
+ const type = this.typeof(handle);
+ if (type === "string") {
+ return this.getString(handle);
+ }
+ else if (type === "number") {
+ return this.getNumber(handle);
+ }
+ else if (type === "bigint") {
+ return this.getBigInt(handle);
+ }
+ else if (type === "undefined") {
+ return undefined;
+ }
+ else if (type === "symbol") {
+ return this.getSymbol(handle);
+ }
+ const str = this.memory.consumeJSCharPointer(this.ffi.QTS_Dump(this.ctx.value, handle.value));
+ try {
+ return JSON.parse(str);
+ }
+ catch (err) {
+ return str;
+ }
+ }
+ /**
+ * Unwrap a SuccessOrFail result such as a [[VmCallResult]] or a
+ * [[ExecutePendingJobsResult]], where the fail branch contains a handle to a QuickJS error value.
+ * If the result is a success, returns the value.
+ * If the result is an error, converts the error to a native object and throws the error.
+ */
+ unwrapResult(result) {
+ if (result.error) {
+ const context = "context" in result.error ? result.error.context : this;
+ const cause = result.error.consume((error) => this.dump(error));
+ if (cause && typeof cause === "object" && typeof cause.message === "string") {
+ const { message, name, stack } = cause;
+ const exception = new errors_1.QuickJSUnwrapError("");
+ const hostStack = exception.stack;
+ if (typeof name === "string") {
+ exception.name = cause.name;
+ }
+ if (typeof stack === "string") {
+ exception.stack = `${name}: ${message}\n${cause.stack}Host: ${hostStack}`;
+ }
+ Object.assign(exception, { cause, context, message });
+ throw exception;
+ }
+ throw new errors_1.QuickJSUnwrapError(cause, context);
+ }
+ return result.value;
+ }
+ /** @private */
+ getFunction(fn_id) {
+ const map_id = fn_id >> 8;
+ const fnMap = this.fnMaps.get(map_id);
+ if (!fnMap) {
+ return undefined;
+ }
+ return fnMap.get(fn_id);
+ }
+ /** @private */
+ setFunction(fn_id, handle) {
+ const map_id = fn_id >> 8;
+ let fnMap = this.fnMaps.get(map_id);
+ if (!fnMap) {
+ fnMap = new Map();
+ this.fnMaps.set(map_id, fnMap);
+ }
+ return fnMap.set(fn_id, handle);
+ }
+ errorToHandle(error) {
+ if (error instanceof lifetime_1.Lifetime) {
+ return error;
+ }
+ return this.newError(error);
+ }
+}
+exports.QuickJSContext = QuickJSContext;
+//# sourceMappingURL=context.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js.map b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js.map
new file mode 100644
index 0000000..1398a53
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/context.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"context.js","sourceRoot":"","sources":["../ts/context.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,yDAA2D;AAE3D,qCAA6C;AAa7C,yCAAsF;AACtF,qCAAuC;AAGvC,mCAOgB;AAehB;;GAEG;AACH,MAAM,aAAc,SAAQ,qBAAY;IAQtC,eAAe;IACf,YAAY,IAOX;QACC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAXX,UAAK,GAAG,IAAI,gBAAK,EAAE,CAAA;QAmC5B,gBAAW,GAAG,CAAC,GAAyC,EAAE,EAAE;YAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC1D,CAAC,CAAA;QAED,gBAAW,GAAG,CAAC,GAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC,CAAA;QA7BC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAuB,QAAW;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAUD,oBAAoB,CAAC,GAA0B;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,eAAe,CAAC,GAAmB;QACjC,OAAO,IAAI,mBAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1E,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,yCAAyC;AACzC,MAAa,cAAc;IA8BzB;;OAEG;IACH,YAAY,IAQX;QAxBD,eAAe;QACL,eAAU,GAA8B,SAAS,CAAA;QAC3D,eAAe;QACL,UAAK,GAA8B,SAAS,CAAA;QACtD,eAAe;QACL,WAAM,GAA8B,SAAS,CAAA;QACvD,eAAe;QACL,UAAK,GAA8B,SAAS,CAAA;QACtD,eAAe;QACL,YAAO,GAA8B,SAAS,CAAA;QACxD,eAAe;QACL,YAAO,GAA8B,SAAS,CAAA;QAgrBxD,eAAe;QACL,aAAQ,GAAG,CAAC,KAAK,CAAA,CAAC,gDAAgD;QAC5E,eAAe;QACL,WAAM,GAAG,IAAI,GAAG,EAAgE,CAAA;QAuB1F;;WAEG;QACK,qBAAgB,GAAqB;YAC3C,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBACjD,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;iBACrF;gBAED,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,IAAI,CAAC,EAAE,EAAE;oBACP,2FAA2F;oBAC3F,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAA;iBACnE;gBAED,OAAO,gBAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK;oBAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,IAAI,uBAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAC3F,CAAA;oBACD,MAAM,UAAU,GAAG,IAAI,KAAK,CAAgB,IAAI,CAAC,CAAA;oBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;wBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;wBAC5D,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAC1B,IAAI,uBAAY,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CACtF,CAAA;qBACF;oBAED,IAAI;wBACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;wBAC/D,IAAI,MAAM,EAAE;4BACV,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;gCACrC,IAAA,gBAAQ,EAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;gCACrC,MAAM,MAAM,CAAC,KAAK,CAAA;6BACnB;4BACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,mBAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;4BAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;yBAClE;wBACD,OAAO,CAAmB,CAAA;qBAC3B;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,IAAI,CAAC,aAAa,CAAC,KAAc,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CACtD,CAAA;qBACF;gBACH,CAAC,CAAmB,CAAA;YACtB,CAAC;SACF,CAAA;QAzuBC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,GAAG,IAAI;YACP,KAAK,EAAE,IAAI,CAAC,OAAO;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACzE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC;IAED,6EAA6E;IAE7E,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACH,IAAI,SAAS;QACX,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAA;SACvB;QAED,uDAAuD;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACvC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,yBAAc,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QAED,kDAAkD;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAc,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QAED,kDAAkD;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAc,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QAED,mDAAmD;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAc,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO,CAAA;SACpB;QAED,2EAA2E;QAC3E,uBAAuB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAExD,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpD,sEAAsE;QACtE,iEAAiE;QACjE,sDAAsD;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAClF,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,kBAAkB,CAAC,GAAG,CAAC;aACvB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;QACpF,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,WAA4B;QAC1C,MAAM,GAAG,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,kBAAkB,CAAC,GAAG,CAAC;aACvB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAoB;QAC/B,MAAM,WAAW,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,kBAAkB,CAAC,WAAW,CAAC;aAC/B,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAc,CAAC,YAAY,CAAC,KAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;SAC3F;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAA;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAC3E,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAyB;QACjC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;SACpC;QACD,MAAM,GAAG,GAAG,SAAS;YACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;IA0BD,UAAU,CACR,KAAsF;QAEtF,MAAM,eAAe,GAAG,gBAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAwB,CAAC,CAAC,CAC7D,CAAA;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAClD,IAAI,CAAC,GAAG,CAAC,KAAK,EACd,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAC9B,CAAA;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YAC7D,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CACxF,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAiB,CAAC,CAC/D,CAAA;YACD,OAAO,IAAI,yCAAsB,CAAC;gBAChC,OAAO,EAAE,IAAI;gBACb,aAAa;gBACb,aAAa;gBACb,YAAY;aACb,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YACxC,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;SAC3B;QAED,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7D,KAAK,YAAY,mBAAQ;gBACvB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CACzD,CAAA;SACF;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,IAAY,EAAE,EAA2C;QACnE,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC1F,CAAC;IAKD,QAAQ,CAAC,KAAkD;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QAEtF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;aAC1F;YAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAC7C,CAAA;aACF;SACF;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;SACxF;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE;YAC9B,iFAAiF;YACjF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAC7C,CAAA;SACF;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,6EAA6E;IAE7E;;;;;OAKG;IACH,MAAM,CAAC,MAAqB;QAC1B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9F,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9D,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC1C,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CACrE,CAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1E,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,iBAAgC;QAC7C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;QAC3C,MAAM,eAAe,GAAG,gBAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;YACpE,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;YACzE,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;QACF,IAAI,eAAe,CAAC,KAAK,EAAE;YACzB,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;SACxC;QAED,OAAO,IAAI,OAAO,CAA8B,CAAC,OAAO,EAAE,EAAE;YAC1D,gBAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAChC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;oBACpC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;gBAC1C,CAAC,CAAC,CACH,CAAA;gBAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBACnC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;gBAC1C,CAAC,CAAC,CACH,CAAA;gBAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;gBACzD,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC3E,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,CACjF,CAAC,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAE7E;;;;;;OAMG;IACH,OAAO,CAAC,MAAqB,EAAE,GAAuB;QACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC7D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CACrE,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAE/C,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAqB,EAAE,GAAuB,EAAE,KAAoB;QAC1E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,wFAAwF;QACxF,oBAAoB;QACpB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACjD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAClF,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,UAAU,CACR,MAAqB,EACrB,GAAuB,EACvB,UAA+C;QAE/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,gBAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;YAE5D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAA;YAChD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;YACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG;gBACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YAClB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG;gBACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YAElB,IAAI,CAAC,GAAG,CAAC,cAAc,CACrB,IAAI,CAAC,GAAG,CAAC,KAAK,EACd,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,KAAK,EAChB,KAAK,CAAC,KAAK,EACX,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,CACT,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;OAYG;IACH,YAAY,CACV,IAAmB,EACnB,OAAsB,EACtB,GAAG,IAAqB;QAExB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;aAC1B,cAAc,CAAC,IAAI,CAAC;aACpB,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EACd,IAAI,CAAC,KAAK,EACV,OAAO,CAAC,KAAK,EACb,IAAI,CAAC,MAAM,EACX,YAAY,CAAC,KAAK,CACnB,CACF,CAAA;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACzE,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YACxD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;SACxD;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CACN,IAAY,EACZ,WAAmB,SAAS;IAC5B;;;;;OAKG;IACH,OAAqC;QAErC,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAqB,CAAA;QACxE,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAc,CAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;aAC1B,kBAAkB,CAAC,IAAI,CAAC;aACxB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CACnF,CAAA;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACzE,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YACxD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;SACxD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAA4B;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CACjD,CAAA;IACH,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,GAAuB;QACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;SAC3B;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;SAC3B;QAED,2EAA2E;QAC3E,yBAAyB;QACzB,OAAO,IAAI,yBAAc,CAAC,GAAG,CAAC,KAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3E,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,EAAoB;QAC5B,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;YACxB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;IACH,CAAC;IAED,6EAA6E;IAE7E;;;OAGG;IACH,IAAI,CAAC,MAAqB;QACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAC9B;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAC9B;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAC9B;aAAM,IAAI,IAAI,KAAK,WAAW,EAAE;YAC/B,OAAO,SAAS,CAAA;SACjB;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAC9B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7F,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACvB;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,GAAG,CAAA;SACX;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAI,MAAuC;QACrD,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,MAAM,OAAO,GACX,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,MAAM,CAAC,KAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;YAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAE/D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;gBAC3E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;gBACtC,MAAM,SAAS,GAAG,IAAI,2BAAkB,CAAC,EAAE,CAAC,CAAA;gBAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAA;gBAEjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC5B,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;iBAC5B;gBAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,SAAS,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC,KAAK,SAAS,SAAS,EAAE,CAAA;iBAC1E;gBAED,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;gBACrD,MAAM,SAAS,CAAA;aAChB;YAED,MAAM,IAAI,2BAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;SAC7C;QAED,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAOD,eAAe;IACL,WAAW,CAAC,KAAa;QACjC,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,eAAe;IACL,WAAW,CAAC,KAAa,EAAE,MAA+C;QAClF,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,CAAA;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,IAAI,GAAG,EAAmD,CAAA;YAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;SAC/B;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACjC,CAAC;IAiDO,aAAa,CAAC,KAA4B;QAChD,IAAI,KAAK,YAAY,mBAAQ,EAAE;YAC7B,OAAO,KAAK,CAAA;SACb;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF;AA5xBD,wCA4xBC","sourcesContent":["import { debugLog } from \"./debug\"\nimport { QuickJSDeferredPromise } from \"./deferred-promise\"\nimport type { EitherModule } from \"./emscripten-types\"\nimport { QuickJSUnwrapError } from \"./errors\"\nimport {\n EvalDetectModule,\n EvalFlags,\n JSBorrowedCharPointer,\n JSContextPointer,\n JSModuleDefPointer,\n JSRuntimePointer,\n JSValueConstPointer,\n JSValuePointer,\n JSValuePointerPointer,\n JSVoidPointer,\n} from \"./types-ffi\"\nimport { Disposable, Lifetime, Scope, StaticLifetime, WeakLifetime } from \"./lifetime\"\nimport { ModuleMemory } from \"./memory\"\nimport { ContextCallbacks, QuickJSModuleCallbacks } from \"./module\"\nimport { QuickJSRuntime } from \"./runtime\"\nimport {\n ContextEvalOptions,\n EitherFFI,\n evalOptionsToFlags,\n JSValue,\n PromiseExecutor,\n QuickJSHandle,\n} from \"./types\"\nimport {\n LowLevelJavascriptVm,\n SuccessOrFail,\n VmCallResult,\n VmFunctionImplementation,\n VmPropertyDescriptor,\n} from \"./vm-interface\"\n\n/**\n * Property key for getting or setting a property on a handle with\n * [[QuickJSContext.getProp]], [[QuickJSContext.setProp]], or [[QuickJSContext.defineProp]].\n */\nexport type QuickJSPropertyKey = number | string | QuickJSHandle\n\n/**\n * @private\n */\nclass ContextMemory extends ModuleMemory implements Disposable {\n readonly owner: QuickJSRuntime\n readonly ctx: Lifetime\n readonly rt: Lifetime\n readonly module: EitherModule\n readonly ffi: EitherFFI\n readonly scope = new Scope()\n\n /** @private */\n constructor(args: {\n owner: QuickJSRuntime\n module: EitherModule\n ffi: EitherFFI\n ctx: Lifetime\n rt: Lifetime\n ownedLifetimes?: Disposable[]\n }) {\n super(args.module)\n args.ownedLifetimes?.forEach((lifetime) => this.scope.manage(lifetime))\n this.owner = args.owner\n this.module = args.module\n this.ffi = args.ffi\n this.rt = args.rt\n this.ctx = this.scope.manage(args.ctx)\n }\n\n get alive() {\n return this.scope.alive\n }\n\n dispose() {\n return this.scope.dispose()\n }\n\n /**\n * Track `lifetime` so that it is disposed when this scope is disposed.\n */\n manage(lifetime: T): T {\n return this.scope.manage(lifetime)\n }\n\n copyJSValue = (ptr: JSValuePointer | JSValueConstPointer) => {\n return this.ffi.QTS_DupValuePointer(this.ctx.value, ptr)\n }\n\n freeJSValue = (ptr: JSValuePointer) => {\n this.ffi.QTS_FreeValuePointer(this.ctx.value, ptr)\n }\n\n consumeJSCharPointer(ptr: JSBorrowedCharPointer): string {\n const str = this.module.UTF8ToString(ptr)\n this.ffi.QTS_FreeCString(this.ctx.value, ptr)\n return str\n }\n\n heapValueHandle(ptr: JSValuePointer): JSValue {\n return new Lifetime(ptr, this.copyJSValue, this.freeJSValue, this.owner)\n }\n}\n\n/**\n * QuickJSContext wraps a QuickJS Javascript context (JSContext*) within a\n * runtime. The contexts within the same runtime may exchange objects freely.\n * You can think of separate runtimes like different domains in a browser, and\n * the contexts within a runtime like the different windows open to the same\n * domain. The {@link runtime} references the context's runtime.\n *\n * This class's methods return {@link QuickJSHandle}, which wrap C pointers (JSValue*).\n * It's the caller's responsibility to call `.dispose()` on any\n * handles you create to free memory once you're done with the handle.\n *\n * Use {@link QuickJSRuntime.newContext} or {@link QuickJSWASMModule.newContext}\n * to create a new QuickJSContext.\n *\n * Create QuickJS values inside the interpreter with methods like\n * [[newNumber]], [[newString]], [[newArray]], [[newObject]],\n * [[newFunction]], and [[newPromise]].\n *\n * Call [[setProp]] or [[defineProp]] to customize objects. Use those methods\n * with [[global]] to expose the values you create to the interior of the\n * interpreter, so they can be used in [[evalCode]].\n *\n * Use [[evalCode]] or [[callFunction]] to execute Javascript inside the VM. If\n * you're using asynchronous code inside the QuickJSContext, you may need to also\n * call [[executePendingJobs]]. Executing code inside the runtime returns a\n * result object representing successful execution or an error. You must dispose\n * of any such results to avoid leaking memory inside the VM.\n *\n * Implement memory and CPU constraints at the runtime level, using [[runtime]].\n * See {@link QuickJSRuntime} for more information.\n *\n */\n// TODO: Manage own callback registration\nexport class QuickJSContext implements LowLevelJavascriptVm, Disposable {\n /**\n * The runtime that created this context.\n */\n public readonly runtime: QuickJSRuntime\n\n /** @private */\n protected readonly ctx: Lifetime\n /** @private */\n protected readonly rt: Lifetime\n /** @private */\n protected readonly module: EitherModule\n /** @private */\n protected readonly ffi: EitherFFI\n /** @private */\n protected memory: ContextMemory\n\n /** @private */\n protected _undefined: QuickJSHandle | undefined = undefined\n /** @private */\n protected _null: QuickJSHandle | undefined = undefined\n /** @private */\n protected _false: QuickJSHandle | undefined = undefined\n /** @private */\n protected _true: QuickJSHandle | undefined = undefined\n /** @private */\n protected _global: QuickJSHandle | undefined = undefined\n /** @private */\n protected _BigInt: QuickJSHandle | undefined = undefined\n\n /**\n * Use {@link QuickJS.createVm} to create a QuickJSContext instance.\n */\n constructor(args: {\n module: EitherModule\n ffi: EitherFFI\n ctx: Lifetime\n rt: Lifetime\n runtime: QuickJSRuntime\n ownedLifetimes?: Disposable[]\n callbacks: QuickJSModuleCallbacks\n }) {\n this.runtime = args.runtime\n this.module = args.module\n this.ffi = args.ffi\n this.rt = args.rt\n this.ctx = args.ctx\n this.memory = new ContextMemory({\n ...args,\n owner: this.runtime,\n })\n args.callbacks.setContextCallbacks(this.ctx.value, this.cToHostCallbacks)\n this.dump = this.dump.bind(this)\n this.getString = this.getString.bind(this)\n this.getNumber = this.getNumber.bind(this)\n this.resolvePromise = this.resolvePromise.bind(this)\n }\n\n // @implement Disposable ----------------------------------------------------\n\n get alive() {\n return this.memory.alive\n }\n\n /**\n * Dispose of this VM's underlying resources.\n *\n * @throws Calling this method without disposing of all created handles\n * will result in an error.\n */\n dispose() {\n this.memory.dispose()\n }\n\n // Globals ------------------------------------------------------------------\n\n /**\n * [`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined).\n */\n get undefined(): QuickJSHandle {\n if (this._undefined) {\n return this._undefined\n }\n\n // Undefined is a constant, immutable value in QuickJS.\n const ptr = this.ffi.QTS_GetUndefined()\n return (this._undefined = new StaticLifetime(ptr))\n }\n\n /**\n * [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null).\n */\n get null(): QuickJSHandle {\n if (this._null) {\n return this._null\n }\n\n // Null is a constant, immutable value in QuickJS.\n const ptr = this.ffi.QTS_GetNull()\n return (this._null = new StaticLifetime(ptr))\n }\n\n /**\n * [`true`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/true).\n */\n get true(): QuickJSHandle {\n if (this._true) {\n return this._true\n }\n\n // True is a constant, immutable value in QuickJS.\n const ptr = this.ffi.QTS_GetTrue()\n return (this._true = new StaticLifetime(ptr))\n }\n\n /**\n * [`false`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/false).\n */\n get false(): QuickJSHandle {\n if (this._false) {\n return this._false\n }\n\n // False is a constant, immutable value in QuickJS.\n const ptr = this.ffi.QTS_GetFalse()\n return (this._false = new StaticLifetime(ptr))\n }\n\n /**\n * [`global`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects).\n * A handle to the global object inside the interpreter.\n * You can set properties to create global variables.\n */\n get global(): QuickJSHandle {\n if (this._global) {\n return this._global\n }\n\n // The global is a JSValue, but since it's lifetime is as long as the VM's,\n // we should manage it.\n const ptr = this.ffi.QTS_GetGlobalObject(this.ctx.value)\n\n // Automatically clean up this reference when we dispose\n this.memory.manage(this.memory.heapValueHandle(ptr))\n\n // This isn't technically a static lifetime, but since it has the same\n // lifetime as the VM, it's okay to fake one since when the VM is\n // disposed, no other functions will accept the value.\n this._global = new StaticLifetime(ptr, this.runtime)\n return this._global\n }\n\n // New values ---------------------------------------------------------------\n\n /**\n * Converts a Javascript number into a QuickJS value.\n */\n newNumber(num: number): QuickJSHandle {\n return this.memory.heapValueHandle(this.ffi.QTS_NewFloat64(this.ctx.value, num))\n }\n\n /**\n * Create a QuickJS [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) value.\n */\n newString(str: string): QuickJSHandle {\n const ptr = this.memory\n .newHeapCharPointer(str)\n .consume((charHandle) => this.ffi.QTS_NewString(this.ctx.value, charHandle.value))\n return this.memory.heapValueHandle(ptr)\n }\n\n /**\n * Create a QuickJS [symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) value.\n * No two symbols created with this function will be the same value.\n */\n newUniqueSymbol(description: string | symbol): QuickJSHandle {\n const key = (typeof description === \"symbol\" ? description.description : description) ?? \"\"\n const ptr = this.memory\n .newHeapCharPointer(key)\n .consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 0))\n return this.memory.heapValueHandle(ptr)\n }\n\n /**\n * Get a symbol from the [global registry](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry) for the given key.\n * All symbols created with the same key will be the same value.\n */\n newSymbolFor(key: string | symbol): QuickJSHandle {\n const description = (typeof key === \"symbol\" ? key.description : key) ?? \"\"\n const ptr = this.memory\n .newHeapCharPointer(description)\n .consume((charHandle) => this.ffi.QTS_NewSymbol(this.ctx.value, charHandle.value, 1))\n return this.memory.heapValueHandle(ptr)\n }\n\n /**\n * Create a QuickJS [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) value.\n */\n newBigInt(num: bigint): QuickJSHandle {\n if (!this._BigInt) {\n const bigIntHandle = this.getProp(this.global, \"BigInt\")\n this.memory.manage(bigIntHandle)\n this._BigInt = new StaticLifetime(bigIntHandle.value as JSValueConstPointer, this.runtime)\n }\n\n const bigIntHandle = this._BigInt\n const asString = String(num)\n return this.newString(asString).consume((handle) =>\n this.unwrapResult(this.callFunction(bigIntHandle, this.undefined, handle))\n )\n }\n\n /**\n * `{}`.\n * Create a new QuickJS [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer).\n *\n * @param prototype - Like [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create).\n */\n newObject(prototype?: QuickJSHandle): QuickJSHandle {\n if (prototype) {\n this.runtime.assertOwned(prototype)\n }\n const ptr = prototype\n ? this.ffi.QTS_NewObjectProto(this.ctx.value, prototype.value)\n : this.ffi.QTS_NewObject(this.ctx.value)\n return this.memory.heapValueHandle(ptr)\n }\n\n /**\n * `[]`.\n * Create a new QuickJS [array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).\n */\n newArray(): QuickJSHandle {\n const ptr = this.ffi.QTS_NewArray(this.ctx.value)\n return this.memory.heapValueHandle(ptr)\n }\n\n /**\n * Create a new [[QuickJSDeferredPromise]]. Use `deferred.resolve(handle)` and\n * `deferred.reject(handle)` to fulfill the promise handle available at `deferred.handle`.\n * Note that you are responsible for calling `deferred.dispose()` to free the underlying\n * resources; see the documentation on [[QuickJSDeferredPromise]] for details.\n */\n newPromise(): QuickJSDeferredPromise\n /**\n * Create a new [[QuickJSDeferredPromise]] that resolves when the\n * given native Promise resolves. Rejections will be coerced\n * to a QuickJS error.\n *\n * You can still resolve/reject the created promise \"early\" using its methods.\n */\n newPromise(promise: Promise): QuickJSDeferredPromise\n /**\n * Construct a new native Promise, and then convert it into a\n * [[QuickJSDeferredPromise]].\n *\n * You can still resolve/reject the created promise \"early\" using its methods.\n */\n newPromise(\n newPromiseFn: PromiseExecutor\n ): QuickJSDeferredPromise\n newPromise(\n value?: PromiseExecutor | Promise\n ): QuickJSDeferredPromise {\n const deferredPromise = Scope.withScope((scope) => {\n const mutablePointerArray = scope.manage(\n this.memory.newMutablePointerArray(2)\n )\n const promisePtr = this.ffi.QTS_NewPromiseCapability(\n this.ctx.value,\n mutablePointerArray.value.ptr\n )\n const promiseHandle = this.memory.heapValueHandle(promisePtr)\n const [resolveHandle, rejectHandle] = Array.from(mutablePointerArray.value.typedArray).map(\n (jsvaluePtr) => this.memory.heapValueHandle(jsvaluePtr as any)\n )\n return new QuickJSDeferredPromise({\n context: this,\n promiseHandle,\n resolveHandle,\n rejectHandle,\n })\n })\n\n if (value && typeof value === \"function\") {\n value = new Promise(value)\n }\n\n if (value) {\n Promise.resolve(value).then(deferredPromise.resolve, (error) =>\n error instanceof Lifetime\n ? deferredPromise.reject(error)\n : this.newError(error).consume(deferredPromise.reject)\n )\n }\n\n return deferredPromise\n }\n\n /**\n * Convert a Javascript function into a QuickJS function value.\n * See [[VmFunctionImplementation]] for more details.\n *\n * A [[VmFunctionImplementation]] should not free its arguments or its return\n * value. A VmFunctionImplementation should also not retain any references to\n * its return value.\n *\n * To implement an async function, create a promise with [[newPromise]], then\n * return the deferred promise handle from `deferred.handle` from your\n * function implementation:\n *\n * ```\n * const deferred = vm.newPromise()\n * someNativeAsyncFunction().then(deferred.resolve)\n * return deferred.handle\n * ```\n */\n newFunction(name: string, fn: VmFunctionImplementation): QuickJSHandle {\n const fnId = ++this.fnNextId\n this.setFunction(fnId, fn)\n return this.memory.heapValueHandle(this.ffi.QTS_NewFunction(this.ctx.value, fnId, name))\n }\n\n newError(error: { name: string; message: string }): QuickJSHandle\n newError(message: string): QuickJSHandle\n newError(): QuickJSHandle\n newError(error?: string | { name: string; message: string }): QuickJSHandle {\n const errorHandle = this.memory.heapValueHandle(this.ffi.QTS_NewError(this.ctx.value))\n\n if (error && typeof error === \"object\") {\n if (error.name !== undefined) {\n this.newString(error.name).consume((handle) => this.setProp(errorHandle, \"name\", handle))\n }\n\n if (error.message !== undefined) {\n this.newString(error.message).consume((handle) =>\n this.setProp(errorHandle, \"message\", handle)\n )\n }\n } else if (typeof error === \"string\") {\n this.newString(error).consume((handle) => this.setProp(errorHandle, \"message\", handle))\n } else if (error !== undefined) {\n // This isn't supported in the type signature but maybe it will make life easier.\n this.newString(String(error)).consume((handle) =>\n this.setProp(errorHandle, \"message\", handle)\n )\n }\n\n return errorHandle\n }\n\n // Read values --------------------------------------------------------------\n\n /**\n * `typeof` operator. **Not** [standards compliant](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof).\n *\n * @remarks\n * Does not support BigInt values correctly.\n */\n typeof(handle: QuickJSHandle) {\n this.runtime.assertOwned(handle)\n return this.memory.consumeHeapCharPointer(this.ffi.QTS_Typeof(this.ctx.value, handle.value))\n }\n\n /**\n * Converts `handle` into a Javascript number.\n * @returns `NaN` on error, otherwise a `number`.\n */\n getNumber(handle: QuickJSHandle): number {\n this.runtime.assertOwned(handle)\n return this.ffi.QTS_GetFloat64(this.ctx.value, handle.value)\n }\n\n /**\n * Converts `handle` to a Javascript string.\n */\n getString(handle: QuickJSHandle): string {\n this.runtime.assertOwned(handle)\n return this.memory.consumeJSCharPointer(this.ffi.QTS_GetString(this.ctx.value, handle.value))\n }\n\n /**\n * Converts `handle` into a Javascript symbol. If the symbol is in the global\n * registry in the guest, it will be created with Symbol.for on the host.\n */\n getSymbol(handle: QuickJSHandle): symbol {\n this.runtime.assertOwned(handle)\n const key = this.memory.consumeJSCharPointer(\n this.ffi.QTS_GetSymbolDescriptionOrKey(this.ctx.value, handle.value)\n )\n const isGlobal = this.ffi.QTS_IsGlobalSymbol(this.ctx.value, handle.value)\n return isGlobal ? Symbol.for(key) : Symbol(key)\n }\n\n /**\n * Converts `handle` to a Javascript bigint.\n */\n getBigInt(handle: QuickJSHandle): bigint {\n this.runtime.assertOwned(handle)\n const asString = this.getString(handle)\n return BigInt(asString)\n }\n\n /**\n * `Promise.resolve(value)`.\n * Convert a handle containing a Promise-like value inside the VM into an\n * actual promise on the host.\n *\n * @remarks\n * You may need to call [[executePendingJobs]] to ensure that the promise is resolved.\n *\n * @param promiseLikeHandle - A handle to a Promise-like value with a `.then(onSuccess, onError)` method.\n */\n resolvePromise(promiseLikeHandle: QuickJSHandle): Promise> {\n this.runtime.assertOwned(promiseLikeHandle)\n const vmResolveResult = Scope.withScope((scope) => {\n const vmPromise = scope.manage(this.getProp(this.global, \"Promise\"))\n const vmPromiseResolve = scope.manage(this.getProp(vmPromise, \"resolve\"))\n return this.callFunction(vmPromiseResolve, vmPromise, promiseLikeHandle)\n })\n if (vmResolveResult.error) {\n return Promise.resolve(vmResolveResult)\n }\n\n return new Promise>((resolve) => {\n Scope.withScope((scope) => {\n const resolveHandle = scope.manage(\n this.newFunction(\"resolve\", (value) => {\n resolve({ value: value && value.dup() })\n })\n )\n\n const rejectHandle = scope.manage(\n this.newFunction(\"reject\", (error) => {\n resolve({ error: error && error.dup() })\n })\n )\n\n const promiseHandle = scope.manage(vmResolveResult.value)\n const promiseThenHandle = scope.manage(this.getProp(promiseHandle, \"then\"))\n this.unwrapResult(\n this.callFunction(promiseThenHandle, promiseHandle, resolveHandle, rejectHandle)\n ).dispose()\n })\n })\n }\n\n // Properties ---------------------------------------------------------------\n\n /**\n * `handle[key]`.\n * Get a property from a JSValue.\n *\n * @param key - The property may be specified as a JSValue handle, or as a\n * Javascript string (which will be converted automatically).\n */\n getProp(handle: QuickJSHandle, key: QuickJSPropertyKey): QuickJSHandle {\n this.runtime.assertOwned(handle)\n const ptr = this.borrowPropertyKey(key).consume((quickJSKey) =>\n this.ffi.QTS_GetProp(this.ctx.value, handle.value, quickJSKey.value)\n )\n const result = this.memory.heapValueHandle(ptr)\n\n return result\n }\n\n /**\n * `handle[key] = value`.\n * Set a property on a JSValue.\n *\n * @remarks\n * Note that the QuickJS authors recommend using [[defineProp]] to define new\n * properties.\n *\n * @param key - The property may be specified as a JSValue handle, or as a\n * Javascript string or number (which will be converted automatically to a JSValue).\n */\n setProp(handle: QuickJSHandle, key: QuickJSPropertyKey, value: QuickJSHandle) {\n this.runtime.assertOwned(handle)\n // free newly allocated value if key was a string or number. No-op if string was already\n // a QuickJS handle.\n this.borrowPropertyKey(key).consume((quickJSKey) =>\n this.ffi.QTS_SetProp(this.ctx.value, handle.value, quickJSKey.value, value.value)\n )\n }\n\n /**\n * [`Object.defineProperty(handle, key, descriptor)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty).\n *\n * @param key - The property may be specified as a JSValue handle, or as a\n * Javascript string or number (which will be converted automatically to a JSValue).\n */\n defineProp(\n handle: QuickJSHandle,\n key: QuickJSPropertyKey,\n descriptor: VmPropertyDescriptor\n ): void {\n this.runtime.assertOwned(handle)\n Scope.withScope((scope) => {\n const quickJSKey = scope.manage(this.borrowPropertyKey(key))\n\n const value = descriptor.value || this.undefined\n const configurable = Boolean(descriptor.configurable)\n const enumerable = Boolean(descriptor.enumerable)\n const hasValue = Boolean(descriptor.value)\n const get = descriptor.get\n ? scope.manage(this.newFunction(descriptor.get.name, descriptor.get))\n : this.undefined\n const set = descriptor.set\n ? scope.manage(this.newFunction(descriptor.set.name, descriptor.set))\n : this.undefined\n\n this.ffi.QTS_DefineProp(\n this.ctx.value,\n handle.value,\n quickJSKey.value,\n value.value,\n get.value,\n set.value,\n configurable,\n enumerable,\n hasValue\n )\n })\n }\n\n // Evaluation ---------------------------------------------------------------\n\n /**\n * [`func.call(thisVal, ...args)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call).\n * Call a JSValue as a function.\n *\n * See [[unwrapResult]], which will throw if the function returned an error, or\n * return the result handle directly. If evaluation returned a handle containing\n * a promise, use [[resolvePromise]] to convert it to a native promise and\n * [[executePendingJobs]] to finish evaluating the promise.\n *\n * @returns A result. If the function threw synchronously, `result.error` be a\n * handle to the exception. Otherwise `result.value` will be a handle to the\n * value.\n */\n callFunction(\n func: QuickJSHandle,\n thisVal: QuickJSHandle,\n ...args: QuickJSHandle[]\n ): VmCallResult {\n this.runtime.assertOwned(func)\n const resultPtr = this.memory\n .toPointerArray(args)\n .consume((argsArrayPtr) =>\n this.ffi.QTS_Call(\n this.ctx.value,\n func.value,\n thisVal.value,\n args.length,\n argsArrayPtr.value\n )\n )\n\n const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr)\n if (errorPtr) {\n this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr)\n return { error: this.memory.heapValueHandle(errorPtr) }\n }\n\n return { value: this.memory.heapValueHandle(resultPtr) }\n }\n\n /**\n * Like [`eval(code)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Description).\n * Evaluates the Javascript source `code` in the global scope of this VM.\n * When working with async code, you many need to call [[executePendingJobs]]\n * to execute callbacks pending after synchronous evaluation returns.\n *\n * See [[unwrapResult]], which will throw if the function returned an error, or\n * return the result handle directly. If evaluation returned a handle containing\n * a promise, use [[resolvePromise]] to convert it to a native promise and\n * [[executePendingJobs]] to finish evaluating the promise.\n *\n * *Note*: to protect against infinite loops, provide an interrupt handler to\n * [[setInterruptHandler]]. You can use [[shouldInterruptAfterDeadline]] to\n * create a time-based deadline.\n *\n * @returns The last statement's value. If the code threw synchronously,\n * `result.error` will be a handle to the exception. If execution was\n * interrupted, the error will have name `InternalError` and message\n * `interrupted`.\n */\n evalCode(\n code: string,\n filename: string = \"eval.js\",\n /**\n * If no options are passed, a heuristic will be used to detect if `code` is\n * an ES module.\n *\n * See [[EvalFlags]] for number semantics.\n */\n options?: number | ContextEvalOptions\n ): VmCallResult {\n const detectModule = (options === undefined ? 1 : 0) as EvalDetectModule\n const flags = evalOptionsToFlags(options) as EvalFlags\n const resultPtr = this.memory\n .newHeapCharPointer(code)\n .consume((charHandle) =>\n this.ffi.QTS_Eval(this.ctx.value, charHandle.value, filename, detectModule, flags)\n )\n const errorPtr = this.ffi.QTS_ResolveException(this.ctx.value, resultPtr)\n if (errorPtr) {\n this.ffi.QTS_FreeValuePointer(this.ctx.value, resultPtr)\n return { error: this.memory.heapValueHandle(errorPtr) }\n }\n return { value: this.memory.heapValueHandle(resultPtr) }\n }\n\n /**\n * Throw an error in the VM, interrupted whatever current execution is in progress when execution resumes.\n * @experimental\n */\n throw(error: Error | QuickJSHandle) {\n return this.errorToHandle(error).consume((handle) =>\n this.ffi.QTS_Throw(this.ctx.value, handle.value)\n )\n }\n\n /**\n * @private\n */\n protected borrowPropertyKey(key: QuickJSPropertyKey): QuickJSHandle {\n if (typeof key === \"number\") {\n return this.newNumber(key)\n }\n\n if (typeof key === \"string\") {\n return this.newString(key)\n }\n\n // key is already a JSValue, but we're borrowing it. Return a static handle\n // for internal use only.\n return new StaticLifetime(key.value as JSValueConstPointer, this.runtime)\n }\n\n /**\n * @private\n */\n getMemory(rt: JSRuntimePointer): ContextMemory {\n if (rt === this.rt.value) {\n return this.memory\n } else {\n throw new Error(\"Private API. Cannot get memory from a different runtime\")\n }\n }\n\n // Utilities ----------------------------------------------------------------\n\n /**\n * Dump a JSValue to Javascript in a best-effort fashion.\n * Returns `handle.toString()` if it cannot be serialized to JSON.\n */\n dump(handle: QuickJSHandle) {\n this.runtime.assertOwned(handle)\n const type = this.typeof(handle)\n if (type === \"string\") {\n return this.getString(handle)\n } else if (type === \"number\") {\n return this.getNumber(handle)\n } else if (type === \"bigint\") {\n return this.getBigInt(handle)\n } else if (type === \"undefined\") {\n return undefined\n } else if (type === \"symbol\") {\n return this.getSymbol(handle)\n }\n\n const str = this.memory.consumeJSCharPointer(this.ffi.QTS_Dump(this.ctx.value, handle.value))\n try {\n return JSON.parse(str)\n } catch (err) {\n return str\n }\n }\n\n /**\n * Unwrap a SuccessOrFail result such as a [[VmCallResult]] or a\n * [[ExecutePendingJobsResult]], where the fail branch contains a handle to a QuickJS error value.\n * If the result is a success, returns the value.\n * If the result is an error, converts the error to a native object and throws the error.\n */\n unwrapResult(result: SuccessOrFail): T {\n if (result.error) {\n const context: QuickJSContext =\n \"context\" in result.error ? (result.error as { context: QuickJSContext }).context : this\n const cause = result.error.consume((error) => this.dump(error))\n\n if (cause && typeof cause === \"object\" && typeof cause.message === \"string\") {\n const { message, name, stack } = cause\n const exception = new QuickJSUnwrapError(\"\")\n const hostStack = exception.stack\n\n if (typeof name === \"string\") {\n exception.name = cause.name\n }\n\n if (typeof stack === \"string\") {\n exception.stack = `${name}: ${message}\\n${cause.stack}Host: ${hostStack}`\n }\n\n Object.assign(exception, { cause, context, message })\n throw exception\n }\n\n throw new QuickJSUnwrapError(cause, context)\n }\n\n return result.value\n }\n\n /** @private */\n protected fnNextId = -32768 // min value of signed 16bit int used by Quickjs\n /** @private */\n protected fnMaps = new Map>>()\n\n /** @private */\n protected getFunction(fn_id: number): VmFunctionImplementation | undefined {\n const map_id = fn_id >> 8\n const fnMap = this.fnMaps.get(map_id)\n if (!fnMap) {\n return undefined\n }\n return fnMap.get(fn_id)\n }\n\n /** @private */\n protected setFunction(fn_id: number, handle: VmFunctionImplementation) {\n const map_id = fn_id >> 8\n let fnMap = this.fnMaps.get(map_id)\n if (!fnMap) {\n fnMap = new Map>()\n this.fnMaps.set(map_id, fnMap)\n }\n return fnMap.set(fn_id, handle)\n }\n\n /**\n * @hidden\n */\n private cToHostCallbacks: ContextCallbacks = {\n callFunction: (ctx, this_ptr, argc, argv, fn_id) => {\n if (ctx !== this.ctx.value) {\n throw new Error(\"QuickJSContext instance received C -> JS call with mismatched ctx\")\n }\n\n const fn = this.getFunction(fn_id)\n if (!fn) {\n // this \"throw\" is not catch-able from the TS side. could we somehow handle this higher up?\n throw new Error(`QuickJSContext had no callback with id ${fn_id}`)\n }\n\n return Scope.withScopeMaybeAsync(this, function* (awaited, scope) {\n const thisHandle = scope.manage(\n new WeakLifetime(this_ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime)\n )\n const argHandles = new Array(argc)\n for (let i = 0; i < argc; i++) {\n const ptr = this.ffi.QTS_ArgvGetJSValueConstPointer(argv, i)\n argHandles[i] = scope.manage(\n new WeakLifetime(ptr, this.memory.copyJSValue, this.memory.freeJSValue, this.runtime)\n )\n }\n\n try {\n const result = yield* awaited(fn.apply(thisHandle, argHandles))\n if (result) {\n if (\"error\" in result && result.error) {\n debugLog(\"throw error\", result.error)\n throw result.error\n }\n const handle = scope.manage(result instanceof Lifetime ? result : result.value)\n return this.ffi.QTS_DupValuePointer(this.ctx.value, handle.value)\n }\n return 0 as JSValuePointer\n } catch (error) {\n return this.errorToHandle(error as Error).consume((errorHandle) =>\n this.ffi.QTS_Throw(this.ctx.value, errorHandle.value)\n )\n }\n }) as JSValuePointer\n },\n }\n\n private errorToHandle(error: Error | QuickJSHandle): QuickJSHandle {\n if (error instanceof Lifetime) {\n return error\n }\n\n return this.newError(error)\n }\n}\n"]}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.d.ts
new file mode 100644
index 0000000..f64be56
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.d.ts
@@ -0,0 +1,5 @@
+export declare const QTS_DEBUG: boolean;
+export declare let debugLog: {
+ (...data: any[]): void;
+ (message?: any, ...optionalParams: any[]): void;
+};
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js
new file mode 100644
index 0000000..383e777
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js
@@ -0,0 +1,6 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.debugLog = exports.QTS_DEBUG = void 0;
+exports.QTS_DEBUG = false || Boolean(typeof process === "object" && process.env.QTS_DEBUG);
+exports.debugLog = exports.QTS_DEBUG ? console.log.bind(console) : () => { };
+//# sourceMappingURL=debug.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js.map b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js.map
new file mode 100644
index 0000000..df538cc
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.js","sourceRoot":"","sources":["../ts/debug.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACpF,QAAA,QAAQ,GAAG,iBAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA","sourcesContent":["export const QTS_DEBUG = false || Boolean(typeof process === \"object\" && process.env.QTS_DEBUG)\nexport let debugLog = QTS_DEBUG ? console.log.bind(console) : () => {}\n"]}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts
new file mode 100644
index 0000000..4ec594d
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.d.ts
@@ -0,0 +1,75 @@
+import type { Disposable } from "./lifetime";
+import type { QuickJSHandle } from "./types";
+import type { QuickJSRuntime } from "./runtime";
+import type { QuickJSContext } from "./context";
+export type { PromiseExecutor } from "./types";
+/**
+ * QuickJSDeferredPromise wraps a QuickJS promise [[handle]] and allows
+ * [[resolve]]ing or [[reject]]ing that promise. Use it to bridge asynchronous
+ * code on the host to APIs inside a QuickJSContext.
+ *
+ * Managing the lifetime of promises is tricky. There are three
+ * [[QuickJSHandle]]s inside of each deferred promise object: (1) the promise
+ * itself, (2) the `resolve` callback, and (3) the `reject` callback.
+ *
+ * - If the promise will be fulfilled before the end of it's [[owner]]'s lifetime,
+ * the only cleanup necessary is `deferred.handle.dispose()`, because
+ * calling [[resolve]] or [[reject]] will dispose of both callbacks automatically.
+ *
+ * - As the return value of a [[VmFunctionImplementation]], return [[handle]],
+ * and ensure that either [[resolve]] or [[reject]] will be called. No other
+ * clean-up is necessary.
+ *
+ * - In other cases, call [[dispose]], which will dispose [[handle]] as well as the
+ * QuickJS handles that back [[resolve]] and [[reject]]. For this object,
+ * [[dispose]] is idempotent.
+ */
+export declare class QuickJSDeferredPromise implements Disposable {
+ owner: QuickJSRuntime;
+ context: QuickJSContext;
+ /**
+ * A handle of the Promise instance inside the QuickJSContext.
+ * You must dispose [[handle]] or the entire QuickJSDeferredPromise once you
+ * are finished with it.
+ */
+ handle: QuickJSHandle;
+ /**
+ * A native promise that will resolve once this deferred is settled.
+ */
+ settled: Promise;
+ private resolveHandle;
+ private rejectHandle;
+ private onSettled;
+ /**
+ * Use [[QuickJSContext.newPromise]] to create a new promise instead of calling
+ * this constructor directly.
+ * @unstable
+ */
+ constructor(args: {
+ context: QuickJSContext;
+ promiseHandle: QuickJSHandle;
+ resolveHandle: QuickJSHandle;
+ rejectHandle: QuickJSHandle;
+ });
+ /**
+ * Resolve [[handle]] with the given value, if any.
+ * Calling this method after calling [[dispose]] is a no-op.
+ *
+ * Note that after resolving a promise, you may need to call
+ * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's
+ * callbacks.
+ */
+ resolve: (value?: QuickJSHandle) => void;
+ /**
+ * Reject [[handle]] with the given value, if any.
+ * Calling this method after calling [[dispose]] is a no-op.
+ *
+ * Note that after rejecting a promise, you may need to call
+ * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's
+ * callbacks.
+ */
+ reject: (value?: QuickJSHandle) => void;
+ get alive(): boolean;
+ dispose: () => void;
+ private disposeResolvers;
+}
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js
new file mode 100644
index 0000000..19ef7a1
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js
@@ -0,0 +1,96 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.QuickJSDeferredPromise = void 0;
+/**
+ * QuickJSDeferredPromise wraps a QuickJS promise [[handle]] and allows
+ * [[resolve]]ing or [[reject]]ing that promise. Use it to bridge asynchronous
+ * code on the host to APIs inside a QuickJSContext.
+ *
+ * Managing the lifetime of promises is tricky. There are three
+ * [[QuickJSHandle]]s inside of each deferred promise object: (1) the promise
+ * itself, (2) the `resolve` callback, and (3) the `reject` callback.
+ *
+ * - If the promise will be fulfilled before the end of it's [[owner]]'s lifetime,
+ * the only cleanup necessary is `deferred.handle.dispose()`, because
+ * calling [[resolve]] or [[reject]] will dispose of both callbacks automatically.
+ *
+ * - As the return value of a [[VmFunctionImplementation]], return [[handle]],
+ * and ensure that either [[resolve]] or [[reject]] will be called. No other
+ * clean-up is necessary.
+ *
+ * - In other cases, call [[dispose]], which will dispose [[handle]] as well as the
+ * QuickJS handles that back [[resolve]] and [[reject]]. For this object,
+ * [[dispose]] is idempotent.
+ */
+class QuickJSDeferredPromise {
+ /**
+ * Use [[QuickJSContext.newPromise]] to create a new promise instead of calling
+ * this constructor directly.
+ * @unstable
+ */
+ constructor(args) {
+ /**
+ * Resolve [[handle]] with the given value, if any.
+ * Calling this method after calling [[dispose]] is a no-op.
+ *
+ * Note that after resolving a promise, you may need to call
+ * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's
+ * callbacks.
+ */
+ this.resolve = (value) => {
+ if (!this.resolveHandle.alive) {
+ return;
+ }
+ this.context
+ .unwrapResult(this.context.callFunction(this.resolveHandle, this.context.undefined, value || this.context.undefined))
+ .dispose();
+ this.disposeResolvers();
+ this.onSettled();
+ };
+ /**
+ * Reject [[handle]] with the given value, if any.
+ * Calling this method after calling [[dispose]] is a no-op.
+ *
+ * Note that after rejecting a promise, you may need to call
+ * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's
+ * callbacks.
+ */
+ this.reject = (value) => {
+ if (!this.rejectHandle.alive) {
+ return;
+ }
+ this.context
+ .unwrapResult(this.context.callFunction(this.rejectHandle, this.context.undefined, value || this.context.undefined))
+ .dispose();
+ this.disposeResolvers();
+ this.onSettled();
+ };
+ this.dispose = () => {
+ if (this.handle.alive) {
+ this.handle.dispose();
+ }
+ this.disposeResolvers();
+ };
+ this.context = args.context;
+ this.owner = args.context.runtime;
+ this.handle = args.promiseHandle;
+ this.settled = new Promise((resolve) => {
+ this.onSettled = resolve;
+ });
+ this.resolveHandle = args.resolveHandle;
+ this.rejectHandle = args.rejectHandle;
+ }
+ get alive() {
+ return this.handle.alive || this.resolveHandle.alive || this.rejectHandle.alive;
+ }
+ disposeResolvers() {
+ if (this.resolveHandle.alive) {
+ this.resolveHandle.dispose();
+ }
+ if (this.rejectHandle.alive) {
+ this.rejectHandle.dispose();
+ }
+ }
+}
+exports.QuickJSDeferredPromise = QuickJSDeferredPromise;
+//# sourceMappingURL=deferred-promise.js.map
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js.map b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js.map
new file mode 100644
index 0000000..b80e826
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"deferred-promise.js","sourceRoot":"","sources":["../ts/deferred-promise.ts"],"names":[],"mappings":";;;AAMA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,sBAAsB;IAoBjC;;;;OAIG;IACH,YAAY,IAKX;QAWD;;;;;;;WAOG;QACH,YAAO,GAAG,CAAC,KAAqB,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC7B,OAAM;aACP;YAED,IAAI,CAAC,OAAO;iBACT,YAAY,CACX,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAChC,CACF;iBACA,OAAO,EAAE,CAAA;YAEZ,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC,CAAA;QAED;;;;;;;WAOG;QACH,WAAM,GAAG,CAAC,KAAqB,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC5B,OAAM;aACP;YAED,IAAI,CAAC,OAAO;iBACT,YAAY,CACX,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAChC,CACF;iBACA,OAAO,EAAE,CAAA;YAEZ,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC,CAAA;QAMD,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;aACtB;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC,CAAA;QAzEC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;IACvC,CAAC;IAwDD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAA;IACjF,CAAC;IASO,gBAAgB;QACtB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;SAC7B;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;SAC5B;IACH,CAAC;CACF;AAnHD,wDAmHC","sourcesContent":["import type { Disposable } from \"./lifetime\"\nimport type { QuickJSHandle } from \"./types\"\nimport type { QuickJSRuntime } from \"./runtime\"\nimport type { QuickJSContext } from \"./context\"\nexport type { PromiseExecutor } from \"./types\"\n\n/**\n * QuickJSDeferredPromise wraps a QuickJS promise [[handle]] and allows\n * [[resolve]]ing or [[reject]]ing that promise. Use it to bridge asynchronous\n * code on the host to APIs inside a QuickJSContext.\n *\n * Managing the lifetime of promises is tricky. There are three\n * [[QuickJSHandle]]s inside of each deferred promise object: (1) the promise\n * itself, (2) the `resolve` callback, and (3) the `reject` callback.\n *\n * - If the promise will be fulfilled before the end of it's [[owner]]'s lifetime,\n * the only cleanup necessary is `deferred.handle.dispose()`, because\n * calling [[resolve]] or [[reject]] will dispose of both callbacks automatically.\n *\n * - As the return value of a [[VmFunctionImplementation]], return [[handle]],\n * and ensure that either [[resolve]] or [[reject]] will be called. No other\n * clean-up is necessary.\n *\n * - In other cases, call [[dispose]], which will dispose [[handle]] as well as the\n * QuickJS handles that back [[resolve]] and [[reject]]. For this object,\n * [[dispose]] is idempotent.\n */\nexport class QuickJSDeferredPromise implements Disposable {\n public owner: QuickJSRuntime\n public context: QuickJSContext\n\n /**\n * A handle of the Promise instance inside the QuickJSContext.\n * You must dispose [[handle]] or the entire QuickJSDeferredPromise once you\n * are finished with it.\n */\n public handle: QuickJSHandle\n\n /**\n * A native promise that will resolve once this deferred is settled.\n */\n public settled: Promise\n\n private resolveHandle: QuickJSHandle\n private rejectHandle: QuickJSHandle\n private onSettled!: () => void\n\n /**\n * Use [[QuickJSContext.newPromise]] to create a new promise instead of calling\n * this constructor directly.\n * @unstable\n */\n constructor(args: {\n context: QuickJSContext\n promiseHandle: QuickJSHandle\n resolveHandle: QuickJSHandle\n rejectHandle: QuickJSHandle\n }) {\n this.context = args.context\n this.owner = args.context.runtime\n this.handle = args.promiseHandle\n this.settled = new Promise((resolve) => {\n this.onSettled = resolve\n })\n this.resolveHandle = args.resolveHandle\n this.rejectHandle = args.rejectHandle\n }\n\n /**\n * Resolve [[handle]] with the given value, if any.\n * Calling this method after calling [[dispose]] is a no-op.\n *\n * Note that after resolving a promise, you may need to call\n * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's\n * callbacks.\n */\n resolve = (value?: QuickJSHandle) => {\n if (!this.resolveHandle.alive) {\n return\n }\n\n this.context\n .unwrapResult(\n this.context.callFunction(\n this.resolveHandle,\n this.context.undefined,\n value || this.context.undefined\n )\n )\n .dispose()\n\n this.disposeResolvers()\n this.onSettled()\n }\n\n /**\n * Reject [[handle]] with the given value, if any.\n * Calling this method after calling [[dispose]] is a no-op.\n *\n * Note that after rejecting a promise, you may need to call\n * [[QuickJSContext.executePendingJobs]] to propagate the result to the promise's\n * callbacks.\n */\n reject = (value?: QuickJSHandle) => {\n if (!this.rejectHandle.alive) {\n return\n }\n\n this.context\n .unwrapResult(\n this.context.callFunction(\n this.rejectHandle,\n this.context.undefined,\n value || this.context.undefined\n )\n )\n .dispose()\n\n this.disposeResolvers()\n this.onSettled()\n }\n\n get alive() {\n return this.handle.alive || this.resolveHandle.alive || this.rejectHandle.alive\n }\n\n dispose = () => {\n if (this.handle.alive) {\n this.handle.dispose()\n }\n this.disposeResolvers()\n }\n\n private disposeResolvers() {\n if (this.resolveHandle.alive) {\n this.resolveHandle.dispose()\n }\n\n if (this.rejectHandle.alive) {\n this.rejectHandle.dispose()\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts
new file mode 100644
index 0000000..315b07d
--- /dev/null
+++ b/BlockCoder/node_modules/@tootallnate/quickjs-emscripten/dist/emscripten-types.d.ts
@@ -0,0 +1,97 @@
+import { BorrowedHeapCharPointer, JSContextPointer, JSRuntimePointer, JSValueConstPointer, JSValuePointer, OwnedHeapCharPointer } from "./types-ffi";
+declare namespace Emscripten {
+ interface FileSystemType {
+ }
+ type EnvironmentType = "WEB" | "NODE" | "SHELL" | "WORKER";
+ type ValueType = "number" | "string" | "array" | "boolean";
+ type TypeCompatibleWithC = number | string | any[] | boolean;
+ type WebAssemblyImports = Array<{
+ name: string;
+ kind: string;
+ }>;
+ type WebAssemblyExports = Array<{
+ module: string;
+ name: string;
+ kind: string;
+ }>;
+ interface CCallOpts {
+ async?: boolean;
+ }
+}
+/**
+ * Typings for the features we use to interface with our Emscripten build of
+ * QuickJS.
+ */
+interface EmscriptenModule {
+ /**
+ * Write JS `str` to HeapChar pointer.
+ * https://emscripten.org/docs/api_reference/preamble.js.html#stringToUTF8
+ */
+ stringToUTF8(str: string, outPtr: OwnedHeapCharPointer, maxBytesToRead?: number): void;
+ /**
+ * HeapChar to JS string.
+ * https://emscripten.org/docs/api_reference/preamble.js.html#UTF8ToString
+ */
+ UTF8ToString(ptr: BorrowedHeapCharPointer, maxBytesToRead?: number): string;
+ lengthBytesUTF8(str: string): number;
+ _malloc(size: number): number;
+ _free(ptr: number): void;
+ cwrap(ident: string, returnType: Emscripten.ValueType | null, argTypes: Emscripten.ValueType[], opts?: Emscripten.CCallOpts): (...args: any[]) => any;
+ HEAP8: Int8Array;
+ HEAP16: Int16Array;
+ HEAP32: Int32Array;
+ HEAPU8: Uint8Array;
+ HEAPU16: Uint16Array;
+ HEAPU32: Uint32Array;
+ HEAPF32: Float32Array;
+ HEAPF64: Float64Array;
+ TOTAL_STACK: number;
+ TOTAL_MEMORY: number;
+ FAST_MEMORY: number;
+}
+declare const AsyncifySleepReturnValue: unique symbol;
+/** @private */
+export type AsyncifySleepResult = T & typeof AsyncifySleepReturnValue;
+/**
+ * Allows us to optionally suspend the Emscripten runtime to wait for a promise.
+ * https://emscripten.org/docs/porting/asyncify.html#ways-to-use-async-apis-in-older-engines
+ * ```
+ * EM_JS(int, do_fetch, (), {
+ * return Asyncify.handleSleep(function (wakeUp) {
+ * out("waiting for a fetch");
+ * fetch("a.html").then(function (response) {
+ * out("got the fetch response");
+ * // (normally you would do something with the fetch here)
+ * wakeUp(42);
+ * });
+ * });
+ * });
+ * ```
+ * @private
+ */
+export interface Asyncify {
+ handleSleep