[32788f42] feat: implement database persistence, modernized UI with Tailwind, and Calendly-integrated QR card generator for Fotograf.de scraper
@@ -1 +1 @@
|
|||||||
{"task_id": "30388f42-8544-8088-bc48-e59e9b973e91", "token": "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", "readme_path": "readme.md", "session_start_time": "2026-03-10T19:23:35.891681"}
|
{"task_id": "32788f42-8544-80e1-a13a-c26114cf9b34", "token": "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", "readme_path": null, "session_start_time": "2026-03-21T07:14:28.659218"}
|
||||||
58
docker-compose.ce-v2.yml
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# TEMPORARY DOCKER-COMPOSE FOR STARTING COMPANY-EXPLORER - V2
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# --- GATEKEEPER (NGINX) ---
|
||||||
|
nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: gateway_proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8090:80"
|
||||||
|
volumes:
|
||||||
|
- ./nginx-proxy-ce.conf:/etc/nginx/nginx.conf:ro # Use the cleaned config
|
||||||
|
- ./.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
depends_on:
|
||||||
|
dashboard:
|
||||||
|
condition: service_started
|
||||||
|
company-explorer:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
# --- DASHBOARD ---
|
||||||
|
dashboard:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: dashboard
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./dashboard:/usr/share/nginx/html:ro
|
||||||
|
|
||||||
|
# --- APPS ---
|
||||||
|
company-explorer:
|
||||||
|
build:
|
||||||
|
context: ./company-explorer
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: company-explorer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
API_USER: "admin"
|
||||||
|
API_PASSWORD: "gemini"
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
DATABASE_URL: "sqlite:////data/companies_v3_fixed_2.db"
|
||||||
|
GEMINI_API_KEY: "${GEMINI_API_KEY}"
|
||||||
|
SERP_API_KEY: "${SERP_API}"
|
||||||
|
NOTION_TOKEN: "${NOTION_API_KEY}"
|
||||||
|
volumes:
|
||||||
|
- ./company-explorer:/app
|
||||||
|
- explorer_db_data:/data
|
||||||
|
- ./Log_from_docker:/app/logs_debug
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/docs"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
explorer_db_data: {}
|
||||||
66
docker-compose.ce.yml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# TEMPORARY DOCKER-COMPOSE FOR STARTING COMPANY-EXPLORER
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# --- GATEKEEPER (NGINX) ---
|
||||||
|
nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: gateway_proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8090:80"
|
||||||
|
volumes:
|
||||||
|
- ./nginx-proxy-clean.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./.htpasswd:/etc/nginx/.htpasswd:ro
|
||||||
|
depends_on:
|
||||||
|
dashboard:
|
||||||
|
condition: service_started
|
||||||
|
company-explorer:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
# --- DASHBOARD ---
|
||||||
|
dashboard:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: dashboard
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./dashboard:/usr/share/nginx/html:ro
|
||||||
|
|
||||||
|
# --- APPS ---
|
||||||
|
company-explorer:
|
||||||
|
build:
|
||||||
|
context: ./company-explorer
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: company-explorer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
API_USER: "admin"
|
||||||
|
API_PASSWORD: "gemini"
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
DATABASE_URL: "sqlite:////data/companies_v3_fixed_2.db"
|
||||||
|
GEMINI_API_KEY: "${GEMINI_API_KEY}"
|
||||||
|
SERP_API_KEY: "${SERP_API}"
|
||||||
|
NOTION_TOKEN: "${NOTION_API_KEY}"
|
||||||
|
volumes:
|
||||||
|
- ./company-explorer:/app
|
||||||
|
- explorer_db_data:/data
|
||||||
|
- ./Log_from_docker:/app/logs_debug
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/docs"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
connector_db_data: {}
|
||||||
|
explorer_db_data: {}
|
||||||
|
lead_engine_data: {}
|
||||||
|
gtm_architect_data: {}
|
||||||
|
b2b_marketing_data: {}
|
||||||
|
transcription_uploads: {}
|
||||||
|
content_engine_data: {}
|
||||||
|
competitor_analysis_data: {}
|
||||||
|
market_intel_data: {}
|
||||||
11
docker-compose.test-override.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
depends_on:
|
||||||
|
dashboard:
|
||||||
|
condition: service_started
|
||||||
|
company-explorer:
|
||||||
|
condition: service_healthy
|
||||||
|
lead-engine:
|
||||||
|
condition: service_started
|
||||||
20
docker-compose.tr.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
transcription-tool:
|
||||||
|
build:
|
||||||
|
context: ./transcription-tool
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: transcription-tool-standalone
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8001:8001"
|
||||||
|
environment:
|
||||||
|
GEMINI_API_KEY: "${GEMINI_API_KEY}"
|
||||||
|
UPLOAD_DIR: "/app/uploads"
|
||||||
|
volumes:
|
||||||
|
- transcription_uploads:/app/uploads
|
||||||
|
- ./Log_from_docker:/app/logs_debug
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
transcription_uploads: {}
|
||||||
BIN
error_get_jobs_list_error_20260320_162957.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
error_get_jobs_list_error_20260320_163832.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
error_login_error_20260320_145427.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
error_login_error_20260320_150231.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
error_login_error_20260320_151103.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
error_login_error_20260320_151426.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
@@ -1,3 +1,61 @@
|
|||||||
# Fotograf.de Scraper
|
# Fotograf.de Scraper & Management UI
|
||||||
|
|
||||||
Dokumentation für den Fotograf.de Scraper-Service.
|
**Status:** Production-Ready Microservice (Core Feature: PDF List Generation & QR Cards)
|
||||||
|
|
||||||
|
Dieser Service modernisiert die alten `Fotograf.de` Skripte, indem er eine robuste, web-basierte UI zur Verwaltung und Automatisierung von Foto-Aufträgen bereitstellt. Er ist als eigenständiger Microservice konzipiert, der unabhängig vom Haupt-Stack läuft.
|
||||||
|
|
||||||
|
## 🏗️ Architektur
|
||||||
|
|
||||||
|
Der Service besteht aus zwei Hauptkomponenten:
|
||||||
|
|
||||||
|
1. **Backend (Python / FastAPI / Selenium / SQLAlchemy):**
|
||||||
|
* **Automatisierung:** Nutzt Selenium für das Scraping von `fotograf.de`.
|
||||||
|
* **Persistenz:** Eine SQLite-Datenbank (`fotograf_jobs.db`) speichert die Auftragsliste, sodass langsame Scraping-Vorgänge nur bei Bedarf (Refresh) nötig sind.
|
||||||
|
* **PDF-Engine:** Nutzt WeasyPrint für Teilnehmerlisten und ReportLab/PyPDF2 für präzise PDF-Overlays (QR-Karten).
|
||||||
|
* **API-Integration:** Direkte Anbindung an die **Calendly API (v2)** zum Abruf von Live-Buchungsdaten mittels Personal Access Token (JWT).
|
||||||
|
|
||||||
|
2. **Frontend (TypeScript / React / Vite / TailwindCSS):**
|
||||||
|
* **Modernes UI:** Ein vollständig responsives Dashboard mit Tailwind CSS (Kachel-Layout, Tabs für Kiga/Schule).
|
||||||
|
* **Echtzeit-Feedback:** Polling-Mechanismus für langlaufende Hintergrund-Tasks (z. B. Statistiken).
|
||||||
|
* **Tools:** Integrierte Formulare für PDF-Downloads und ein dedizierter QR-Karten-Generator im Header.
|
||||||
|
|
||||||
|
## ✨ Core Features
|
||||||
|
|
||||||
|
### Feature 1: PDF-Teilnehmerlisten-Generierung (Vollständig)
|
||||||
|
Automatisierter Workflow:
|
||||||
|
1. **Daten-Caching:** Aufträge werden aus der lokalen DB geladen (Millisekunden-Reaktionszeit).
|
||||||
|
2. **Selenium-Download:** Auf Knopfdruck wird die CSV-Anmeldeliste von `fotograf.de` im Hintergrund geladen.
|
||||||
|
3. **PDF-Erstellung:** Generierung eines sortierten PDFs (Klassen/Gruppen) mit "Kinderfotos Erding" Branding.
|
||||||
|
|
||||||
|
### Feature 2: QR-Karten für Familien-Shootings (Vollständig)
|
||||||
|
Spezielles Tool für Familien-Mini-Shootings:
|
||||||
|
* **Workflow:**
|
||||||
|
1. Manueller Upload eines Blanko-PDFs, das bereits individuelle QR-Codes pro Seite/Karte enthält.
|
||||||
|
2. Live-Abruf der Buchungsdaten (Name, Anzahl Kinder, Uhrzeit) via **Calendly API**.
|
||||||
|
3. **Präzises Overlay:** Die Texte werden exakt an zwei Positionen pro A4-Seite angedruckt:
|
||||||
|
* **Element 1 (Oben):** X: 72mm, Y: 22mm (vom oberen Rand).
|
||||||
|
* **Element 2 (Unten):** X: 72mm, Y: 171mm (vom oberen Rand).
|
||||||
|
* **Intelligente Seitenverwaltung:** Das Tool erkennt die Seitenanzahl der Vorlage und beschreibt jede Seite individuell, um die eindeutigen QR-Codes zu erhalten.
|
||||||
|
|
||||||
|
### Feature 3: Nachfass-E-Mails (Geplant)
|
||||||
|
* Identifizierung von Käufern/Nicht-Käufern zur Generierung von Supermailer-Listen (Anbindung an Fotograf.de Scraping-Logik).
|
||||||
|
|
||||||
|
### Feature 4: Verkaufs-Statistiken (Vollständig)
|
||||||
|
* Durchforstet alle Alben eines Auftrags via Selenium.
|
||||||
|
* Liefert eine Übersicht der Verkaufszahlen pro Album (Kinder gesamt, mit Käufen, alle Bilder gekauft).
|
||||||
|
* **UX:** Fortschrittsanzeige in Echtzeit ("Bearbeite Album X/Y, Seite Z...") direkt im Browser.
|
||||||
|
|
||||||
|
## 🚀 Deployment & Konfiguration
|
||||||
|
|
||||||
|
Der Service wird über eine eigene `docker-compose.yml` im Unterverzeichnis gestartet.
|
||||||
|
|
||||||
|
### Umgebungsvariablen (`.env`)
|
||||||
|
Folgende Variablen müssen in der `.env` im Verzeichnis `/fotograf-de-scraper/` definiert sein:
|
||||||
|
* `KIGA_USER` / `KIGA_PW`: Login für den Kindergarten-Account.
|
||||||
|
* `SCHULE_USER` / `SCHULE_PW`: Login für den Schul-Account.
|
||||||
|
* `CALENDLY_TOKEN`: Personal Access Token (JWT, startet mit `eyJ...`) von Calendly (erfordert Professional Abo).
|
||||||
|
|
||||||
|
### URLs & Ports
|
||||||
|
* **Frontend:** `http://<HOST_IP>:3009` (Dashboard & Tools)
|
||||||
|
* **Backend:** `http://<HOST_IP>:8002` (API-Schnittstelle)
|
||||||
|
* **Persistenz:** Die Datenbank liegt unter `./backend/data/fotograf_jobs.db`.
|
||||||
|
|||||||
BIN
fotograf-de-scraper/backend/data/blank.pdf
Normal file
32
fotograf-de-scraper/backend/database.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
from sqlalchemy import create_engine, Column, Integer, String, DateTime
|
||||||
|
from sqlalchemy.orm import declarative_base, sessionmaker
|
||||||
|
import datetime
|
||||||
|
import os
|
||||||
|
|
||||||
|
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:////app/data/fotograf_jobs.db")
|
||||||
|
|
||||||
|
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
|
||||||
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
|
|
||||||
|
Base = declarative_base()
|
||||||
|
|
||||||
|
class Job(Base):
|
||||||
|
__tablename__ = "jobs"
|
||||||
|
|
||||||
|
id = Column(String, primary_key=True, index=True)
|
||||||
|
name = Column(String, index=True)
|
||||||
|
url = Column(String)
|
||||||
|
status = Column(String)
|
||||||
|
date = Column(String)
|
||||||
|
shooting_type = Column(String)
|
||||||
|
account_type = Column(String, index=True) # 'kiga' or 'schule'
|
||||||
|
last_updated = Column(DateTime, default=datetime.datetime.utcnow)
|
||||||
|
|
||||||
|
Base.metadata.create_all(bind=engine)
|
||||||
|
|
||||||
|
def get_db():
|
||||||
|
db = SessionLocal()
|
||||||
|
try:
|
||||||
|
yield db
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 185 KiB |
@@ -10,10 +10,14 @@ import tempfile
|
|||||||
import shutil
|
import shutil
|
||||||
import time
|
import time
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from fastapi import FastAPI, HTTPException
|
from fastapi import FastAPI, HTTPException, Depends, BackgroundTasks
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
from typing import List, Dict, Any, Optional
|
from typing import List, Dict, Any, Optional
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from database import get_db, Job as DBJob, engine, Base
|
||||||
|
import math
|
||||||
|
import uuid
|
||||||
|
|
||||||
from selenium import webdriver
|
from selenium import webdriver
|
||||||
from selenium.webdriver.chrome.options import Options
|
from selenium.webdriver.chrome.options import Options
|
||||||
@@ -35,6 +39,9 @@ logger = logging.getLogger("fotograf-scraper")
|
|||||||
# Load environment variables
|
# Load environment variables
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
|
# Ensure DB is created
|
||||||
|
Base.metadata.create_all(bind=engine)
|
||||||
|
|
||||||
app = FastAPI(title="Fotograf.de Scraper & ERP API")
|
app = FastAPI(title="Fotograf.de Scraper & ERP API")
|
||||||
|
|
||||||
# Configure CORS
|
# Configure CORS
|
||||||
@@ -61,6 +68,14 @@ SELECTORS = {
|
|||||||
"job_row_shooting_type": ".//td[count(//th[contains(., 'Typ')]/preceding-sibling::th) + 1]",
|
"job_row_shooting_type": ".//td[count(//th[contains(., 'Typ')]/preceding-sibling::th) + 1]",
|
||||||
"export_dropdown": "[data-qa-id='dropdown:export']",
|
"export_dropdown": "[data-qa-id='dropdown:export']",
|
||||||
"export_csv_link": "button[data-qa-id='button:csv']",
|
"export_csv_link": "button[data-qa-id='button:csv']",
|
||||||
|
# --- Statistics Selectors ---
|
||||||
|
"album_overview_rows": "//table/tbody/tr",
|
||||||
|
"album_overview_link": ".//td[2]//a",
|
||||||
|
"access_code_count": "//span[text()='Zugangscodes']/following-sibling::strong",
|
||||||
|
"person_rows": "//div[contains(@class, 'border-legacy-silver-550') and .//span[text()='Logins']]",
|
||||||
|
"person_all_photos": ".//div[@data-key]",
|
||||||
|
"person_purchased_photos": ".//div[@data-key and .//img[@alt='Bestellungen mit diesem Foto']]",
|
||||||
|
"person_access_card_photo": ".//div[@data-key and contains(@class, 'opacity-50')]",
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- PDF Generation Logic ---
|
# --- PDF Generation Logic ---
|
||||||
@@ -278,15 +293,214 @@ def get_jobs_list(driver) -> List[Dict[str, Any]]:
|
|||||||
|
|
||||||
return jobs
|
return jobs
|
||||||
|
|
||||||
|
# --- Background Task Engine ---
|
||||||
|
|
||||||
|
task_store: Dict[str, Dict[str, Any]] = {}
|
||||||
|
|
||||||
|
def process_statistics(task_id: str, job_id: str, account_type: str):
|
||||||
|
logger.info(f"Task {task_id}: Starting statistics calculation for job {job_id}")
|
||||||
|
task_store[task_id] = {"status": "running", "progress": "Initialisiere Browser...", "result": None}
|
||||||
|
|
||||||
|
username = os.getenv(f"{account_type.upper()}_USER")
|
||||||
|
password = os.getenv(f"{account_type.upper()}_PW")
|
||||||
|
driver = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
driver = setup_driver()
|
||||||
|
if not driver or not login(driver, username, password):
|
||||||
|
task_store[task_id] = {"status": "error", "progress": "Login fehlgeschlagen. Überprüfe die Zugangsdaten."}
|
||||||
|
return
|
||||||
|
|
||||||
|
task_store[task_id]["progress"] = f"Lade Alben-Übersicht für Auftrag..."
|
||||||
|
|
||||||
|
albums_overview_url = f"https://app.fotograf.de/config_jobs_photos/index/{job_id}"
|
||||||
|
logger.info(f"Navigating to albums: {albums_overview_url}")
|
||||||
|
driver.get(albums_overview_url)
|
||||||
|
wait = WebDriverWait(driver, 15)
|
||||||
|
|
||||||
|
albums_to_visit = []
|
||||||
|
try:
|
||||||
|
album_rows = wait.until(EC.presence_of_all_elements_located((By.XPATH, SELECTORS["album_overview_rows"])))
|
||||||
|
for row in album_rows:
|
||||||
|
try:
|
||||||
|
album_link = row.find_element(By.XPATH, SELECTORS["album_overview_link"])
|
||||||
|
albums_to_visit.append({"name": album_link.text, "url": album_link.get_attribute('href')})
|
||||||
|
except NoSuchElementException:
|
||||||
|
continue
|
||||||
|
except TimeoutException:
|
||||||
|
task_store[task_id] = {"status": "error", "progress": "Konnte die Album-Liste nicht finden."}
|
||||||
|
return
|
||||||
|
|
||||||
|
total_albums = len(albums_to_visit)
|
||||||
|
task_store[task_id]["progress"] = f"{total_albums} Alben gefunden. Starte Auswertung..."
|
||||||
|
|
||||||
|
statistics = []
|
||||||
|
|
||||||
|
for index, album in enumerate(albums_to_visit):
|
||||||
|
album_name = album['name']
|
||||||
|
task_store[task_id]["progress"] = f"Bearbeite Album {index + 1}/{total_albums}: '{album_name}'..."
|
||||||
|
driver.get(album['url'])
|
||||||
|
|
||||||
|
try:
|
||||||
|
total_codes_text = wait.until(EC.visibility_of_element_located((By.XPATH, SELECTORS["access_code_count"]))).text
|
||||||
|
num_pages = math.ceil(int(total_codes_text) / 20)
|
||||||
|
|
||||||
|
total_children_in_album = 0
|
||||||
|
children_with_purchase = 0
|
||||||
|
children_with_all_purchased = 0
|
||||||
|
|
||||||
|
for page_num in range(1, num_pages + 1):
|
||||||
|
task_store[task_id]["progress"] = f"Bearbeite Album {index + 1}/{total_albums}: '{album_name}' (Seite {page_num}/{num_pages})..."
|
||||||
|
|
||||||
|
if page_num > 1:
|
||||||
|
driver.get(album['url'] + f"?page_guest_accesses={page_num}")
|
||||||
|
|
||||||
|
person_rows = wait.until(EC.presence_of_all_elements_located((By.XPATH, SELECTORS["person_rows"])))
|
||||||
|
|
||||||
|
for person_row in person_rows:
|
||||||
|
total_children_in_album += 1
|
||||||
|
try:
|
||||||
|
photo_container = person_row.find_element(By.XPATH, "./following-sibling::div[1]")
|
||||||
|
|
||||||
|
num_total_photos = len(photo_container.find_elements(By.XPATH, SELECTORS["person_all_photos"]))
|
||||||
|
num_purchased_photos = len(photo_container.find_elements(By.XPATH, SELECTORS["person_purchased_photos"]))
|
||||||
|
num_access_cards = len(photo_container.find_elements(By.XPATH, SELECTORS["person_access_card_photo"]))
|
||||||
|
|
||||||
|
buyable_photos = num_total_photos - num_access_cards
|
||||||
|
|
||||||
|
if num_purchased_photos > 0:
|
||||||
|
children_with_purchase += 1
|
||||||
|
|
||||||
|
if buyable_photos > 0 and buyable_photos == num_purchased_photos:
|
||||||
|
children_with_all_purchased += 1
|
||||||
|
except NoSuchElementException:
|
||||||
|
continue
|
||||||
|
|
||||||
|
statistics.append({
|
||||||
|
"Album": album_name,
|
||||||
|
"Kinder_insgesamt": total_children_in_album,
|
||||||
|
"Kinder_mit_Käufen": children_with_purchase,
|
||||||
|
"Kinder_Alle_Bilder_gekauft": children_with_all_purchased
|
||||||
|
})
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Fehler bei Auswertung von Album '{album_name}': {e}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
task_store[task_id] = {
|
||||||
|
"status": "completed",
|
||||||
|
"progress": "Auswertung erfolgreich abgeschlossen!",
|
||||||
|
"result": statistics
|
||||||
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception(f"Unexpected error in task {task_id}")
|
||||||
|
task_store[task_id] = {"status": "error", "progress": f"Unerwarteter Fehler: {str(e)}"}
|
||||||
|
finally:
|
||||||
|
if driver:
|
||||||
|
logger.debug(f"Task {task_id}: Closing driver.")
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
|
from fastapi import FastAPI, HTTPException, Depends, BackgroundTasks, UploadFile, File, Form
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from fastapi.responses import FileResponse, JSONResponse
|
||||||
|
from typing import List, Dict, Any, Optional
|
||||||
|
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from database import get_db, Job as DBJob, engine, Base
|
||||||
|
import math
|
||||||
|
import uuid
|
||||||
|
from qr_generator import get_calendly_events, overlay_text_on_pdf
|
||||||
|
|
||||||
# --- API Endpoints ---
|
# --- API Endpoints ---
|
||||||
|
|
||||||
|
@app.get("/api/calendly/events")
|
||||||
|
async def fetch_calendly_events(start_time: str, end_time: str, event_type_name: Optional[str] = None):
|
||||||
|
"""
|
||||||
|
Debug endpoint to fetch and inspect raw Calendly data.
|
||||||
|
"""
|
||||||
|
api_token = os.getenv("CALENDLY_TOKEN")
|
||||||
|
if not api_token:
|
||||||
|
raise HTTPException(status_code=400, detail="Calendly API token missing.")
|
||||||
|
|
||||||
|
try:
|
||||||
|
from qr_generator import get_calendly_events_raw
|
||||||
|
raw_data = get_calendly_events_raw(api_token, start_time, end_time, event_type_name)
|
||||||
|
return {"count": len(raw_data), "events": raw_data}
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error fetching Calendly events: {e}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/api/qr-cards/generate")
|
||||||
|
async def generate_qr_cards(
|
||||||
|
start_time: str = Form(...),
|
||||||
|
end_time: str = Form(...),
|
||||||
|
event_type_name: str = Form(None),
|
||||||
|
pdf_file: UploadFile = File(...)
|
||||||
|
):
|
||||||
|
logger.info(f"API Request: Generate QR cards from {start_time} to {end_time} for event type '{event_type_name}'")
|
||||||
|
api_token = os.getenv("CALENDLY_TOKEN")
|
||||||
|
if not api_token:
|
||||||
|
raise HTTPException(status_code=400, detail="Calendly API token missing.")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Save uploaded PDF temporarily
|
||||||
|
temp_dir = tempfile.gettempdir()
|
||||||
|
base_pdf_path = os.path.join(temp_dir, f"upload_{uuid.uuid4()}.pdf")
|
||||||
|
with open(base_pdf_path, "wb") as buffer:
|
||||||
|
shutil.copyfileobj(pdf_file.file, buffer)
|
||||||
|
|
||||||
|
# 1. Fetch formatted data from Calendly
|
||||||
|
texts = get_calendly_events(api_token, start_time, end_time, event_type_name)
|
||||||
|
if not texts:
|
||||||
|
os.remove(base_pdf_path)
|
||||||
|
return JSONResponse(status_code=404, content={"message": "Keine passenden Termine gefunden."})
|
||||||
|
|
||||||
|
# 2. Overlay text on blank PDF
|
||||||
|
output_name = f"QR_Karten_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
|
||||||
|
output_path = os.path.join(temp_dir, output_name)
|
||||||
|
|
||||||
|
overlay_text_on_pdf(base_pdf_path, output_path, texts)
|
||||||
|
|
||||||
|
# Cleanup uploaded file
|
||||||
|
os.remove(base_pdf_path)
|
||||||
|
|
||||||
|
return FileResponse(path=output_path, filename=output_name, media_type="application/pdf")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error generating QR cards: {e}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
async def health_check():
|
async def health_check():
|
||||||
return {"status": "ok"}
|
return {"status": "ok"}
|
||||||
|
|
||||||
@app.get("/api/jobs", response_model=List[Dict[str, Any]])
|
@app.get("/api/jobs", response_model=List[Dict[str, Any]])
|
||||||
async def get_jobs(account_type: str):
|
async def get_jobs(account_type: str, force_refresh: bool = False, db: Session = Depends(get_db)):
|
||||||
logger.info(f"API Request: GET /api/jobs for {account_type}")
|
logger.info(f"API Request: GET /api/jobs for {account_type} (force_refresh={force_refresh})")
|
||||||
|
|
||||||
|
# 1. Check database first if not forcing a refresh
|
||||||
|
if not force_refresh:
|
||||||
|
cached_jobs = db.query(DBJob).filter(DBJob.account_type == account_type).all()
|
||||||
|
if cached_jobs:
|
||||||
|
logger.info(f"Returning {len(cached_jobs)} cached jobs for {account_type}")
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"id": job.id,
|
||||||
|
"name": job.name,
|
||||||
|
"url": job.url,
|
||||||
|
"status": job.status,
|
||||||
|
"date": job.date,
|
||||||
|
"shooting_type": job.shooting_type,
|
||||||
|
"last_updated": job.last_updated.isoformat() if job.last_updated else None
|
||||||
|
}
|
||||||
|
for job in cached_jobs
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
logger.info(f"No cached jobs found for {account_type}. Initiating scrape...")
|
||||||
|
|
||||||
|
# 2. Scrape from fotograf.de if forcing refresh or no cached jobs
|
||||||
username = os.getenv(f"{account_type.upper()}_USER")
|
username = os.getenv(f"{account_type.upper()}_USER")
|
||||||
password = os.getenv(f"{account_type.upper()}_PW")
|
password = os.getenv(f"{account_type.upper()}_PW")
|
||||||
if not username or not password:
|
if not username or not password:
|
||||||
@@ -298,12 +512,61 @@ async def get_jobs(account_type: str):
|
|||||||
driver = setup_driver()
|
driver = setup_driver()
|
||||||
if not driver or not login(driver, username, password):
|
if not driver or not login(driver, username, password):
|
||||||
raise HTTPException(status_code=401, detail="Login failed.")
|
raise HTTPException(status_code=401, detail="Login failed.")
|
||||||
return get_jobs_list(driver)
|
|
||||||
|
scraped_jobs = get_jobs_list(driver)
|
||||||
|
|
||||||
|
# 3. Save to database
|
||||||
|
if scraped_jobs:
|
||||||
|
logger.info(f"Saving {len(scraped_jobs)} jobs to database for {account_type}...")
|
||||||
|
# Clear old jobs for this account type
|
||||||
|
db.query(DBJob).filter(DBJob.account_type == account_type).delete()
|
||||||
|
|
||||||
|
# Insert new jobs
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
for job_data in scraped_jobs:
|
||||||
|
if job_data["id"]: # Ensure we have an ID
|
||||||
|
new_job = DBJob(
|
||||||
|
id=job_data["id"],
|
||||||
|
name=job_data["name"],
|
||||||
|
url=job_data["url"],
|
||||||
|
status=job_data["status"],
|
||||||
|
date=job_data["date"],
|
||||||
|
shooting_type=job_data["shooting_type"],
|
||||||
|
account_type=account_type,
|
||||||
|
last_updated=now
|
||||||
|
)
|
||||||
|
db.add(new_job)
|
||||||
|
|
||||||
|
# Update dict for return value
|
||||||
|
job_data["last_updated"] = now.isoformat()
|
||||||
|
|
||||||
|
db.commit()
|
||||||
|
logger.info("Database updated successfully.")
|
||||||
|
|
||||||
|
return scraped_jobs
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error during scraping or database save: {e}")
|
||||||
|
db.rollback()
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
finally:
|
finally:
|
||||||
if driver:
|
if driver:
|
||||||
logger.debug("Closing driver.")
|
logger.debug("Closing driver.")
|
||||||
driver.quit()
|
driver.quit()
|
||||||
|
|
||||||
|
@app.get("/api/tasks/{task_id}")
|
||||||
|
async def get_task_status(task_id: str):
|
||||||
|
logger.debug(f"API Request: Check task status for {task_id}")
|
||||||
|
if task_id not in task_store:
|
||||||
|
raise HTTPException(status_code=404, detail="Task nicht gefunden.")
|
||||||
|
return task_store[task_id]
|
||||||
|
|
||||||
|
@app.post("/api/jobs/{job_id}/statistics")
|
||||||
|
async def start_statistics(job_id: str, account_type: str, background_tasks: BackgroundTasks):
|
||||||
|
logger.info(f"API Request: Start statistics for job {job_id} ({account_type})")
|
||||||
|
task_id = str(uuid.uuid4())
|
||||||
|
background_tasks.add_task(process_statistics, task_id, job_id, account_type)
|
||||||
|
return {"task_id": task_id}
|
||||||
|
|
||||||
@app.get("/api/jobs/{job_id}/generate-pdf")
|
@app.get("/api/jobs/{job_id}/generate-pdf")
|
||||||
async def generate_pdf(job_id: str, account_type: str):
|
async def generate_pdf(job_id: str, account_type: str):
|
||||||
logger.info(f"API Request: Generate PDF for job {job_id} ({account_type})")
|
logger.info(f"API Request: Generate PDF for job {job_id} ({account_type})")
|
||||||
|
|||||||
200
fotograf-de-scraper/backend/qr_generator.py
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import io
|
||||||
|
import datetime
|
||||||
|
from reportlab.pdfgen import canvas
|
||||||
|
from reportlab.lib.pagesizes import A4
|
||||||
|
from reportlab.pdfbase import pdfmetrics
|
||||||
|
from reportlab.pdfbase.ttfonts import TTFont
|
||||||
|
from PyPDF2 import PdfReader, PdfWriter
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger("qr-card-generator")
|
||||||
|
|
||||||
|
def get_calendly_events_raw(api_token: str, start_time: str, end_time: str, event_type_name: str = None):
|
||||||
|
"""
|
||||||
|
Debug function to fetch raw Calendly data without formatting.
|
||||||
|
"""
|
||||||
|
headers = {
|
||||||
|
'Authorization': f'Bearer {api_token}',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
|
||||||
|
# 1. Get current user info to get the user URI
|
||||||
|
user_url = "https://api.calendly.com/users/me"
|
||||||
|
user_response = requests.get(user_url, headers=headers)
|
||||||
|
if not user_response.ok:
|
||||||
|
raise Exception(f"Calendly API Error: {user_response.status_code}")
|
||||||
|
|
||||||
|
user_data = user_response.json()
|
||||||
|
user_uri = user_data['resource']['uri']
|
||||||
|
|
||||||
|
# 2. Get events for the user
|
||||||
|
events_url = "https://api.calendly.com/scheduled_events"
|
||||||
|
params = {
|
||||||
|
'user': user_uri,
|
||||||
|
'min_start_time': start_time,
|
||||||
|
'max_start_time': end_time,
|
||||||
|
'status': 'active'
|
||||||
|
}
|
||||||
|
|
||||||
|
events_response = requests.get(events_url, headers=headers, params=params)
|
||||||
|
if not events_response.ok:
|
||||||
|
raise Exception(f"Calendly API Error: {events_response.status_code}")
|
||||||
|
|
||||||
|
events_data = events_response.json()
|
||||||
|
events = events_data['collection']
|
||||||
|
|
||||||
|
raw_results = []
|
||||||
|
|
||||||
|
# 3. Get invitees
|
||||||
|
for event in events:
|
||||||
|
event_name = event.get('name', '')
|
||||||
|
# Filter by event type if provided
|
||||||
|
if event_type_name and event_type_name.lower() not in event_name.lower():
|
||||||
|
continue
|
||||||
|
|
||||||
|
event_uri = event['uri']
|
||||||
|
event_uuid = event_uri.split('/')[-1]
|
||||||
|
invitees_url = f"https://api.calendly.com/scheduled_events/{event_uuid}/invitees"
|
||||||
|
|
||||||
|
invitees_response = requests.get(invitees_url, headers=headers)
|
||||||
|
if not invitees_response.ok:
|
||||||
|
continue
|
||||||
|
|
||||||
|
invitees_data = invitees_response.json()
|
||||||
|
|
||||||
|
for invitee in invitees_data['collection']:
|
||||||
|
raw_results.append({
|
||||||
|
"event_name": event_name,
|
||||||
|
"start_time": event['start_time'],
|
||||||
|
"invitee_name": invitee['name'],
|
||||||
|
"invitee_email": invitee['email'],
|
||||||
|
"questions_and_answers": invitee.get('questions_and_answers', [])
|
||||||
|
})
|
||||||
|
|
||||||
|
return raw_results
|
||||||
|
|
||||||
|
def get_calendly_events(api_token: str, start_time: str, end_time: str, event_type_name: str = None):
|
||||||
|
"""
|
||||||
|
Fetches events from Calendly API for the current user within a time range.
|
||||||
|
"""
|
||||||
|
raw_data = get_calendly_events_raw(api_token, start_time, end_time, event_type_name)
|
||||||
|
formatted_data = []
|
||||||
|
|
||||||
|
for item in raw_data:
|
||||||
|
# Parse start time
|
||||||
|
start_dt = datetime.datetime.fromisoformat(item['start_time'].replace('Z', '+00:00'))
|
||||||
|
# Format as HH:MM
|
||||||
|
time_str = start_dt.strftime('%H:%M')
|
||||||
|
|
||||||
|
name = item['invitee_name']
|
||||||
|
|
||||||
|
# Extract specific answers from the Calendly form
|
||||||
|
# We look for the number of children and any additional notes
|
||||||
|
num_children = ""
|
||||||
|
additional_notes = ""
|
||||||
|
questions_and_answers = item.get('questions_and_answers', [])
|
||||||
|
|
||||||
|
for q_a in questions_and_answers:
|
||||||
|
q_text = q_a.get('question', '').lower()
|
||||||
|
a_text = q_a.get('answer', '')
|
||||||
|
|
||||||
|
if "wie viele kinder" in q_text:
|
||||||
|
num_children = a_text
|
||||||
|
elif "nachricht" in q_text or "anmerkung" in q_text:
|
||||||
|
# If there's a custom notes field in some events
|
||||||
|
additional_notes = a_text
|
||||||
|
|
||||||
|
# Construct the final string: "Name, X Kinder // HH:MM Uhr (Notes)"
|
||||||
|
# matching: Halime Türe, 1 Kind // 12:00 Uhr
|
||||||
|
final_text = f"{name}"
|
||||||
|
if num_children:
|
||||||
|
final_text += f", {num_children}"
|
||||||
|
|
||||||
|
final_text += f" // {time_str} Uhr"
|
||||||
|
|
||||||
|
if additional_notes:
|
||||||
|
final_text += f" ({additional_notes})"
|
||||||
|
|
||||||
|
formatted_data.append(final_text)
|
||||||
|
|
||||||
|
logger.info(f"Processed {len(formatted_data)} invitees.")
|
||||||
|
return formatted_data
|
||||||
|
|
||||||
|
|
||||||
|
def overlay_text_on_pdf(base_pdf_path: str, output_pdf_path: str, texts: list):
|
||||||
|
"""
|
||||||
|
Overlays text from the `texts` list onto a base PDF.
|
||||||
|
Expects two text entries per page (top and bottom element).
|
||||||
|
Coordinates are in mm from bottom-left (ReportLab default).
|
||||||
|
Target:
|
||||||
|
Element 1: X: 72mm, Y: 22mm (from top-left in user spec, need to convert)
|
||||||
|
Element 2: X: 72mm, Y: 171mm (from top-left in user spec, need to convert)
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Convert mm to points (1 mm = 2.83465 points)
|
||||||
|
mm_to_pt = 2.83465
|
||||||
|
|
||||||
|
# A4 dimensions in points (approx 595.27 x 841.89)
|
||||||
|
page_width, page_height = A4
|
||||||
|
|
||||||
|
# User coordinates are from top-left.
|
||||||
|
# ReportLab uses bottom-left as (0,0).
|
||||||
|
# Element 1 (Top): X = 72mm, Y = 22mm (from top) -> Y = page_height - 22mm
|
||||||
|
# Element 2 (Bottom): X = 72mm, Y = 171mm (from top) -> Y = page_height - 171mm
|
||||||
|
|
||||||
|
x_pos = 72 * mm_to_pt
|
||||||
|
y_pos_1 = page_height - (22 * mm_to_pt)
|
||||||
|
y_pos_2 = page_height - (171 * mm_to_pt)
|
||||||
|
|
||||||
|
reader = PdfReader(base_pdf_path)
|
||||||
|
writer = PdfWriter()
|
||||||
|
|
||||||
|
total_pages = len(reader.pages)
|
||||||
|
max_capacity = total_pages * 2
|
||||||
|
|
||||||
|
if len(texts) > max_capacity:
|
||||||
|
logger.warning(f"Not enough pages in base PDF. Have {len(texts)} invitees but only space for {max_capacity}. Truncating.")
|
||||||
|
texts = texts[:max_capacity]
|
||||||
|
|
||||||
|
# We need to process pairs of texts for each page
|
||||||
|
text_pairs = [texts[i:i+2] for i in range(0, len(texts), 2)]
|
||||||
|
|
||||||
|
for page_idx, pair in enumerate(text_pairs):
|
||||||
|
if page_idx >= total_pages:
|
||||||
|
break # Should be caught by the truncation above, but safety first
|
||||||
|
|
||||||
|
# Create a new blank page in memory to draw the text
|
||||||
|
packet = io.BytesIO()
|
||||||
|
can = canvas.Canvas(packet, pagesize=A4)
|
||||||
|
|
||||||
|
# Draw the text.
|
||||||
|
can.setFont("Helvetica", 12)
|
||||||
|
|
||||||
|
if len(pair) > 0:
|
||||||
|
can.drawString(x_pos, y_pos_1, pair[0])
|
||||||
|
if len(pair) > 1:
|
||||||
|
can.drawString(x_pos, y_pos_2, pair[1])
|
||||||
|
|
||||||
|
can.save()
|
||||||
|
packet.seek(0)
|
||||||
|
|
||||||
|
# Read the text PDF we just created
|
||||||
|
new_pdf = PdfReader(packet)
|
||||||
|
text_page = new_pdf.pages[0]
|
||||||
|
|
||||||
|
# Get the specific page from the original PDF
|
||||||
|
page_to_merge = reader.pages[page_idx]
|
||||||
|
page_to_merge.merge_page(text_page)
|
||||||
|
|
||||||
|
writer.add_page(page_to_merge)
|
||||||
|
|
||||||
|
# If there are pages left in the base PDF that we didn't use, append them too?
|
||||||
|
# Usually you'd want to keep them or discard them. We'll discard unused pages for now
|
||||||
|
# to avoid empty cards, or you can change this loop to include them.
|
||||||
|
|
||||||
|
with open(output_pdf_path, "wb") as output_file:
|
||||||
|
writer.write(output_file)
|
||||||
|
|
||||||
|
logger.info(f"Successfully generated overlaid PDF at {output_pdf_path}")
|
||||||
@@ -7,3 +7,7 @@ pandas==2.2.2
|
|||||||
weasyprint==62.1
|
weasyprint==62.1
|
||||||
jinja2==3.1.4
|
jinja2==3.1.4
|
||||||
pydyf==0.10.0
|
pydyf==0.10.0
|
||||||
|
sqlalchemy==2.0.31
|
||||||
|
requests==2.31.0
|
||||||
|
reportlab==4.0.9
|
||||||
|
PyPDF2==3.0.1
|
||||||
|
|||||||
73
fotograf-de-scraper/frontend/README.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# React + TypeScript + Vite
|
||||||
|
|
||||||
|
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
||||||
|
|
||||||
|
Currently, two official plugins are available:
|
||||||
|
|
||||||
|
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
|
||||||
|
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
|
||||||
|
|
||||||
|
## React Compiler
|
||||||
|
|
||||||
|
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
||||||
|
|
||||||
|
## Expanding the ESLint configuration
|
||||||
|
|
||||||
|
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
|
||||||
|
|
||||||
|
```js
|
||||||
|
export default defineConfig([
|
||||||
|
globalIgnores(['dist']),
|
||||||
|
{
|
||||||
|
files: ['**/*.{ts,tsx}'],
|
||||||
|
extends: [
|
||||||
|
// Other configs...
|
||||||
|
|
||||||
|
// Remove tseslint.configs.recommended and replace with this
|
||||||
|
tseslint.configs.recommendedTypeChecked,
|
||||||
|
// Alternatively, use this for stricter rules
|
||||||
|
tseslint.configs.strictTypeChecked,
|
||||||
|
// Optionally, add this for stylistic rules
|
||||||
|
tseslint.configs.stylisticTypeChecked,
|
||||||
|
|
||||||
|
// Other configs...
|
||||||
|
],
|
||||||
|
languageOptions: {
|
||||||
|
parserOptions: {
|
||||||
|
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
||||||
|
tsconfigRootDir: import.meta.dirname,
|
||||||
|
},
|
||||||
|
// other options...
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
|
||||||
|
|
||||||
|
```js
|
||||||
|
// eslint.config.js
|
||||||
|
import reactX from 'eslint-plugin-react-x'
|
||||||
|
import reactDom from 'eslint-plugin-react-dom'
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
globalIgnores(['dist']),
|
||||||
|
{
|
||||||
|
files: ['**/*.{ts,tsx}'],
|
||||||
|
extends: [
|
||||||
|
// Other configs...
|
||||||
|
// Enable lint rules for React
|
||||||
|
reactX.configs['recommended-typescript'],
|
||||||
|
// Enable lint rules for React DOM
|
||||||
|
reactDom.configs.recommended,
|
||||||
|
],
|
||||||
|
languageOptions: {
|
||||||
|
parserOptions: {
|
||||||
|
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
||||||
|
tsconfigRootDir: import.meta.dirname,
|
||||||
|
},
|
||||||
|
// other options...
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
```
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/acorn
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../acorn/bin/acorn
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/autoprefixer
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../autoprefixer/bin/autoprefixer
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/baseline-browser-mapping
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../baseline-browser-mapping/dist/cli.cjs
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/browserslist
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../browserslist/cli.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/cssesc
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../cssesc/bin/cssesc
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/eslint
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../eslint/bin/eslint.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/jiti
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../jiti/bin/jiti.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/js-yaml
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../js-yaml/bin/js-yaml.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/jsesc
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../jsesc/bin/jsesc
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/json5
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../json5/lib/cli.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/nanoid
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../nanoid/bin/nanoid.cjs
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/node-which
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../which/bin/node-which
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/parser
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../@babel/parser/bin/babel-parser.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/resolve
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../resolve/bin/resolve
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/rolldown
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../rolldown/bin/cli.mjs
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/semver
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../semver/bin/semver.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/sucrase
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../sucrase/bin/sucrase
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/sucrase-node
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../sucrase/bin/sucrase-node
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/tailwind
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../tailwindcss/lib/cli.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/tailwindcss
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../tailwindcss/lib/cli.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/tsc
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../typescript/bin/tsc
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/tsserver
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../typescript/bin/tsserver
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/update-browserslist-db
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../update-browserslist-db/cli.js
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.bin/vite
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../vite/bin/vite.js
|
||||||
3
fotograf-de-scraper/frontend/node_modules/.vite/deps/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"type": "module"
|
||||||
|
}
|
||||||
770
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-Na5-BvaJ.js
generated
vendored
Normal file
@@ -0,0 +1,770 @@
|
|||||||
|
//#region \0rolldown/runtime.js
|
||||||
|
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
||||||
|
//#endregion
|
||||||
|
//#region node_modules/react/cjs/react.development.js
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react.development.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
var require_react_development = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
||||||
|
(function() {
|
||||||
|
function defineDeprecationWarning(methodName, info) {
|
||||||
|
Object.defineProperty(Component.prototype, methodName, { get: function() {
|
||||||
|
console.warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]);
|
||||||
|
} });
|
||||||
|
}
|
||||||
|
function getIteratorFn(maybeIterable) {
|
||||||
|
if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
|
||||||
|
maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
|
||||||
|
return "function" === typeof maybeIterable ? maybeIterable : null;
|
||||||
|
}
|
||||||
|
function warnNoop(publicInstance, callerName) {
|
||||||
|
publicInstance = (publicInstance = publicInstance.constructor) && (publicInstance.displayName || publicInstance.name) || "ReactClass";
|
||||||
|
var warningKey = publicInstance + "." + callerName;
|
||||||
|
didWarnStateUpdateForUnmountedComponent[warningKey] || (console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, publicInstance), didWarnStateUpdateForUnmountedComponent[warningKey] = !0);
|
||||||
|
}
|
||||||
|
function Component(props, context, updater) {
|
||||||
|
this.props = props;
|
||||||
|
this.context = context;
|
||||||
|
this.refs = emptyObject;
|
||||||
|
this.updater = updater || ReactNoopUpdateQueue;
|
||||||
|
}
|
||||||
|
function ComponentDummy() {}
|
||||||
|
function PureComponent(props, context, updater) {
|
||||||
|
this.props = props;
|
||||||
|
this.context = context;
|
||||||
|
this.refs = emptyObject;
|
||||||
|
this.updater = updater || ReactNoopUpdateQueue;
|
||||||
|
}
|
||||||
|
function noop() {}
|
||||||
|
function testStringCoercion(value) {
|
||||||
|
return "" + value;
|
||||||
|
}
|
||||||
|
function checkKeyStringCoercion(value) {
|
||||||
|
try {
|
||||||
|
testStringCoercion(value);
|
||||||
|
var JSCompiler_inline_result = !1;
|
||||||
|
} catch (e) {
|
||||||
|
JSCompiler_inline_result = !0;
|
||||||
|
}
|
||||||
|
if (JSCompiler_inline_result) {
|
||||||
|
JSCompiler_inline_result = console;
|
||||||
|
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
||||||
|
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
||||||
|
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
|
||||||
|
return testStringCoercion(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getComponentNameFromType(type) {
|
||||||
|
if (null == type) return null;
|
||||||
|
if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
||||||
|
if ("string" === typeof type) return type;
|
||||||
|
switch (type) {
|
||||||
|
case REACT_FRAGMENT_TYPE: return "Fragment";
|
||||||
|
case REACT_PROFILER_TYPE: return "Profiler";
|
||||||
|
case REACT_STRICT_MODE_TYPE: return "StrictMode";
|
||||||
|
case REACT_SUSPENSE_TYPE: return "Suspense";
|
||||||
|
case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList";
|
||||||
|
case REACT_ACTIVITY_TYPE: return "Activity";
|
||||||
|
}
|
||||||
|
if ("object" === typeof type) switch ("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) {
|
||||||
|
case REACT_PORTAL_TYPE: return "Portal";
|
||||||
|
case REACT_CONTEXT_TYPE: return type.displayName || "Context";
|
||||||
|
case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer";
|
||||||
|
case REACT_FORWARD_REF_TYPE:
|
||||||
|
var innerType = type.render;
|
||||||
|
type = type.displayName;
|
||||||
|
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
|
||||||
|
return type;
|
||||||
|
case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
|
||||||
|
case REACT_LAZY_TYPE:
|
||||||
|
innerType = type._payload;
|
||||||
|
type = type._init;
|
||||||
|
try {
|
||||||
|
return getComponentNameFromType(type(innerType));
|
||||||
|
} catch (x) {}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function getTaskName(type) {
|
||||||
|
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
||||||
|
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>";
|
||||||
|
try {
|
||||||
|
var name = getComponentNameFromType(type);
|
||||||
|
return name ? "<" + name + ">" : "<...>";
|
||||||
|
} catch (x) {
|
||||||
|
return "<...>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getOwner() {
|
||||||
|
var dispatcher = ReactSharedInternals.A;
|
||||||
|
return null === dispatcher ? null : dispatcher.getOwner();
|
||||||
|
}
|
||||||
|
function UnknownOwner() {
|
||||||
|
return Error("react-stack-top-frame");
|
||||||
|
}
|
||||||
|
function hasValidKey(config) {
|
||||||
|
if (hasOwnProperty.call(config, "key")) {
|
||||||
|
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
||||||
|
if (getter && getter.isReactWarning) return !1;
|
||||||
|
}
|
||||||
|
return void 0 !== config.key;
|
||||||
|
}
|
||||||
|
function defineKeyPropWarningGetter(props, displayName) {
|
||||||
|
function warnAboutAccessingKey() {
|
||||||
|
specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
|
||||||
|
}
|
||||||
|
warnAboutAccessingKey.isReactWarning = !0;
|
||||||
|
Object.defineProperty(props, "key", {
|
||||||
|
get: warnAboutAccessingKey,
|
||||||
|
configurable: !0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function elementRefGetterWithDeprecationWarning() {
|
||||||
|
var componentName = getComponentNameFromType(this.type);
|
||||||
|
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
|
||||||
|
componentName = this.props.ref;
|
||||||
|
return void 0 !== componentName ? componentName : null;
|
||||||
|
}
|
||||||
|
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
||||||
|
var refProp = props.ref;
|
||||||
|
type = {
|
||||||
|
$$typeof: REACT_ELEMENT_TYPE,
|
||||||
|
type,
|
||||||
|
key,
|
||||||
|
props,
|
||||||
|
_owner: owner
|
||||||
|
};
|
||||||
|
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
get: elementRefGetterWithDeprecationWarning
|
||||||
|
}) : Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
type._store = {};
|
||||||
|
Object.defineProperty(type._store, "validated", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: 0
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugInfo", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugStack", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugStack
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugTask", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugTask
|
||||||
|
});
|
||||||
|
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
function cloneAndReplaceKey(oldElement, newKey) {
|
||||||
|
newKey = ReactElement(oldElement.type, newKey, oldElement.props, oldElement._owner, oldElement._debugStack, oldElement._debugTask);
|
||||||
|
oldElement._store && (newKey._store.validated = oldElement._store.validated);
|
||||||
|
return newKey;
|
||||||
|
}
|
||||||
|
function validateChildKeys(node) {
|
||||||
|
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
||||||
|
}
|
||||||
|
function isValidElement(object) {
|
||||||
|
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
||||||
|
}
|
||||||
|
function escape(key) {
|
||||||
|
var escaperLookup = {
|
||||||
|
"=": "=0",
|
||||||
|
":": "=2"
|
||||||
|
};
|
||||||
|
return "$" + key.replace(/[=:]/g, function(match) {
|
||||||
|
return escaperLookup[match];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function getElementKey(element, index) {
|
||||||
|
return "object" === typeof element && null !== element && null != element.key ? (checkKeyStringCoercion(element.key), escape("" + element.key)) : index.toString(36);
|
||||||
|
}
|
||||||
|
function resolveThenable(thenable) {
|
||||||
|
switch (thenable.status) {
|
||||||
|
case "fulfilled": return thenable.value;
|
||||||
|
case "rejected": throw thenable.reason;
|
||||||
|
default: switch ("string" === typeof thenable.status ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(function(fulfilledValue) {
|
||||||
|
"pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
|
||||||
|
}, function(error) {
|
||||||
|
"pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error);
|
||||||
|
})), thenable.status) {
|
||||||
|
case "fulfilled": return thenable.value;
|
||||||
|
case "rejected": throw thenable.reason;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw thenable;
|
||||||
|
}
|
||||||
|
function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
|
||||||
|
var type = typeof children;
|
||||||
|
if ("undefined" === type || "boolean" === type) children = null;
|
||||||
|
var invokeCallback = !1;
|
||||||
|
if (null === children) invokeCallback = !0;
|
||||||
|
else switch (type) {
|
||||||
|
case "bigint":
|
||||||
|
case "string":
|
||||||
|
case "number":
|
||||||
|
invokeCallback = !0;
|
||||||
|
break;
|
||||||
|
case "object": switch (children.$$typeof) {
|
||||||
|
case REACT_ELEMENT_TYPE:
|
||||||
|
case REACT_PORTAL_TYPE:
|
||||||
|
invokeCallback = !0;
|
||||||
|
break;
|
||||||
|
case REACT_LAZY_TYPE: return invokeCallback = children._init, mapIntoArray(invokeCallback(children._payload), array, escapedPrefix, nameSoFar, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (invokeCallback) {
|
||||||
|
invokeCallback = children;
|
||||||
|
callback = callback(invokeCallback);
|
||||||
|
var childKey = "" === nameSoFar ? "." + getElementKey(invokeCallback, 0) : nameSoFar;
|
||||||
|
isArrayImpl(callback) ? (escapedPrefix = "", null != childKey && (escapedPrefix = childKey.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) {
|
||||||
|
return c;
|
||||||
|
})) : null != callback && (isValidElement(callback) && (null != callback.key && (invokeCallback && invokeCallback.key === callback.key || checkKeyStringCoercion(callback.key)), escapedPrefix = cloneAndReplaceKey(callback, escapedPrefix + (null == callback.key || invokeCallback && invokeCallback.key === callback.key ? "" : ("" + callback.key).replace(userProvidedKeyEscapeRegex, "$&/") + "/") + childKey), "" !== nameSoFar && null != invokeCallback && isValidElement(invokeCallback) && null == invokeCallback.key && invokeCallback._store && !invokeCallback._store.validated && (escapedPrefix._store.validated = 2), callback = escapedPrefix), array.push(callback));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
invokeCallback = 0;
|
||||||
|
childKey = "" === nameSoFar ? "." : nameSoFar + ":";
|
||||||
|
if (isArrayImpl(children)) for (var i = 0; i < children.length; i++) nameSoFar = children[i], type = childKey + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback);
|
||||||
|
else if (i = getIteratorFn(children), "function" === typeof i) for (i === children.entries && (didWarnAboutMaps || console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."), didWarnAboutMaps = !0), children = i.call(children), i = 0; !(nameSoFar = children.next()).done;) nameSoFar = nameSoFar.value, type = childKey + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback);
|
||||||
|
else if ("object" === type) {
|
||||||
|
if ("function" === typeof children.then) return mapIntoArray(resolveThenable(children), array, escapedPrefix, nameSoFar, callback);
|
||||||
|
array = String(children);
|
||||||
|
throw Error("Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead.");
|
||||||
|
}
|
||||||
|
return invokeCallback;
|
||||||
|
}
|
||||||
|
function mapChildren(children, func, context) {
|
||||||
|
if (null == children) return children;
|
||||||
|
var result = [], count = 0;
|
||||||
|
mapIntoArray(children, result, "", "", function(child) {
|
||||||
|
return func.call(context, child, count++);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function lazyInitializer(payload) {
|
||||||
|
if (-1 === payload._status) {
|
||||||
|
var ioInfo = payload._ioInfo;
|
||||||
|
null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());
|
||||||
|
ioInfo = payload._result;
|
||||||
|
var thenable = ioInfo();
|
||||||
|
thenable.then(function(moduleObject) {
|
||||||
|
if (0 === payload._status || -1 === payload._status) {
|
||||||
|
payload._status = 1;
|
||||||
|
payload._result = moduleObject;
|
||||||
|
var _ioInfo = payload._ioInfo;
|
||||||
|
null != _ioInfo && (_ioInfo.end = performance.now());
|
||||||
|
void 0 === thenable.status && (thenable.status = "fulfilled", thenable.value = moduleObject);
|
||||||
|
}
|
||||||
|
}, function(error) {
|
||||||
|
if (0 === payload._status || -1 === payload._status) {
|
||||||
|
payload._status = 2;
|
||||||
|
payload._result = error;
|
||||||
|
var _ioInfo2 = payload._ioInfo;
|
||||||
|
null != _ioInfo2 && (_ioInfo2.end = performance.now());
|
||||||
|
void 0 === thenable.status && (thenable.status = "rejected", thenable.reason = error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ioInfo = payload._ioInfo;
|
||||||
|
if (null != ioInfo) {
|
||||||
|
ioInfo.value = thenable;
|
||||||
|
var displayName = thenable.displayName;
|
||||||
|
"string" === typeof displayName && (ioInfo.name = displayName);
|
||||||
|
}
|
||||||
|
-1 === payload._status && (payload._status = 0, payload._result = thenable);
|
||||||
|
}
|
||||||
|
if (1 === payload._status) return ioInfo = payload._result, void 0 === ioInfo && console.error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?", ioInfo), "default" in ioInfo || console.error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))", ioInfo), ioInfo.default;
|
||||||
|
throw payload._result;
|
||||||
|
}
|
||||||
|
function resolveDispatcher() {
|
||||||
|
var dispatcher = ReactSharedInternals.H;
|
||||||
|
null === dispatcher && console.error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.");
|
||||||
|
return dispatcher;
|
||||||
|
}
|
||||||
|
function releaseAsyncTransition() {
|
||||||
|
ReactSharedInternals.asyncTransitions--;
|
||||||
|
}
|
||||||
|
function enqueueTask(task) {
|
||||||
|
if (null === enqueueTaskImpl) try {
|
||||||
|
var requireString = ("require" + Math.random()).slice(0, 7);
|
||||||
|
enqueueTaskImpl = (module && module[requireString]).call(module, "timers").setImmediate;
|
||||||
|
} catch (_err) {
|
||||||
|
enqueueTaskImpl = function(callback) {
|
||||||
|
!1 === didWarnAboutMessageChannel && (didWarnAboutMessageChannel = !0, "undefined" === typeof MessageChannel && console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));
|
||||||
|
var channel = new MessageChannel();
|
||||||
|
channel.port1.onmessage = callback;
|
||||||
|
channel.port2.postMessage(void 0);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return enqueueTaskImpl(task);
|
||||||
|
}
|
||||||
|
function aggregateErrors(errors) {
|
||||||
|
return 1 < errors.length && "function" === typeof AggregateError ? new AggregateError(errors) : errors[0];
|
||||||
|
}
|
||||||
|
function popActScope(prevActQueue, prevActScopeDepth) {
|
||||||
|
prevActScopeDepth !== actScopeDepth - 1 && console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. ");
|
||||||
|
actScopeDepth = prevActScopeDepth;
|
||||||
|
}
|
||||||
|
function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
|
||||||
|
var queue = ReactSharedInternals.actQueue;
|
||||||
|
if (null !== queue) if (0 !== queue.length) try {
|
||||||
|
flushActQueue(queue);
|
||||||
|
enqueueTask(function() {
|
||||||
|
return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} catch (error) {
|
||||||
|
ReactSharedInternals.thrownErrors.push(error);
|
||||||
|
}
|
||||||
|
else ReactSharedInternals.actQueue = null;
|
||||||
|
0 < ReactSharedInternals.thrownErrors.length ? (queue = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(queue)) : resolve(returnValue);
|
||||||
|
}
|
||||||
|
function flushActQueue(queue) {
|
||||||
|
if (!isFlushing) {
|
||||||
|
isFlushing = !0;
|
||||||
|
var i = 0;
|
||||||
|
try {
|
||||||
|
for (; i < queue.length; i++) {
|
||||||
|
var callback = queue[i];
|
||||||
|
do {
|
||||||
|
ReactSharedInternals.didUsePromise = !1;
|
||||||
|
var continuation = callback(!1);
|
||||||
|
if (null !== continuation) {
|
||||||
|
if (ReactSharedInternals.didUsePromise) {
|
||||||
|
queue[i] = callback;
|
||||||
|
queue.splice(0, i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback = continuation;
|
||||||
|
} else break;
|
||||||
|
} while (1);
|
||||||
|
}
|
||||||
|
queue.length = 0;
|
||||||
|
} catch (error) {
|
||||||
|
queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);
|
||||||
|
} finally {
|
||||||
|
isFlushing = !1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
||||||
|
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, didWarnStateUpdateForUnmountedComponent = {}, ReactNoopUpdateQueue = {
|
||||||
|
isMounted: function() {
|
||||||
|
return !1;
|
||||||
|
},
|
||||||
|
enqueueForceUpdate: function(publicInstance) {
|
||||||
|
warnNoop(publicInstance, "forceUpdate");
|
||||||
|
},
|
||||||
|
enqueueReplaceState: function(publicInstance) {
|
||||||
|
warnNoop(publicInstance, "replaceState");
|
||||||
|
},
|
||||||
|
enqueueSetState: function(publicInstance) {
|
||||||
|
warnNoop(publicInstance, "setState");
|
||||||
|
}
|
||||||
|
}, assign = Object.assign, emptyObject = {};
|
||||||
|
Object.freeze(emptyObject);
|
||||||
|
Component.prototype.isReactComponent = {};
|
||||||
|
Component.prototype.setState = function(partialState, callback) {
|
||||||
|
if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState) throw Error("takes an object of state variables to update or a function which returns an object of state variables.");
|
||||||
|
this.updater.enqueueSetState(this, partialState, callback, "setState");
|
||||||
|
};
|
||||||
|
Component.prototype.forceUpdate = function(callback) {
|
||||||
|
this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
|
||||||
|
};
|
||||||
|
var deprecatedAPIs = {
|
||||||
|
isMounted: ["isMounted", "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],
|
||||||
|
replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]
|
||||||
|
};
|
||||||
|
for (fnName in deprecatedAPIs) deprecatedAPIs.hasOwnProperty(fnName) && defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
|
||||||
|
ComponentDummy.prototype = Component.prototype;
|
||||||
|
deprecatedAPIs = PureComponent.prototype = new ComponentDummy();
|
||||||
|
deprecatedAPIs.constructor = PureComponent;
|
||||||
|
assign(deprecatedAPIs, Component.prototype);
|
||||||
|
deprecatedAPIs.isPureReactComponent = !0;
|
||||||
|
var isArrayImpl = Array.isArray, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = {
|
||||||
|
H: null,
|
||||||
|
A: null,
|
||||||
|
T: null,
|
||||||
|
S: null,
|
||||||
|
actQueue: null,
|
||||||
|
asyncTransitions: 0,
|
||||||
|
isBatchingLegacy: !1,
|
||||||
|
didScheduleLegacyUpdate: !1,
|
||||||
|
didUsePromise: !1,
|
||||||
|
thrownErrors: [],
|
||||||
|
getCurrentStack: null,
|
||||||
|
recentlyCreatedOwnerStacks: 0
|
||||||
|
}, hasOwnProperty = Object.prototype.hasOwnProperty, createTask = console.createTask ? console.createTask : function() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
deprecatedAPIs = { react_stack_bottom_frame: function(callStackForError) {
|
||||||
|
return callStackForError();
|
||||||
|
} };
|
||||||
|
var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;
|
||||||
|
var didWarnAboutElementRef = {};
|
||||||
|
var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(deprecatedAPIs, UnknownOwner)();
|
||||||
|
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
||||||
|
var didWarnAboutMaps = !1, userProvidedKeyEscapeRegex = /\/+/g, reportGlobalError = "function" === typeof reportError ? reportError : function(error) {
|
||||||
|
if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
|
||||||
|
var event = new window.ErrorEvent("error", {
|
||||||
|
bubbles: !0,
|
||||||
|
cancelable: !0,
|
||||||
|
message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error),
|
||||||
|
error
|
||||||
|
});
|
||||||
|
if (!window.dispatchEvent(event)) return;
|
||||||
|
} else if ("object" === typeof process && "function" === typeof process.emit) {
|
||||||
|
process.emit("uncaughtException", error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.error(error);
|
||||||
|
}, didWarnAboutMessageChannel = !1, enqueueTaskImpl = null, actScopeDepth = 0, didWarnNoAwaitAct = !1, isFlushing = !1, queueSeveralMicrotasks = "function" === typeof queueMicrotask ? function(callback) {
|
||||||
|
queueMicrotask(function() {
|
||||||
|
return queueMicrotask(callback);
|
||||||
|
});
|
||||||
|
} : enqueueTask;
|
||||||
|
deprecatedAPIs = Object.freeze({
|
||||||
|
__proto__: null,
|
||||||
|
c: function(size) {
|
||||||
|
return resolveDispatcher().useMemoCache(size);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var fnName = {
|
||||||
|
map: mapChildren,
|
||||||
|
forEach: function(children, forEachFunc, forEachContext) {
|
||||||
|
mapChildren(children, function() {
|
||||||
|
forEachFunc.apply(this, arguments);
|
||||||
|
}, forEachContext);
|
||||||
|
},
|
||||||
|
count: function(children) {
|
||||||
|
var n = 0;
|
||||||
|
mapChildren(children, function() {
|
||||||
|
n++;
|
||||||
|
});
|
||||||
|
return n;
|
||||||
|
},
|
||||||
|
toArray: function(children) {
|
||||||
|
return mapChildren(children, function(child) {
|
||||||
|
return child;
|
||||||
|
}) || [];
|
||||||
|
},
|
||||||
|
only: function(children) {
|
||||||
|
if (!isValidElement(children)) throw Error("React.Children.only expected to receive a single React element child.");
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.Activity = REACT_ACTIVITY_TYPE;
|
||||||
|
exports.Children = fnName;
|
||||||
|
exports.Component = Component;
|
||||||
|
exports.Fragment = REACT_FRAGMENT_TYPE;
|
||||||
|
exports.Profiler = REACT_PROFILER_TYPE;
|
||||||
|
exports.PureComponent = PureComponent;
|
||||||
|
exports.StrictMode = REACT_STRICT_MODE_TYPE;
|
||||||
|
exports.Suspense = REACT_SUSPENSE_TYPE;
|
||||||
|
exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
|
||||||
|
exports.__COMPILER_RUNTIME = deprecatedAPIs;
|
||||||
|
exports.act = function(callback) {
|
||||||
|
var prevActQueue = ReactSharedInternals.actQueue, prevActScopeDepth = actScopeDepth;
|
||||||
|
actScopeDepth++;
|
||||||
|
var queue = ReactSharedInternals.actQueue = null !== prevActQueue ? prevActQueue : [], didAwaitActCall = !1;
|
||||||
|
try {
|
||||||
|
var result = callback();
|
||||||
|
} catch (error) {
|
||||||
|
ReactSharedInternals.thrownErrors.push(error);
|
||||||
|
}
|
||||||
|
if (0 < ReactSharedInternals.thrownErrors.length) throw popActScope(prevActQueue, prevActScopeDepth), callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
|
||||||
|
if (null !== result && "object" === typeof result && "function" === typeof result.then) {
|
||||||
|
var thenable = result;
|
||||||
|
queueSeveralMicrotasks(function() {
|
||||||
|
didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = !0, console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"));
|
||||||
|
});
|
||||||
|
return { then: function(resolve, reject) {
|
||||||
|
didAwaitActCall = !0;
|
||||||
|
thenable.then(function(returnValue) {
|
||||||
|
popActScope(prevActQueue, prevActScopeDepth);
|
||||||
|
if (0 === prevActScopeDepth) {
|
||||||
|
try {
|
||||||
|
flushActQueue(queue), enqueueTask(function() {
|
||||||
|
return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
||||||
|
});
|
||||||
|
} catch (error$0) {
|
||||||
|
ReactSharedInternals.thrownErrors.push(error$0);
|
||||||
|
}
|
||||||
|
if (0 < ReactSharedInternals.thrownErrors.length) {
|
||||||
|
var _thrownError = aggregateErrors(ReactSharedInternals.thrownErrors);
|
||||||
|
ReactSharedInternals.thrownErrors.length = 0;
|
||||||
|
reject(_thrownError);
|
||||||
|
}
|
||||||
|
} else resolve(returnValue);
|
||||||
|
}, function(error) {
|
||||||
|
popActScope(prevActQueue, prevActScopeDepth);
|
||||||
|
0 < ReactSharedInternals.thrownErrors.length ? (error = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(error)) : reject(error);
|
||||||
|
});
|
||||||
|
} };
|
||||||
|
}
|
||||||
|
var returnValue$jscomp$0 = result;
|
||||||
|
popActScope(prevActQueue, prevActScopeDepth);
|
||||||
|
0 === prevActScopeDepth && (flushActQueue(queue), 0 !== queue.length && queueSeveralMicrotasks(function() {
|
||||||
|
didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = !0, console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"));
|
||||||
|
}), ReactSharedInternals.actQueue = null);
|
||||||
|
if (0 < ReactSharedInternals.thrownErrors.length) throw callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
|
||||||
|
return { then: function(resolve, reject) {
|
||||||
|
didAwaitActCall = !0;
|
||||||
|
0 === prevActScopeDepth ? (ReactSharedInternals.actQueue = queue, enqueueTask(function() {
|
||||||
|
return recursivelyFlushAsyncActWork(returnValue$jscomp$0, resolve, reject);
|
||||||
|
})) : resolve(returnValue$jscomp$0);
|
||||||
|
} };
|
||||||
|
};
|
||||||
|
exports.cache = function(fn) {
|
||||||
|
return function() {
|
||||||
|
return fn.apply(null, arguments);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
exports.cacheSignal = function() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
exports.captureOwnerStack = function() {
|
||||||
|
var getCurrentStack = ReactSharedInternals.getCurrentStack;
|
||||||
|
return null === getCurrentStack ? null : getCurrentStack();
|
||||||
|
};
|
||||||
|
exports.cloneElement = function(element, config, children) {
|
||||||
|
if (null === element || void 0 === element) throw Error("The argument must be a React element, but you passed " + element + ".");
|
||||||
|
var props = assign({}, element.props), key = element.key, owner = element._owner;
|
||||||
|
if (null != config) {
|
||||||
|
var JSCompiler_inline_result;
|
||||||
|
a: {
|
||||||
|
if (hasOwnProperty.call(config, "ref") && (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(config, "ref").get) && JSCompiler_inline_result.isReactWarning) {
|
||||||
|
JSCompiler_inline_result = !1;
|
||||||
|
break a;
|
||||||
|
}
|
||||||
|
JSCompiler_inline_result = void 0 !== config.ref;
|
||||||
|
}
|
||||||
|
JSCompiler_inline_result && (owner = getOwner());
|
||||||
|
hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key);
|
||||||
|
for (propName in config) !hasOwnProperty.call(config, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config.ref || (props[propName] = config[propName]);
|
||||||
|
}
|
||||||
|
var propName = arguments.length - 2;
|
||||||
|
if (1 === propName) props.children = children;
|
||||||
|
else if (1 < propName) {
|
||||||
|
JSCompiler_inline_result = Array(propName);
|
||||||
|
for (var i = 0; i < propName; i++) JSCompiler_inline_result[i] = arguments[i + 2];
|
||||||
|
props.children = JSCompiler_inline_result;
|
||||||
|
}
|
||||||
|
props = ReactElement(element.type, key, props, owner, element._debugStack, element._debugTask);
|
||||||
|
for (key = 2; key < arguments.length; key++) validateChildKeys(arguments[key]);
|
||||||
|
return props;
|
||||||
|
};
|
||||||
|
exports.createContext = function(defaultValue) {
|
||||||
|
defaultValue = {
|
||||||
|
$$typeof: REACT_CONTEXT_TYPE,
|
||||||
|
_currentValue: defaultValue,
|
||||||
|
_currentValue2: defaultValue,
|
||||||
|
_threadCount: 0,
|
||||||
|
Provider: null,
|
||||||
|
Consumer: null
|
||||||
|
};
|
||||||
|
defaultValue.Provider = defaultValue;
|
||||||
|
defaultValue.Consumer = {
|
||||||
|
$$typeof: REACT_CONSUMER_TYPE,
|
||||||
|
_context: defaultValue
|
||||||
|
};
|
||||||
|
defaultValue._currentRenderer = null;
|
||||||
|
defaultValue._currentRenderer2 = null;
|
||||||
|
return defaultValue;
|
||||||
|
};
|
||||||
|
exports.createElement = function(type, config, children) {
|
||||||
|
for (var i = 2; i < arguments.length; i++) validateChildKeys(arguments[i]);
|
||||||
|
i = {};
|
||||||
|
var key = null;
|
||||||
|
if (null != config) for (propName in didWarnAboutOldJSXRuntime || !("__self" in config) || "key" in config || (didWarnAboutOldJSXRuntime = !0, console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")), hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key), config) hasOwnProperty.call(config, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (i[propName] = config[propName]);
|
||||||
|
var childrenLength = arguments.length - 2;
|
||||||
|
if (1 === childrenLength) i.children = children;
|
||||||
|
else if (1 < childrenLength) {
|
||||||
|
for (var childArray = Array(childrenLength), _i = 0; _i < childrenLength; _i++) childArray[_i] = arguments[_i + 2];
|
||||||
|
Object.freeze && Object.freeze(childArray);
|
||||||
|
i.children = childArray;
|
||||||
|
}
|
||||||
|
if (type && type.defaultProps) for (propName in childrenLength = type.defaultProps, childrenLength) void 0 === i[propName] && (i[propName] = childrenLength[propName]);
|
||||||
|
key && defineKeyPropWarningGetter(i, "function" === typeof type ? type.displayName || type.name || "Unknown" : type);
|
||||||
|
var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||||
|
return ReactElement(type, key, i, getOwner(), propName ? Error("react-stack-top-frame") : unknownOwnerDebugStack, propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
||||||
|
};
|
||||||
|
exports.createRef = function() {
|
||||||
|
var refObject = { current: null };
|
||||||
|
Object.seal(refObject);
|
||||||
|
return refObject;
|
||||||
|
};
|
||||||
|
exports.forwardRef = function(render) {
|
||||||
|
null != render && render.$$typeof === REACT_MEMO_TYPE ? console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).") : "function" !== typeof render ? console.error("forwardRef requires a render function but was given %s.", null === render ? "null" : typeof render) : 0 !== render.length && 2 !== render.length && console.error("forwardRef render functions accept exactly two parameters: props and ref. %s", 1 === render.length ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined.");
|
||||||
|
null != render && null != render.defaultProps && console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");
|
||||||
|
var elementType = {
|
||||||
|
$$typeof: REACT_FORWARD_REF_TYPE,
|
||||||
|
render
|
||||||
|
}, ownName;
|
||||||
|
Object.defineProperty(elementType, "displayName", {
|
||||||
|
enumerable: !1,
|
||||||
|
configurable: !0,
|
||||||
|
get: function() {
|
||||||
|
return ownName;
|
||||||
|
},
|
||||||
|
set: function(name) {
|
||||||
|
ownName = name;
|
||||||
|
render.name || render.displayName || (Object.defineProperty(render, "name", { value: name }), render.displayName = name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return elementType;
|
||||||
|
};
|
||||||
|
exports.isValidElement = isValidElement;
|
||||||
|
exports.lazy = function(ctor) {
|
||||||
|
ctor = {
|
||||||
|
_status: -1,
|
||||||
|
_result: ctor
|
||||||
|
};
|
||||||
|
var lazyType = {
|
||||||
|
$$typeof: REACT_LAZY_TYPE,
|
||||||
|
_payload: ctor,
|
||||||
|
_init: lazyInitializer
|
||||||
|
}, ioInfo = {
|
||||||
|
name: "lazy",
|
||||||
|
start: -1,
|
||||||
|
end: -1,
|
||||||
|
value: null,
|
||||||
|
owner: null,
|
||||||
|
debugStack: Error("react-stack-top-frame"),
|
||||||
|
debugTask: console.createTask ? console.createTask("lazy()") : null
|
||||||
|
};
|
||||||
|
ctor._ioInfo = ioInfo;
|
||||||
|
lazyType._debugInfo = [{ awaited: ioInfo }];
|
||||||
|
return lazyType;
|
||||||
|
};
|
||||||
|
exports.memo = function(type, compare) {
|
||||||
|
type ?? console.error("memo: The first argument must be a component. Instead received: %s", null === type ? "null" : typeof type);
|
||||||
|
compare = {
|
||||||
|
$$typeof: REACT_MEMO_TYPE,
|
||||||
|
type,
|
||||||
|
compare: void 0 === compare ? null : compare
|
||||||
|
};
|
||||||
|
var ownName;
|
||||||
|
Object.defineProperty(compare, "displayName", {
|
||||||
|
enumerable: !1,
|
||||||
|
configurable: !0,
|
||||||
|
get: function() {
|
||||||
|
return ownName;
|
||||||
|
},
|
||||||
|
set: function(name) {
|
||||||
|
ownName = name;
|
||||||
|
type.name || type.displayName || (Object.defineProperty(type, "name", { value: name }), type.displayName = name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return compare;
|
||||||
|
};
|
||||||
|
exports.startTransition = function(scope) {
|
||||||
|
var prevTransition = ReactSharedInternals.T, currentTransition = {};
|
||||||
|
currentTransition._updatedFibers = /* @__PURE__ */ new Set();
|
||||||
|
ReactSharedInternals.T = currentTransition;
|
||||||
|
try {
|
||||||
|
var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
|
||||||
|
null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
|
||||||
|
"object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && (ReactSharedInternals.asyncTransitions++, returnValue.then(releaseAsyncTransition, releaseAsyncTransition), returnValue.then(noop, reportGlobalError));
|
||||||
|
} catch (error) {
|
||||||
|
reportGlobalError(error);
|
||||||
|
} finally {
|
||||||
|
null === prevTransition && currentTransition._updatedFibers && (scope = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < scope && console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")), null !== prevTransition && null !== currentTransition.types && (null !== prevTransition.types && prevTransition.types !== currentTransition.types && console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.unstable_useCacheRefresh = function() {
|
||||||
|
return resolveDispatcher().useCacheRefresh();
|
||||||
|
};
|
||||||
|
exports.use = function(usable) {
|
||||||
|
return resolveDispatcher().use(usable);
|
||||||
|
};
|
||||||
|
exports.useActionState = function(action, initialState, permalink) {
|
||||||
|
return resolveDispatcher().useActionState(action, initialState, permalink);
|
||||||
|
};
|
||||||
|
exports.useCallback = function(callback, deps) {
|
||||||
|
return resolveDispatcher().useCallback(callback, deps);
|
||||||
|
};
|
||||||
|
exports.useContext = function(Context) {
|
||||||
|
var dispatcher = resolveDispatcher();
|
||||||
|
Context.$$typeof === REACT_CONSUMER_TYPE && console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?");
|
||||||
|
return dispatcher.useContext(Context);
|
||||||
|
};
|
||||||
|
exports.useDebugValue = function(value, formatterFn) {
|
||||||
|
return resolveDispatcher().useDebugValue(value, formatterFn);
|
||||||
|
};
|
||||||
|
exports.useDeferredValue = function(value, initialValue) {
|
||||||
|
return resolveDispatcher().useDeferredValue(value, initialValue);
|
||||||
|
};
|
||||||
|
exports.useEffect = function(create, deps) {
|
||||||
|
create ?? console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
||||||
|
return resolveDispatcher().useEffect(create, deps);
|
||||||
|
};
|
||||||
|
exports.useEffectEvent = function(callback) {
|
||||||
|
return resolveDispatcher().useEffectEvent(callback);
|
||||||
|
};
|
||||||
|
exports.useId = function() {
|
||||||
|
return resolveDispatcher().useId();
|
||||||
|
};
|
||||||
|
exports.useImperativeHandle = function(ref, create, deps) {
|
||||||
|
return resolveDispatcher().useImperativeHandle(ref, create, deps);
|
||||||
|
};
|
||||||
|
exports.useInsertionEffect = function(create, deps) {
|
||||||
|
create ?? console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
||||||
|
return resolveDispatcher().useInsertionEffect(create, deps);
|
||||||
|
};
|
||||||
|
exports.useLayoutEffect = function(create, deps) {
|
||||||
|
create ?? console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
||||||
|
return resolveDispatcher().useLayoutEffect(create, deps);
|
||||||
|
};
|
||||||
|
exports.useMemo = function(create, deps) {
|
||||||
|
return resolveDispatcher().useMemo(create, deps);
|
||||||
|
};
|
||||||
|
exports.useOptimistic = function(passthrough, reducer) {
|
||||||
|
return resolveDispatcher().useOptimistic(passthrough, reducer);
|
||||||
|
};
|
||||||
|
exports.useReducer = function(reducer, initialArg, init) {
|
||||||
|
return resolveDispatcher().useReducer(reducer, initialArg, init);
|
||||||
|
};
|
||||||
|
exports.useRef = function(initialValue) {
|
||||||
|
return resolveDispatcher().useRef(initialValue);
|
||||||
|
};
|
||||||
|
exports.useState = function(initialState) {
|
||||||
|
return resolveDispatcher().useState(initialState);
|
||||||
|
};
|
||||||
|
exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
|
||||||
|
return resolveDispatcher().useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
||||||
|
};
|
||||||
|
exports.useTransition = function() {
|
||||||
|
return resolveDispatcher().useTransition();
|
||||||
|
};
|
||||||
|
exports.version = "19.2.4";
|
||||||
|
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
||||||
|
})();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
//#region node_modules/react/index.js
|
||||||
|
var require_react = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
||||||
|
module.exports = require_react_development();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
export { __commonJSMin as n, require_react as t };
|
||||||
|
|
||||||
|
//# sourceMappingURL=react-Na5-BvaJ.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-Na5-BvaJ.js.map
generated
vendored
Normal file
185
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-dom.js
generated
vendored
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
import { n as __commonJSMin, t as require_react } from "./react-Na5-BvaJ.js";
|
||||||
|
//#region node_modules/react-dom/cjs/react-dom.development.js
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react-dom.development.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
var require_react_dom_development = /* @__PURE__ */ __commonJSMin(((exports) => {
|
||||||
|
(function() {
|
||||||
|
function noop() {}
|
||||||
|
function testStringCoercion(value) {
|
||||||
|
return "" + value;
|
||||||
|
}
|
||||||
|
function createPortal$1(children, containerInfo, implementation) {
|
||||||
|
var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
|
||||||
|
try {
|
||||||
|
testStringCoercion(key);
|
||||||
|
var JSCompiler_inline_result = !1;
|
||||||
|
} catch (e) {
|
||||||
|
JSCompiler_inline_result = !0;
|
||||||
|
}
|
||||||
|
JSCompiler_inline_result && (console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", "function" === typeof Symbol && Symbol.toStringTag && key[Symbol.toStringTag] || key.constructor.name || "Object"), testStringCoercion(key));
|
||||||
|
return {
|
||||||
|
$$typeof: REACT_PORTAL_TYPE,
|
||||||
|
key: null == key ? null : "" + key,
|
||||||
|
children,
|
||||||
|
containerInfo,
|
||||||
|
implementation
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function getCrossOriginStringAs(as, input) {
|
||||||
|
if ("font" === as) return "";
|
||||||
|
if ("string" === typeof input) return "use-credentials" === input ? input : "";
|
||||||
|
}
|
||||||
|
function getValueDescriptorExpectingObjectForWarning(thing) {
|
||||||
|
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "something with type \"" + typeof thing + "\"";
|
||||||
|
}
|
||||||
|
function getValueDescriptorExpectingEnumForWarning(thing) {
|
||||||
|
return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "string" === typeof thing ? JSON.stringify(thing) : "number" === typeof thing ? "`" + thing + "`" : "something with type \"" + typeof thing + "\"";
|
||||||
|
}
|
||||||
|
function resolveDispatcher() {
|
||||||
|
var dispatcher = ReactSharedInternals.H;
|
||||||
|
null === dispatcher && console.error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.");
|
||||||
|
return dispatcher;
|
||||||
|
}
|
||||||
|
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
||||||
|
var React = require_react(), Internals = {
|
||||||
|
d: {
|
||||||
|
f: noop,
|
||||||
|
r: function() {
|
||||||
|
throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.");
|
||||||
|
},
|
||||||
|
D: noop,
|
||||||
|
C: noop,
|
||||||
|
L: noop,
|
||||||
|
m: noop,
|
||||||
|
X: noop,
|
||||||
|
S: noop,
|
||||||
|
M: noop
|
||||||
|
},
|
||||||
|
p: 0,
|
||||||
|
findDOMNode: null
|
||||||
|
}, REACT_PORTAL_TYPE = Symbol.for("react.portal"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
||||||
|
"function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills");
|
||||||
|
exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;
|
||||||
|
exports.createPortal = function(children, container) {
|
||||||
|
var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
|
||||||
|
if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType) throw Error("Target container is not a DOM element.");
|
||||||
|
return createPortal$1(children, container, null, key);
|
||||||
|
};
|
||||||
|
exports.flushSync = function(fn) {
|
||||||
|
var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;
|
||||||
|
try {
|
||||||
|
if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn();
|
||||||
|
} finally {
|
||||||
|
ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f() && console.error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.preconnect = function(href, options) {
|
||||||
|
"string" === typeof href && href ? null != options && "object" !== typeof options ? console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.", getValueDescriptorExpectingEnumForWarning(options)) : null != options && "string" !== typeof options.crossOrigin && console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.", getValueDescriptorExpectingObjectForWarning(options.crossOrigin)) : console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href));
|
||||||
|
"string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options));
|
||||||
|
};
|
||||||
|
exports.prefetchDNS = function(href) {
|
||||||
|
if ("string" !== typeof href || !href) console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href));
|
||||||
|
else if (1 < arguments.length) {
|
||||||
|
var options = arguments[1];
|
||||||
|
"object" === typeof options && options.hasOwnProperty("crossOrigin") ? console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", getValueDescriptorExpectingEnumForWarning(options)) : console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", getValueDescriptorExpectingEnumForWarning(options));
|
||||||
|
}
|
||||||
|
"string" === typeof href && Internals.d.D(href);
|
||||||
|
};
|
||||||
|
exports.preinit = function(href, options) {
|
||||||
|
"string" === typeof href && href ? null == options || "object" !== typeof options ? console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.", getValueDescriptorExpectingEnumForWarning(options)) : "style" !== options.as && "script" !== options.as && console.error("ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".", getValueDescriptorExpectingEnumForWarning(options.as)) : console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href));
|
||||||
|
if ("string" === typeof href && options && "string" === typeof options.as) {
|
||||||
|
var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0;
|
||||||
|
"style" === as ? Internals.d.S(href, "string" === typeof options.precedence ? options.precedence : void 0, {
|
||||||
|
crossOrigin,
|
||||||
|
integrity,
|
||||||
|
fetchPriority
|
||||||
|
}) : "script" === as && Internals.d.X(href, {
|
||||||
|
crossOrigin,
|
||||||
|
integrity,
|
||||||
|
fetchPriority,
|
||||||
|
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.preinitModule = function(href, options) {
|
||||||
|
var encountered = "";
|
||||||
|
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||||
|
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "script" !== options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingEnumForWarning(options.as) + ".");
|
||||||
|
if (encountered) console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s", encountered);
|
||||||
|
else switch (encountered = options && "string" === typeof options.as ? options.as : "script", encountered) {
|
||||||
|
case "script": break;
|
||||||
|
default: encountered = getValueDescriptorExpectingEnumForWarning(encountered), console.error("ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)", encountered, href);
|
||||||
|
}
|
||||||
|
if ("string" === typeof href) if ("object" === typeof options && null !== options) {
|
||||||
|
if (null == options.as || "script" === options.as) encountered = getCrossOriginStringAs(options.as, options.crossOrigin), Internals.d.M(href, {
|
||||||
|
crossOrigin: encountered,
|
||||||
|
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||||
|
nonce: "string" === typeof options.nonce ? options.nonce : void 0
|
||||||
|
});
|
||||||
|
} else options ?? Internals.d.M(href);
|
||||||
|
};
|
||||||
|
exports.preload = function(href, options) {
|
||||||
|
var encountered = "";
|
||||||
|
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||||
|
null == options || "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : "string" === typeof options.as && options.as || (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||||
|
encountered && console.error("ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s", encountered);
|
||||||
|
if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) {
|
||||||
|
encountered = options.as;
|
||||||
|
var crossOrigin = getCrossOriginStringAs(encountered, options.crossOrigin);
|
||||||
|
Internals.d.L(href, encountered, {
|
||||||
|
crossOrigin,
|
||||||
|
integrity: "string" === typeof options.integrity ? options.integrity : void 0,
|
||||||
|
nonce: "string" === typeof options.nonce ? options.nonce : void 0,
|
||||||
|
type: "string" === typeof options.type ? options.type : void 0,
|
||||||
|
fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0,
|
||||||
|
referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0,
|
||||||
|
imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
|
||||||
|
imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0,
|
||||||
|
media: "string" === typeof options.media ? options.media : void 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.preloadModule = function(href, options) {
|
||||||
|
var encountered = "";
|
||||||
|
"string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
|
||||||
|
void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "string" !== typeof options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
|
||||||
|
encountered && console.error("ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s", encountered);
|
||||||
|
"string" === typeof href && (options ? (encountered = getCrossOriginStringAs(options.as, options.crossOrigin), Internals.d.m(href, {
|
||||||
|
as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0,
|
||||||
|
crossOrigin: encountered,
|
||||||
|
integrity: "string" === typeof options.integrity ? options.integrity : void 0
|
||||||
|
})) : Internals.d.m(href));
|
||||||
|
};
|
||||||
|
exports.requestFormReset = function(form) {
|
||||||
|
Internals.d.r(form);
|
||||||
|
};
|
||||||
|
exports.unstable_batchedUpdates = function(fn, a) {
|
||||||
|
return fn(a);
|
||||||
|
};
|
||||||
|
exports.useFormState = function(action, initialState, permalink) {
|
||||||
|
return resolveDispatcher().useFormState(action, initialState, permalink);
|
||||||
|
};
|
||||||
|
exports.useFormStatus = function() {
|
||||||
|
return resolveDispatcher().useHostTransitionStatus();
|
||||||
|
};
|
||||||
|
exports.version = "19.2.4";
|
||||||
|
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
||||||
|
})();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
//#region node_modules/react-dom/index.js
|
||||||
|
var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
||||||
|
module.exports = require_react_dom_development();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
export default require_react_dom();
|
||||||
|
export { require_react_dom as t };
|
||||||
|
|
||||||
|
//# sourceMappingURL=react-dom.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-dom.js.map
generated
vendored
Normal file
14384
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-dom_client.js
generated
vendored
Normal file
1
fotograf-de-scraper/frontend/node_modules/.vite/deps/react-dom_client.js.map
generated
vendored
Normal file
2
fotograf-de-scraper/frontend/node_modules/.vite/deps/react.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import { t as require_react } from "./react-Na5-BvaJ.js";
|
||||||
|
export default require_react();
|
||||||
204
fotograf-de-scraper/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js
generated
vendored
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
import { n as __commonJSMin, t as require_react } from "./react-Na5-BvaJ.js";
|
||||||
|
//#region node_modules/react/cjs/react-jsx-dev-runtime.development.js
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react-jsx-dev-runtime.development.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
var require_react_jsx_dev_runtime_development = /* @__PURE__ */ __commonJSMin(((exports) => {
|
||||||
|
(function() {
|
||||||
|
function getComponentNameFromType(type) {
|
||||||
|
if (null == type) return null;
|
||||||
|
if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
||||||
|
if ("string" === typeof type) return type;
|
||||||
|
switch (type) {
|
||||||
|
case REACT_FRAGMENT_TYPE: return "Fragment";
|
||||||
|
case REACT_PROFILER_TYPE: return "Profiler";
|
||||||
|
case REACT_STRICT_MODE_TYPE: return "StrictMode";
|
||||||
|
case REACT_SUSPENSE_TYPE: return "Suspense";
|
||||||
|
case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList";
|
||||||
|
case REACT_ACTIVITY_TYPE: return "Activity";
|
||||||
|
}
|
||||||
|
if ("object" === typeof type) switch ("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) {
|
||||||
|
case REACT_PORTAL_TYPE: return "Portal";
|
||||||
|
case REACT_CONTEXT_TYPE: return type.displayName || "Context";
|
||||||
|
case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer";
|
||||||
|
case REACT_FORWARD_REF_TYPE:
|
||||||
|
var innerType = type.render;
|
||||||
|
type = type.displayName;
|
||||||
|
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
|
||||||
|
return type;
|
||||||
|
case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
|
||||||
|
case REACT_LAZY_TYPE:
|
||||||
|
innerType = type._payload;
|
||||||
|
type = type._init;
|
||||||
|
try {
|
||||||
|
return getComponentNameFromType(type(innerType));
|
||||||
|
} catch (x) {}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function testStringCoercion(value) {
|
||||||
|
return "" + value;
|
||||||
|
}
|
||||||
|
function checkKeyStringCoercion(value) {
|
||||||
|
try {
|
||||||
|
testStringCoercion(value);
|
||||||
|
var JSCompiler_inline_result = !1;
|
||||||
|
} catch (e) {
|
||||||
|
JSCompiler_inline_result = !0;
|
||||||
|
}
|
||||||
|
if (JSCompiler_inline_result) {
|
||||||
|
JSCompiler_inline_result = console;
|
||||||
|
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
||||||
|
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
||||||
|
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
|
||||||
|
return testStringCoercion(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getTaskName(type) {
|
||||||
|
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
||||||
|
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>";
|
||||||
|
try {
|
||||||
|
var name = getComponentNameFromType(type);
|
||||||
|
return name ? "<" + name + ">" : "<...>";
|
||||||
|
} catch (x) {
|
||||||
|
return "<...>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getOwner() {
|
||||||
|
var dispatcher = ReactSharedInternals.A;
|
||||||
|
return null === dispatcher ? null : dispatcher.getOwner();
|
||||||
|
}
|
||||||
|
function UnknownOwner() {
|
||||||
|
return Error("react-stack-top-frame");
|
||||||
|
}
|
||||||
|
function hasValidKey(config) {
|
||||||
|
if (hasOwnProperty.call(config, "key")) {
|
||||||
|
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
||||||
|
if (getter && getter.isReactWarning) return !1;
|
||||||
|
}
|
||||||
|
return void 0 !== config.key;
|
||||||
|
}
|
||||||
|
function defineKeyPropWarningGetter(props, displayName) {
|
||||||
|
function warnAboutAccessingKey() {
|
||||||
|
specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
|
||||||
|
}
|
||||||
|
warnAboutAccessingKey.isReactWarning = !0;
|
||||||
|
Object.defineProperty(props, "key", {
|
||||||
|
get: warnAboutAccessingKey,
|
||||||
|
configurable: !0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function elementRefGetterWithDeprecationWarning() {
|
||||||
|
var componentName = getComponentNameFromType(this.type);
|
||||||
|
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
|
||||||
|
componentName = this.props.ref;
|
||||||
|
return void 0 !== componentName ? componentName : null;
|
||||||
|
}
|
||||||
|
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
||||||
|
var refProp = props.ref;
|
||||||
|
type = {
|
||||||
|
$$typeof: REACT_ELEMENT_TYPE,
|
||||||
|
type,
|
||||||
|
key,
|
||||||
|
props,
|
||||||
|
_owner: owner
|
||||||
|
};
|
||||||
|
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
get: elementRefGetterWithDeprecationWarning
|
||||||
|
}) : Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
type._store = {};
|
||||||
|
Object.defineProperty(type._store, "validated", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: 0
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugInfo", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugStack", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugStack
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugTask", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugTask
|
||||||
|
});
|
||||||
|
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
|
||||||
|
var children = config.children;
|
||||||
|
if (void 0 !== children) if (isStaticChildren) if (isArrayImpl(children)) {
|
||||||
|
for (isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++) validateChildKeys(children[isStaticChildren]);
|
||||||
|
Object.freeze && Object.freeze(children);
|
||||||
|
} else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
||||||
|
else validateChildKeys(children);
|
||||||
|
if (hasOwnProperty.call(config, "key")) {
|
||||||
|
children = getComponentNameFromType(type);
|
||||||
|
var keys = Object.keys(config).filter(function(k) {
|
||||||
|
return "key" !== k;
|
||||||
|
});
|
||||||
|
isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
|
||||||
|
didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = !0);
|
||||||
|
}
|
||||||
|
children = null;
|
||||||
|
void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
|
||||||
|
hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
|
||||||
|
if ("key" in config) {
|
||||||
|
maybeKey = {};
|
||||||
|
for (var propName in config) "key" !== propName && (maybeKey[propName] = config[propName]);
|
||||||
|
} else maybeKey = config;
|
||||||
|
children && defineKeyPropWarningGetter(maybeKey, "function" === typeof type ? type.displayName || type.name || "Unknown" : type);
|
||||||
|
return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask);
|
||||||
|
}
|
||||||
|
function validateChildKeys(node) {
|
||||||
|
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
||||||
|
}
|
||||||
|
function isValidElement(object) {
|
||||||
|
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
||||||
|
}
|
||||||
|
var React = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
React = { react_stack_bottom_frame: function(callStackForError) {
|
||||||
|
return callStackForError();
|
||||||
|
} };
|
||||||
|
var specialPropKeyWarningShown;
|
||||||
|
var didWarnAboutElementRef = {};
|
||||||
|
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)();
|
||||||
|
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
||||||
|
var didWarnAboutKeySpread = {};
|
||||||
|
exports.Fragment = REACT_FRAGMENT_TYPE;
|
||||||
|
exports.jsxDEV = function(type, config, maybeKey, isStaticChildren) {
|
||||||
|
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||||
|
return jsxDEVImpl(type, config, maybeKey, isStaticChildren, trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
//#region node_modules/react/jsx-dev-runtime.js
|
||||||
|
var require_jsx_dev_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
||||||
|
module.exports = require_react_jsx_dev_runtime_development();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
export default require_jsx_dev_runtime();
|
||||||
|
|
||||||
|
//# sourceMappingURL=react_jsx-dev-runtime.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js.map
generated
vendored
Normal file
208
fotograf-de-scraper/frontend/node_modules/.vite/deps/react_jsx-runtime.js
generated
vendored
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
import { n as __commonJSMin, t as require_react } from "./react-Na5-BvaJ.js";
|
||||||
|
//#region node_modules/react/cjs/react-jsx-runtime.development.js
|
||||||
|
/**
|
||||||
|
* @license React
|
||||||
|
* react-jsx-runtime.development.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
var require_react_jsx_runtime_development = /* @__PURE__ */ __commonJSMin(((exports) => {
|
||||||
|
(function() {
|
||||||
|
function getComponentNameFromType(type) {
|
||||||
|
if (null == type) return null;
|
||||||
|
if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
||||||
|
if ("string" === typeof type) return type;
|
||||||
|
switch (type) {
|
||||||
|
case REACT_FRAGMENT_TYPE: return "Fragment";
|
||||||
|
case REACT_PROFILER_TYPE: return "Profiler";
|
||||||
|
case REACT_STRICT_MODE_TYPE: return "StrictMode";
|
||||||
|
case REACT_SUSPENSE_TYPE: return "Suspense";
|
||||||
|
case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList";
|
||||||
|
case REACT_ACTIVITY_TYPE: return "Activity";
|
||||||
|
}
|
||||||
|
if ("object" === typeof type) switch ("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) {
|
||||||
|
case REACT_PORTAL_TYPE: return "Portal";
|
||||||
|
case REACT_CONTEXT_TYPE: return type.displayName || "Context";
|
||||||
|
case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer";
|
||||||
|
case REACT_FORWARD_REF_TYPE:
|
||||||
|
var innerType = type.render;
|
||||||
|
type = type.displayName;
|
||||||
|
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
|
||||||
|
return type;
|
||||||
|
case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
|
||||||
|
case REACT_LAZY_TYPE:
|
||||||
|
innerType = type._payload;
|
||||||
|
type = type._init;
|
||||||
|
try {
|
||||||
|
return getComponentNameFromType(type(innerType));
|
||||||
|
} catch (x) {}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function testStringCoercion(value) {
|
||||||
|
return "" + value;
|
||||||
|
}
|
||||||
|
function checkKeyStringCoercion(value) {
|
||||||
|
try {
|
||||||
|
testStringCoercion(value);
|
||||||
|
var JSCompiler_inline_result = !1;
|
||||||
|
} catch (e) {
|
||||||
|
JSCompiler_inline_result = !0;
|
||||||
|
}
|
||||||
|
if (JSCompiler_inline_result) {
|
||||||
|
JSCompiler_inline_result = console;
|
||||||
|
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
||||||
|
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
||||||
|
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
|
||||||
|
return testStringCoercion(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getTaskName(type) {
|
||||||
|
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
||||||
|
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>";
|
||||||
|
try {
|
||||||
|
var name = getComponentNameFromType(type);
|
||||||
|
return name ? "<" + name + ">" : "<...>";
|
||||||
|
} catch (x) {
|
||||||
|
return "<...>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getOwner() {
|
||||||
|
var dispatcher = ReactSharedInternals.A;
|
||||||
|
return null === dispatcher ? null : dispatcher.getOwner();
|
||||||
|
}
|
||||||
|
function UnknownOwner() {
|
||||||
|
return Error("react-stack-top-frame");
|
||||||
|
}
|
||||||
|
function hasValidKey(config) {
|
||||||
|
if (hasOwnProperty.call(config, "key")) {
|
||||||
|
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
||||||
|
if (getter && getter.isReactWarning) return !1;
|
||||||
|
}
|
||||||
|
return void 0 !== config.key;
|
||||||
|
}
|
||||||
|
function defineKeyPropWarningGetter(props, displayName) {
|
||||||
|
function warnAboutAccessingKey() {
|
||||||
|
specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
|
||||||
|
}
|
||||||
|
warnAboutAccessingKey.isReactWarning = !0;
|
||||||
|
Object.defineProperty(props, "key", {
|
||||||
|
get: warnAboutAccessingKey,
|
||||||
|
configurable: !0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function elementRefGetterWithDeprecationWarning() {
|
||||||
|
var componentName = getComponentNameFromType(this.type);
|
||||||
|
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
|
||||||
|
componentName = this.props.ref;
|
||||||
|
return void 0 !== componentName ? componentName : null;
|
||||||
|
}
|
||||||
|
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
||||||
|
var refProp = props.ref;
|
||||||
|
type = {
|
||||||
|
$$typeof: REACT_ELEMENT_TYPE,
|
||||||
|
type,
|
||||||
|
key,
|
||||||
|
props,
|
||||||
|
_owner: owner
|
||||||
|
};
|
||||||
|
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
get: elementRefGetterWithDeprecationWarning
|
||||||
|
}) : Object.defineProperty(type, "ref", {
|
||||||
|
enumerable: !1,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
type._store = {};
|
||||||
|
Object.defineProperty(type._store, "validated", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: 0
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugInfo", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: null
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugStack", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugStack
|
||||||
|
});
|
||||||
|
Object.defineProperty(type, "_debugTask", {
|
||||||
|
configurable: !1,
|
||||||
|
enumerable: !1,
|
||||||
|
writable: !0,
|
||||||
|
value: debugTask
|
||||||
|
});
|
||||||
|
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
|
||||||
|
var children = config.children;
|
||||||
|
if (void 0 !== children) if (isStaticChildren) if (isArrayImpl(children)) {
|
||||||
|
for (isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++) validateChildKeys(children[isStaticChildren]);
|
||||||
|
Object.freeze && Object.freeze(children);
|
||||||
|
} else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
||||||
|
else validateChildKeys(children);
|
||||||
|
if (hasOwnProperty.call(config, "key")) {
|
||||||
|
children = getComponentNameFromType(type);
|
||||||
|
var keys = Object.keys(config).filter(function(k) {
|
||||||
|
return "key" !== k;
|
||||||
|
});
|
||||||
|
isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
|
||||||
|
didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = !0);
|
||||||
|
}
|
||||||
|
children = null;
|
||||||
|
void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
|
||||||
|
hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
|
||||||
|
if ("key" in config) {
|
||||||
|
maybeKey = {};
|
||||||
|
for (var propName in config) "key" !== propName && (maybeKey[propName] = config[propName]);
|
||||||
|
} else maybeKey = config;
|
||||||
|
children && defineKeyPropWarningGetter(maybeKey, "function" === typeof type ? type.displayName || type.name || "Unknown" : type);
|
||||||
|
return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask);
|
||||||
|
}
|
||||||
|
function validateChildKeys(node) {
|
||||||
|
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
||||||
|
}
|
||||||
|
function isValidElement(object) {
|
||||||
|
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
||||||
|
}
|
||||||
|
var React = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
React = { react_stack_bottom_frame: function(callStackForError) {
|
||||||
|
return callStackForError();
|
||||||
|
} };
|
||||||
|
var specialPropKeyWarningShown;
|
||||||
|
var didWarnAboutElementRef = {};
|
||||||
|
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)();
|
||||||
|
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
||||||
|
var didWarnAboutKeySpread = {};
|
||||||
|
exports.Fragment = REACT_FRAGMENT_TYPE;
|
||||||
|
exports.jsx = function(type, config, maybeKey) {
|
||||||
|
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||||
|
return jsxDEVImpl(type, config, maybeKey, !1, trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
||||||
|
};
|
||||||
|
exports.jsxs = function(type, config, maybeKey) {
|
||||||
|
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
||||||
|
return jsxDEVImpl(type, config, maybeKey, !0, trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
//#region node_modules/react/jsx-runtime.js
|
||||||
|
var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
||||||
|
module.exports = require_react_jsx_runtime_development();
|
||||||
|
}));
|
||||||
|
//#endregion
|
||||||
|
export default require_jsx_runtime();
|
||||||
|
|
||||||
|
//# sourceMappingURL=react_jsx-runtime.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/.vite/deps/react_jsx-runtime.js.map
generated
vendored
Normal file
128
fotograf-de-scraper/frontend/node_modules/@alloc/quick-lru/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
declare namespace QuickLRU {
|
||||||
|
interface Options<KeyType, ValueType> {
|
||||||
|
/**
|
||||||
|
The maximum number of milliseconds an item should remain in the cache.
|
||||||
|
|
||||||
|
@default Infinity
|
||||||
|
|
||||||
|
By default, `maxAge` will be `Infinity`, which means that items will never expire.
|
||||||
|
Lazy expiration upon the next write or read call.
|
||||||
|
|
||||||
|
Individual expiration of an item can be specified by the `set(key, value, maxAge)` method.
|
||||||
|
*/
|
||||||
|
readonly maxAge?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
The maximum number of items before evicting the least recently used items.
|
||||||
|
*/
|
||||||
|
readonly maxSize: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Called right before an item is evicted from the cache.
|
||||||
|
|
||||||
|
Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
|
||||||
|
*/
|
||||||
|
onEviction?: (key: KeyType, value: ValueType) => void;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare class QuickLRU<KeyType, ValueType>
|
||||||
|
implements Iterable<[KeyType, ValueType]> {
|
||||||
|
/**
|
||||||
|
The stored item count.
|
||||||
|
*/
|
||||||
|
readonly size: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
|
||||||
|
|
||||||
|
The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
|
||||||
|
|
||||||
|
@example
|
||||||
|
```
|
||||||
|
import QuickLRU = require('quick-lru');
|
||||||
|
|
||||||
|
const lru = new QuickLRU({maxSize: 1000});
|
||||||
|
|
||||||
|
lru.set('🦄', '🌈');
|
||||||
|
|
||||||
|
lru.has('🦄');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
lru.get('🦄');
|
||||||
|
//=> '🌈'
|
||||||
|
```
|
||||||
|
*/
|
||||||
|
constructor(options: QuickLRU.Options<KeyType, ValueType>);
|
||||||
|
|
||||||
|
[Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set an item. Returns the instance.
|
||||||
|
|
||||||
|
Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified in the constructor, otherwise the item will never expire.
|
||||||
|
|
||||||
|
@returns The list instance.
|
||||||
|
*/
|
||||||
|
set(key: KeyType, value: ValueType, options?: {maxAge?: number}): this;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get an item.
|
||||||
|
|
||||||
|
@returns The stored item or `undefined`.
|
||||||
|
*/
|
||||||
|
get(key: KeyType): ValueType | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if an item exists.
|
||||||
|
*/
|
||||||
|
has(key: KeyType): boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get an item without marking it as recently used.
|
||||||
|
|
||||||
|
@returns The stored item or `undefined`.
|
||||||
|
*/
|
||||||
|
peek(key: KeyType): ValueType | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Delete an item.
|
||||||
|
|
||||||
|
@returns `true` if the item is removed or `false` if the item doesn't exist.
|
||||||
|
*/
|
||||||
|
delete(key: KeyType): boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Delete all items.
|
||||||
|
*/
|
||||||
|
clear(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Update the `maxSize` in-place, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
|
||||||
|
|
||||||
|
Useful for on-the-fly tuning of cache sizes in live systems.
|
||||||
|
*/
|
||||||
|
resize(maxSize: number): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Iterable for all the keys.
|
||||||
|
*/
|
||||||
|
keys(): IterableIterator<KeyType>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Iterable for all the values.
|
||||||
|
*/
|
||||||
|
values(): IterableIterator<ValueType>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Iterable for all entries, starting with the oldest (ascending in recency).
|
||||||
|
*/
|
||||||
|
entriesAscending(): IterableIterator<[KeyType, ValueType]>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Iterable for all entries, starting with the newest (descending in recency).
|
||||||
|
*/
|
||||||
|
entriesDescending(): IterableIterator<[KeyType, ValueType]>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export = QuickLRU;
|
||||||
263
fotograf-de-scraper/frontend/node_modules/@alloc/quick-lru/index.js
generated
vendored
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
class QuickLRU {
|
||||||
|
constructor(options = {}) {
|
||||||
|
if (!(options.maxSize && options.maxSize > 0)) {
|
||||||
|
throw new TypeError('`maxSize` must be a number greater than 0');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof options.maxAge === 'number' && options.maxAge === 0) {
|
||||||
|
throw new TypeError('`maxAge` must be a number greater than 0');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.maxSize = options.maxSize;
|
||||||
|
this.maxAge = options.maxAge || Infinity;
|
||||||
|
this.onEviction = options.onEviction;
|
||||||
|
this.cache = new Map();
|
||||||
|
this.oldCache = new Map();
|
||||||
|
this._size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_emitEvictions(cache) {
|
||||||
|
if (typeof this.onEviction !== 'function') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [key, item] of cache) {
|
||||||
|
this.onEviction(key, item.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_deleteIfExpired(key, item) {
|
||||||
|
if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {
|
||||||
|
if (typeof this.onEviction === 'function') {
|
||||||
|
this.onEviction(key, item.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.delete(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getOrDeleteIfExpired(key, item) {
|
||||||
|
const deleted = this._deleteIfExpired(key, item);
|
||||||
|
if (deleted === false) {
|
||||||
|
return item.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_getItemValue(key, item) {
|
||||||
|
return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
_peek(key, cache) {
|
||||||
|
const item = cache.get(key);
|
||||||
|
|
||||||
|
return this._getItemValue(key, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
_set(key, value) {
|
||||||
|
this.cache.set(key, value);
|
||||||
|
this._size++;
|
||||||
|
|
||||||
|
if (this._size >= this.maxSize) {
|
||||||
|
this._size = 0;
|
||||||
|
this._emitEvictions(this.oldCache);
|
||||||
|
this.oldCache = this.cache;
|
||||||
|
this.cache = new Map();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_moveToRecent(key, item) {
|
||||||
|
this.oldCache.delete(key);
|
||||||
|
this._set(key, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
* _entriesAscending() {
|
||||||
|
for (const item of this.oldCache) {
|
||||||
|
const [key, value] = item;
|
||||||
|
if (!this.cache.has(key)) {
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const item of this.cache) {
|
||||||
|
const [key, value] = item;
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get(key) {
|
||||||
|
if (this.cache.has(key)) {
|
||||||
|
const item = this.cache.get(key);
|
||||||
|
|
||||||
|
return this._getItemValue(key, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.oldCache.has(key)) {
|
||||||
|
const item = this.oldCache.get(key);
|
||||||
|
if (this._deleteIfExpired(key, item) === false) {
|
||||||
|
this._moveToRecent(key, item);
|
||||||
|
return item.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set(key, value, {maxAge = this.maxAge === Infinity ? undefined : Date.now() + this.maxAge} = {}) {
|
||||||
|
if (this.cache.has(key)) {
|
||||||
|
this.cache.set(key, {
|
||||||
|
value,
|
||||||
|
maxAge
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this._set(key, {value, expiry: maxAge});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
has(key) {
|
||||||
|
if (this.cache.has(key)) {
|
||||||
|
return !this._deleteIfExpired(key, this.cache.get(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.oldCache.has(key)) {
|
||||||
|
return !this._deleteIfExpired(key, this.oldCache.get(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
peek(key) {
|
||||||
|
if (this.cache.has(key)) {
|
||||||
|
return this._peek(key, this.cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.oldCache.has(key)) {
|
||||||
|
return this._peek(key, this.oldCache);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(key) {
|
||||||
|
const deleted = this.cache.delete(key);
|
||||||
|
if (deleted) {
|
||||||
|
this._size--;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.oldCache.delete(key) || deleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
clear() {
|
||||||
|
this.cache.clear();
|
||||||
|
this.oldCache.clear();
|
||||||
|
this._size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
resize(newSize) {
|
||||||
|
if (!(newSize && newSize > 0)) {
|
||||||
|
throw new TypeError('`maxSize` must be a number greater than 0');
|
||||||
|
}
|
||||||
|
|
||||||
|
const items = [...this._entriesAscending()];
|
||||||
|
const removeCount = items.length - newSize;
|
||||||
|
if (removeCount < 0) {
|
||||||
|
this.cache = new Map(items);
|
||||||
|
this.oldCache = new Map();
|
||||||
|
this._size = items.length;
|
||||||
|
} else {
|
||||||
|
if (removeCount > 0) {
|
||||||
|
this._emitEvictions(items.slice(0, removeCount));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.oldCache = new Map(items.slice(removeCount));
|
||||||
|
this.cache = new Map();
|
||||||
|
this._size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.maxSize = newSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
* keys() {
|
||||||
|
for (const [key] of this) {
|
||||||
|
yield key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
* values() {
|
||||||
|
for (const [, value] of this) {
|
||||||
|
yield value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
* [Symbol.iterator]() {
|
||||||
|
for (const item of this.cache) {
|
||||||
|
const [key, value] = item;
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield [key, value.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const item of this.oldCache) {
|
||||||
|
const [key, value] = item;
|
||||||
|
if (!this.cache.has(key)) {
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield [key, value.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
* entriesDescending() {
|
||||||
|
let items = [...this.cache];
|
||||||
|
for (let i = items.length - 1; i >= 0; --i) {
|
||||||
|
const item = items[i];
|
||||||
|
const [key, value] = item;
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield [key, value.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
items = [...this.oldCache];
|
||||||
|
for (let i = items.length - 1; i >= 0; --i) {
|
||||||
|
const item = items[i];
|
||||||
|
const [key, value] = item;
|
||||||
|
if (!this.cache.has(key)) {
|
||||||
|
const deleted = this._deleteIfExpired(key, value);
|
||||||
|
if (deleted === false) {
|
||||||
|
yield [key, value.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
* entriesAscending() {
|
||||||
|
for (const [key, value] of this._entriesAscending()) {
|
||||||
|
yield [key, value.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get size() {
|
||||||
|
if (!this._size) {
|
||||||
|
return this.oldCache.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
let oldCacheSize = 0;
|
||||||
|
for (const key of this.oldCache.keys()) {
|
||||||
|
if (!this.cache.has(key)) {
|
||||||
|
oldCacheSize++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.min(this._size + oldCacheSize, this.maxSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = QuickLRU;
|
||||||
9
fotograf-de-scraper/frontend/node_modules/@alloc/quick-lru/license
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||||
|
|
||||||
|
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.
|
||||||
43
fotograf-de-scraper/frontend/node_modules/@alloc/quick-lru/package.json
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "@alloc/quick-lru",
|
||||||
|
"version": "5.2.0",
|
||||||
|
"description": "Simple “Least Recently Used” (LRU) cache",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "sindresorhus/quick-lru",
|
||||||
|
"funding": "https://github.com/sponsors/sindresorhus",
|
||||||
|
"author": {
|
||||||
|
"name": "Sindre Sorhus",
|
||||||
|
"email": "sindresorhus@gmail.com",
|
||||||
|
"url": "https://sindresorhus.com"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "xo && nyc ava && tsd"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"index.d.ts"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"lru",
|
||||||
|
"quick",
|
||||||
|
"cache",
|
||||||
|
"caching",
|
||||||
|
"least",
|
||||||
|
"recently",
|
||||||
|
"used",
|
||||||
|
"fast",
|
||||||
|
"map",
|
||||||
|
"hash",
|
||||||
|
"buffer"
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"ava": "^2.0.0",
|
||||||
|
"coveralls": "^3.0.3",
|
||||||
|
"nyc": "^15.0.0",
|
||||||
|
"tsd": "^0.11.0",
|
||||||
|
"xo": "^0.26.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
139
fotograf-de-scraper/frontend/node_modules/@alloc/quick-lru/readme.md
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
# quick-lru [](https://travis-ci.org/sindresorhus/quick-lru) [](https://coveralls.io/github/sindresorhus/quick-lru?branch=master)
|
||||||
|
|
||||||
|
> Simple [“Least Recently Used” (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)
|
||||||
|
|
||||||
|
Useful when you need to cache something and limit memory usage.
|
||||||
|
|
||||||
|
Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install quick-lru
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const QuickLRU = require('quick-lru');
|
||||||
|
|
||||||
|
const lru = new QuickLRU({maxSize: 1000});
|
||||||
|
|
||||||
|
lru.set('🦄', '🌈');
|
||||||
|
|
||||||
|
lru.has('🦄');
|
||||||
|
//=> true
|
||||||
|
|
||||||
|
lru.get('🦄');
|
||||||
|
//=> '🌈'
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### new QuickLRU(options?)
|
||||||
|
|
||||||
|
Returns a new instance.
|
||||||
|
|
||||||
|
### options
|
||||||
|
|
||||||
|
Type: `object`
|
||||||
|
|
||||||
|
#### maxSize
|
||||||
|
|
||||||
|
*Required*\
|
||||||
|
Type: `number`
|
||||||
|
|
||||||
|
The maximum number of items before evicting the least recently used items.
|
||||||
|
|
||||||
|
#### maxAge
|
||||||
|
|
||||||
|
Type: `number`\
|
||||||
|
Default: `Infinity`
|
||||||
|
|
||||||
|
The maximum number of milliseconds an item should remain in cache.
|
||||||
|
By default maxAge will be Infinity, which means that items will never expire.
|
||||||
|
|
||||||
|
Lazy expiration happens upon the next `write` or `read` call.
|
||||||
|
|
||||||
|
Individual expiration of an item can be specified by the `set(key, value, options)` method.
|
||||||
|
|
||||||
|
#### onEviction
|
||||||
|
|
||||||
|
*Optional*\
|
||||||
|
Type: `(key, value) => void`
|
||||||
|
|
||||||
|
Called right before an item is evicted from the cache.
|
||||||
|
|
||||||
|
Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
|
||||||
|
|
||||||
|
### Instance
|
||||||
|
|
||||||
|
The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
|
||||||
|
|
||||||
|
Both `key` and `value` can be of any type.
|
||||||
|
|
||||||
|
#### .set(key, value, options?)
|
||||||
|
|
||||||
|
Set an item. Returns the instance.
|
||||||
|
|
||||||
|
Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified on the constructor, otherwise the item will never expire.
|
||||||
|
|
||||||
|
#### .get(key)
|
||||||
|
|
||||||
|
Get an item.
|
||||||
|
|
||||||
|
#### .has(key)
|
||||||
|
|
||||||
|
Check if an item exists.
|
||||||
|
|
||||||
|
#### .peek(key)
|
||||||
|
|
||||||
|
Get an item without marking it as recently used.
|
||||||
|
|
||||||
|
#### .delete(key)
|
||||||
|
|
||||||
|
Delete an item.
|
||||||
|
|
||||||
|
Returns `true` if the item is removed or `false` if the item doesn't exist.
|
||||||
|
|
||||||
|
#### .clear()
|
||||||
|
|
||||||
|
Delete all items.
|
||||||
|
|
||||||
|
#### .resize(maxSize)
|
||||||
|
|
||||||
|
Update the `maxSize`, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
|
||||||
|
|
||||||
|
Useful for on-the-fly tuning of cache sizes in live systems.
|
||||||
|
|
||||||
|
#### .keys()
|
||||||
|
|
||||||
|
Iterable for all the keys.
|
||||||
|
|
||||||
|
#### .values()
|
||||||
|
|
||||||
|
Iterable for all the values.
|
||||||
|
|
||||||
|
#### .entriesAscending()
|
||||||
|
|
||||||
|
Iterable for all entries, starting with the oldest (ascending in recency).
|
||||||
|
|
||||||
|
#### .entriesDescending()
|
||||||
|
|
||||||
|
Iterable for all entries, starting with the newest (descending in recency).
|
||||||
|
|
||||||
|
#### .size
|
||||||
|
|
||||||
|
The stored item count.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<b>
|
||||||
|
<a href="https://tidelift.com/subscription/pkg/npm-quick-lru?utm_source=npm-quick-lru&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
||||||
|
</b>
|
||||||
|
<br>
|
||||||
|
<sub>
|
||||||
|
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
||||||
|
</sub>
|
||||||
|
</div>
|
||||||
22
fotograf-de-scraper/frontend/node_modules/@babel/code-frame/LICENSE
generated
vendored
Normal file
@@ -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.
|
||||||
19
fotograf-de-scraper/frontend/node_modules/@babel/code-frame/README.md
generated
vendored
Normal file
@@ -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
|
||||||
|
```
|
||||||
217
fotograf-de-scraper/frontend/node_modules/@babel/code-frame/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||||||
|
|
||||||
|
var picocolors = require('picocolors');
|
||||||
|
var jsTokens = require('js-tokens');
|
||||||
|
var helperValidatorIdentifier = require('@babel/helper-validator-identifier');
|
||||||
|
|
||||||
|
function isColorSupported() {
|
||||||
|
return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const compose = (f, g) => v => f(g(v));
|
||||||
|
function buildDefs(colors) {
|
||||||
|
return {
|
||||||
|
keyword: colors.cyan,
|
||||||
|
capitalized: colors.yellow,
|
||||||
|
jsxIdentifier: colors.yellow,
|
||||||
|
punctuator: colors.yellow,
|
||||||
|
number: colors.magenta,
|
||||||
|
string: colors.green,
|
||||||
|
regex: colors.magenta,
|
||||||
|
comment: colors.gray,
|
||||||
|
invalid: compose(compose(colors.white, colors.bgRed), colors.bold),
|
||||||
|
gutter: colors.gray,
|
||||||
|
marker: compose(colors.red, colors.bold),
|
||||||
|
message: compose(colors.red, colors.bold),
|
||||||
|
reset: colors.reset
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const defsOn = buildDefs(picocolors.createColors(true));
|
||||||
|
const defsOff = buildDefs(picocolors.createColors(false));
|
||||||
|
function getDefs(enabled) {
|
||||||
|
return enabled ? defsOn : defsOff;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
|
||||||
|
const NEWLINE$1 = /\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") {
|
||||||
|
const tokenValue = token.value;
|
||||||
|
if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
|
||||||
|
return "keyword";
|
||||||
|
}
|
||||||
|
if (JSX_TAG.test(tokenValue) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
|
||||||
|
return "jsxIdentifier";
|
||||||
|
}
|
||||||
|
const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
|
||||||
|
if (firstChar !== firstChar.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 highlight(text) {
|
||||||
|
if (text === "") return "";
|
||||||
|
const defs = getDefs(true);
|
||||||
|
let highlighted = "";
|
||||||
|
for (const {
|
||||||
|
type,
|
||||||
|
value
|
||||||
|
} of tokenize(text)) {
|
||||||
|
if (type in defs) {
|
||||||
|
highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n");
|
||||||
|
} else {
|
||||||
|
highlighted += value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return highlighted;
|
||||||
|
}
|
||||||
|
|
||||||
|
let deprecationWarningShown = false;
|
||||||
|
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
||||||
|
function getMarkerLines(loc, source, opts, startLineBaseZero) {
|
||||||
|
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 - startLineBaseZero;
|
||||||
|
const startColumn = startLoc.column;
|
||||||
|
const endLine = endLoc.line - startLineBaseZero;
|
||||||
|
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 shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
|
||||||
|
const startLineBaseZero = (opts.startLine || 1) - 1;
|
||||||
|
const defs = getDefs(shouldHighlight);
|
||||||
|
const lines = rawLines.split(NEWLINE);
|
||||||
|
const {
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
markerLines
|
||||||
|
} = getMarkerLines(loc, lines, opts, startLineBaseZero);
|
||||||
|
const hasColumns = loc.start && typeof loc.start.column === "number";
|
||||||
|
const numberMaxWidth = String(end + startLineBaseZero).length;
|
||||||
|
const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
|
||||||
|
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
|
||||||
|
const number = start + 1 + index;
|
||||||
|
const paddedNumber = ` ${number + startLineBaseZero}`.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 ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join("");
|
||||||
|
if (lastMarkerLine && opts.message) {
|
||||||
|
markerLine += " " + defs.message(opts.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
|
||||||
|
} else {
|
||||||
|
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`;
|
||||||
|
}
|
||||||
|
}).join("\n");
|
||||||
|
if (opts.message && !hasColumns) {
|
||||||
|
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
|
||||||
|
}
|
||||||
|
if (shouldHighlight) {
|
||||||
|
return defs.reset(frame);
|
||||||
|
} else {
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function index (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);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.codeFrameColumns = codeFrameColumns;
|
||||||
|
exports.default = index;
|
||||||
|
exports.highlight = highlight;
|
||||||
|
//# sourceMappingURL=index.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/code-frame/lib/index.js.map
generated
vendored
Normal file
32
fotograf-de-scraper/frontend/node_modules/@babel/code-frame/package.json
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"name": "@babel/code-frame",
|
||||||
|
"version": "7.29.0",
|
||||||
|
"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/helper-validator-identifier": "^7.28.5",
|
||||||
|
"js-tokens": "^4.0.0",
|
||||||
|
"picocolors": "^1.1.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"charcodes": "^0.2.0",
|
||||||
|
"import-meta-resolve": "^4.1.0",
|
||||||
|
"strip-ansi": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
||||||
22
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/LICENSE
generated
vendored
Normal file
@@ -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.
|
||||||
19
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# @babel/compat-data
|
||||||
|
|
||||||
|
> The compat-data to determine required Babel plugins
|
||||||
|
|
||||||
|
See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save @babel/compat-data
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/compat-data
|
||||||
|
```
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/corejs2-built-ins.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file as Babel 8 drop support of core-js 2
|
||||||
|
module.exports = require("./data/corejs2-built-ins.json");
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file now that it is included in babel-plugin-polyfill-corejs3
|
||||||
|
module.exports = require("./data/corejs3-shipped-proposals.json");
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/native-modules.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||||
|
module.exports = require("./data/native-modules.json");
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/overlapping-plugins.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||||
|
module.exports = require("./data/overlapping-plugins.json");
|
||||||
40
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/package.json
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "@babel/compat-data",
|
||||||
|
"version": "7.29.0",
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"license": "MIT",
|
||||||
|
"description": "The compat-data to determine required Babel plugins",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-compat-data"
|
||||||
|
},
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
"./plugins": "./plugins.js",
|
||||||
|
"./native-modules": "./native-modules.js",
|
||||||
|
"./corejs2-built-ins": "./corejs2-built-ins.js",
|
||||||
|
"./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
|
||||||
|
"./overlapping-plugins": "./overlapping-plugins.js",
|
||||||
|
"./plugin-bugfixes": "./plugin-bugfixes.js"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.mjs && node ./scripts/build-modules-support.mjs && node ./scripts/build-bugfixes-targets.mjs"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"babel",
|
||||||
|
"compat-table",
|
||||||
|
"compat-data"
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"@mdn/browser-compat-data": "^6.0.8",
|
||||||
|
"core-js-compat": "^3.48.0",
|
||||||
|
"electron-to-chromium": "^1.5.278"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/plugin-bugfixes.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||||
|
module.exports = require("./data/plugin-bugfixes.json");
|
||||||
2
fotograf-de-scraper/frontend/node_modules/@babel/compat-data/plugins.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||||
|
module.exports = require("./data/plugins.json");
|
||||||
22
fotograf-de-scraper/frontend/node_modules/@babel/core/LICENSE
generated
vendored
Normal file
@@ -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.
|
||||||
19
fotograf-de-scraper/frontend/node_modules/@babel/core/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# @babel/core
|
||||||
|
|
||||||
|
> Babel compiler core.
|
||||||
|
|
||||||
|
See our website [@babel/core](https://babeljs.io/docs/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save-dev @babel/core
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/core --dev
|
||||||
|
```
|
||||||
5
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/cache-contexts.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=cache-contexts.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":[],"sources":["../../src/config/cache-contexts.ts"],"sourcesContent":["import type { ConfigContext } from \"./config-chain.ts\";\nimport type {\n CallerMetadata,\n TargetsListOrObject,\n} from \"./validation/options.ts\";\n\nexport type { ConfigContext as FullConfig };\n\nexport type FullPreset = {\n targets: TargetsListOrObject;\n} & ConfigContext;\nexport type FullPlugin = {\n assumptions: Record<string, boolean>;\n} & FullPreset;\n\n// Context not including filename since it is used in places that cannot\n// process 'ignore'/'only' and other filename-based logic.\nexport type SimpleConfig = {\n envName: string;\n caller: CallerMetadata | undefined;\n};\nexport type SimplePreset = {\n targets: TargetsListOrObject;\n} & SimpleConfig;\nexport type SimplePlugin = {\n assumptions: Record<string, boolean>;\n} & SimplePreset;\n"],"mappings":"","ignoreList":[]}
|
||||||
261
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/caching.js
generated
vendored
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.assertSimpleType = assertSimpleType;
|
||||||
|
exports.makeStrongCache = makeStrongCache;
|
||||||
|
exports.makeStrongCacheSync = makeStrongCacheSync;
|
||||||
|
exports.makeWeakCache = makeWeakCache;
|
||||||
|
exports.makeWeakCacheSync = makeWeakCacheSync;
|
||||||
|
function _gensync() {
|
||||||
|
const data = require("gensync");
|
||||||
|
_gensync = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
var _async = require("../gensync-utils/async.js");
|
||||||
|
var _util = require("./util.js");
|
||||||
|
const synchronize = gen => {
|
||||||
|
return _gensync()(gen).sync;
|
||||||
|
};
|
||||||
|
function* genTrue() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function makeWeakCache(handler) {
|
||||||
|
return makeCachedFunction(WeakMap, handler);
|
||||||
|
}
|
||||||
|
function makeWeakCacheSync(handler) {
|
||||||
|
return synchronize(makeWeakCache(handler));
|
||||||
|
}
|
||||||
|
function makeStrongCache(handler) {
|
||||||
|
return makeCachedFunction(Map, handler);
|
||||||
|
}
|
||||||
|
function makeStrongCacheSync(handler) {
|
||||||
|
return synchronize(makeStrongCache(handler));
|
||||||
|
}
|
||||||
|
function makeCachedFunction(CallCache, handler) {
|
||||||
|
const callCacheSync = new CallCache();
|
||||||
|
const callCacheAsync = new CallCache();
|
||||||
|
const futureCache = new CallCache();
|
||||||
|
return function* cachedFunction(arg, data) {
|
||||||
|
const asyncContext = yield* (0, _async.isAsync)();
|
||||||
|
const callCache = asyncContext ? callCacheAsync : callCacheSync;
|
||||||
|
const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
|
||||||
|
if (cached.valid) return cached.value;
|
||||||
|
const cache = new CacheConfigurator(data);
|
||||||
|
const handlerResult = handler(arg, cache);
|
||||||
|
let finishLock;
|
||||||
|
let value;
|
||||||
|
if ((0, _util.isIterableIterator)(handlerResult)) {
|
||||||
|
value = yield* (0, _async.onFirstPause)(handlerResult, () => {
|
||||||
|
finishLock = setupAsyncLocks(cache, futureCache, arg);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
value = handlerResult;
|
||||||
|
}
|
||||||
|
updateFunctionCache(callCache, cache, arg, value);
|
||||||
|
if (finishLock) {
|
||||||
|
futureCache.delete(arg);
|
||||||
|
finishLock.release(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* getCachedValue(cache, arg, data) {
|
||||||
|
const cachedValue = cache.get(arg);
|
||||||
|
if (cachedValue) {
|
||||||
|
for (const {
|
||||||
|
value,
|
||||||
|
valid
|
||||||
|
} of cachedValue) {
|
||||||
|
if (yield* valid(data)) return {
|
||||||
|
valid: true,
|
||||||
|
value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
value: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
|
||||||
|
const cached = yield* getCachedValue(callCache, arg, data);
|
||||||
|
if (cached.valid) {
|
||||||
|
return cached;
|
||||||
|
}
|
||||||
|
if (asyncContext) {
|
||||||
|
const cached = yield* getCachedValue(futureCache, arg, data);
|
||||||
|
if (cached.valid) {
|
||||||
|
const value = yield* (0, _async.waitFor)(cached.value.promise);
|
||||||
|
return {
|
||||||
|
valid: true,
|
||||||
|
value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
value: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function setupAsyncLocks(config, futureCache, arg) {
|
||||||
|
const finishLock = new Lock();
|
||||||
|
updateFunctionCache(futureCache, config, arg, finishLock);
|
||||||
|
return finishLock;
|
||||||
|
}
|
||||||
|
function updateFunctionCache(cache, config, arg, value) {
|
||||||
|
if (!config.configured()) config.forever();
|
||||||
|
let cachedValue = cache.get(arg);
|
||||||
|
config.deactivate();
|
||||||
|
switch (config.mode()) {
|
||||||
|
case "forever":
|
||||||
|
cachedValue = [{
|
||||||
|
value,
|
||||||
|
valid: genTrue
|
||||||
|
}];
|
||||||
|
cache.set(arg, cachedValue);
|
||||||
|
break;
|
||||||
|
case "invalidate":
|
||||||
|
cachedValue = [{
|
||||||
|
value,
|
||||||
|
valid: config.validator()
|
||||||
|
}];
|
||||||
|
cache.set(arg, cachedValue);
|
||||||
|
break;
|
||||||
|
case "valid":
|
||||||
|
if (cachedValue) {
|
||||||
|
cachedValue.push({
|
||||||
|
value,
|
||||||
|
valid: config.validator()
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
cachedValue = [{
|
||||||
|
value,
|
||||||
|
valid: config.validator()
|
||||||
|
}];
|
||||||
|
cache.set(arg, cachedValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class CacheConfigurator {
|
||||||
|
constructor(data) {
|
||||||
|
this._active = true;
|
||||||
|
this._never = false;
|
||||||
|
this._forever = false;
|
||||||
|
this._invalidate = false;
|
||||||
|
this._configured = false;
|
||||||
|
this._pairs = [];
|
||||||
|
this._data = void 0;
|
||||||
|
this._data = data;
|
||||||
|
}
|
||||||
|
simple() {
|
||||||
|
return makeSimpleConfigurator(this);
|
||||||
|
}
|
||||||
|
mode() {
|
||||||
|
if (this._never) return "never";
|
||||||
|
if (this._forever) return "forever";
|
||||||
|
if (this._invalidate) return "invalidate";
|
||||||
|
return "valid";
|
||||||
|
}
|
||||||
|
forever() {
|
||||||
|
if (!this._active) {
|
||||||
|
throw new Error("Cannot change caching after evaluation has completed.");
|
||||||
|
}
|
||||||
|
if (this._never) {
|
||||||
|
throw new Error("Caching has already been configured with .never()");
|
||||||
|
}
|
||||||
|
this._forever = true;
|
||||||
|
this._configured = true;
|
||||||
|
}
|
||||||
|
never() {
|
||||||
|
if (!this._active) {
|
||||||
|
throw new Error("Cannot change caching after evaluation has completed.");
|
||||||
|
}
|
||||||
|
if (this._forever) {
|
||||||
|
throw new Error("Caching has already been configured with .forever()");
|
||||||
|
}
|
||||||
|
this._never = true;
|
||||||
|
this._configured = true;
|
||||||
|
}
|
||||||
|
using(handler) {
|
||||||
|
if (!this._active) {
|
||||||
|
throw new Error("Cannot change caching after evaluation has completed.");
|
||||||
|
}
|
||||||
|
if (this._never || this._forever) {
|
||||||
|
throw new Error("Caching has already been configured with .never or .forever()");
|
||||||
|
}
|
||||||
|
this._configured = true;
|
||||||
|
const key = handler(this._data);
|
||||||
|
const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
|
||||||
|
if ((0, _async.isThenable)(key)) {
|
||||||
|
return key.then(key => {
|
||||||
|
this._pairs.push([key, fn]);
|
||||||
|
return key;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this._pairs.push([key, fn]);
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
invalidate(handler) {
|
||||||
|
this._invalidate = true;
|
||||||
|
return this.using(handler);
|
||||||
|
}
|
||||||
|
validator() {
|
||||||
|
const pairs = this._pairs;
|
||||||
|
return function* (data) {
|
||||||
|
for (const [key, fn] of pairs) {
|
||||||
|
if (key !== (yield* fn(data))) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
deactivate() {
|
||||||
|
this._active = false;
|
||||||
|
}
|
||||||
|
configured() {
|
||||||
|
return this._configured;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function makeSimpleConfigurator(cache) {
|
||||||
|
function cacheFn(val) {
|
||||||
|
if (typeof val === "boolean") {
|
||||||
|
if (val) cache.forever();else cache.never();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return cache.using(() => assertSimpleType(val()));
|
||||||
|
}
|
||||||
|
cacheFn.forever = () => cache.forever();
|
||||||
|
cacheFn.never = () => cache.never();
|
||||||
|
cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
|
||||||
|
cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
|
||||||
|
return cacheFn;
|
||||||
|
}
|
||||||
|
function assertSimpleType(value) {
|
||||||
|
if ((0, _async.isThenable)(value)) {
|
||||||
|
throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
|
||||||
|
}
|
||||||
|
if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
|
||||||
|
throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
class Lock {
|
||||||
|
constructor() {
|
||||||
|
this.released = false;
|
||||||
|
this.promise = void 0;
|
||||||
|
this._resolve = void 0;
|
||||||
|
this.promise = new Promise(resolve => {
|
||||||
|
this._resolve = resolve;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
release(value) {
|
||||||
|
this.released = true;
|
||||||
|
this._resolve(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=caching.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/caching.js.map
generated
vendored
Normal file
469
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/config-chain.js
generated
vendored
Normal file
@@ -0,0 +1,469 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.buildPresetChain = buildPresetChain;
|
||||||
|
exports.buildPresetChainWalker = void 0;
|
||||||
|
exports.buildRootChain = buildRootChain;
|
||||||
|
function _path() {
|
||||||
|
const data = require("path");
|
||||||
|
_path = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _debug() {
|
||||||
|
const data = require("debug");
|
||||||
|
_debug = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
var _options = require("./validation/options.js");
|
||||||
|
var _patternToRegex = require("./pattern-to-regex.js");
|
||||||
|
var _printer = require("./printer.js");
|
||||||
|
var _rewriteStackTrace = require("../errors/rewrite-stack-trace.js");
|
||||||
|
var _configError = require("../errors/config-error.js");
|
||||||
|
var _index = require("./files/index.js");
|
||||||
|
var _caching = require("./caching.js");
|
||||||
|
var _configDescriptors = require("./config-descriptors.js");
|
||||||
|
const debug = _debug()("babel:config:config-chain");
|
||||||
|
function* buildPresetChain(arg, context) {
|
||||||
|
const chain = yield* buildPresetChainWalker(arg, context);
|
||||||
|
if (!chain) return null;
|
||||||
|
return {
|
||||||
|
plugins: dedupDescriptors(chain.plugins),
|
||||||
|
presets: dedupDescriptors(chain.presets),
|
||||||
|
options: chain.options.map(o => createConfigChainOptions(o)),
|
||||||
|
files: new Set()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const buildPresetChainWalker = exports.buildPresetChainWalker = makeChainWalker({
|
||||||
|
root: preset => loadPresetDescriptors(preset),
|
||||||
|
env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
|
||||||
|
overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
|
||||||
|
overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
|
||||||
|
createLogger: () => () => {}
|
||||||
|
});
|
||||||
|
const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
|
||||||
|
const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
|
||||||
|
const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
|
||||||
|
const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
|
||||||
|
function* buildRootChain(opts, context) {
|
||||||
|
let configReport, babelRcReport;
|
||||||
|
const programmaticLogger = new _printer.ConfigPrinter();
|
||||||
|
const programmaticChain = yield* loadProgrammaticChain({
|
||||||
|
options: opts,
|
||||||
|
dirname: context.cwd
|
||||||
|
}, context, undefined, programmaticLogger);
|
||||||
|
if (!programmaticChain) return null;
|
||||||
|
const programmaticReport = yield* programmaticLogger.output();
|
||||||
|
let configFile;
|
||||||
|
if (typeof opts.configFile === "string") {
|
||||||
|
configFile = yield* (0, _index.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
|
||||||
|
} else if (opts.configFile !== false) {
|
||||||
|
configFile = yield* (0, _index.findRootConfig)(context.root, context.envName, context.caller);
|
||||||
|
}
|
||||||
|
let {
|
||||||
|
babelrc,
|
||||||
|
babelrcRoots
|
||||||
|
} = opts;
|
||||||
|
let babelrcRootsDirectory = context.cwd;
|
||||||
|
const configFileChain = emptyChain();
|
||||||
|
const configFileLogger = new _printer.ConfigPrinter();
|
||||||
|
if (configFile) {
|
||||||
|
const validatedFile = validateConfigFile(configFile);
|
||||||
|
const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
|
||||||
|
if (!result) return null;
|
||||||
|
configReport = yield* configFileLogger.output();
|
||||||
|
if (babelrc === undefined) {
|
||||||
|
babelrc = validatedFile.options.babelrc;
|
||||||
|
}
|
||||||
|
if (babelrcRoots === undefined) {
|
||||||
|
babelrcRootsDirectory = validatedFile.dirname;
|
||||||
|
babelrcRoots = validatedFile.options.babelrcRoots;
|
||||||
|
}
|
||||||
|
mergeChain(configFileChain, result);
|
||||||
|
}
|
||||||
|
let ignoreFile, babelrcFile;
|
||||||
|
let isIgnored = false;
|
||||||
|
const fileChain = emptyChain();
|
||||||
|
if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
|
||||||
|
const pkgData = yield* (0, _index.findPackageData)(context.filename);
|
||||||
|
if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
|
||||||
|
({
|
||||||
|
ignore: ignoreFile,
|
||||||
|
config: babelrcFile
|
||||||
|
} = yield* (0, _index.findRelativeConfig)(pkgData, context.envName, context.caller));
|
||||||
|
if (ignoreFile) {
|
||||||
|
fileChain.files.add(ignoreFile.filepath);
|
||||||
|
}
|
||||||
|
if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
|
||||||
|
isIgnored = true;
|
||||||
|
}
|
||||||
|
if (babelrcFile && !isIgnored) {
|
||||||
|
const validatedFile = validateBabelrcFile(babelrcFile);
|
||||||
|
const babelrcLogger = new _printer.ConfigPrinter();
|
||||||
|
const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
|
||||||
|
if (!result) {
|
||||||
|
isIgnored = true;
|
||||||
|
} else {
|
||||||
|
babelRcReport = yield* babelrcLogger.output();
|
||||||
|
mergeChain(fileChain, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (babelrcFile && isIgnored) {
|
||||||
|
fileChain.files.add(babelrcFile.filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (context.showConfig) {
|
||||||
|
console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
|
||||||
|
}
|
||||||
|
const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
|
||||||
|
return {
|
||||||
|
plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
|
||||||
|
presets: isIgnored ? [] : dedupDescriptors(chain.presets),
|
||||||
|
options: isIgnored ? [] : chain.options.map(o => createConfigChainOptions(o)),
|
||||||
|
fileHandling: isIgnored ? "ignored" : "transpile",
|
||||||
|
ignore: ignoreFile || undefined,
|
||||||
|
babelrc: babelrcFile || undefined,
|
||||||
|
config: configFile || undefined,
|
||||||
|
files: chain.files
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
|
||||||
|
if (typeof babelrcRoots === "boolean") return babelrcRoots;
|
||||||
|
const absoluteRoot = context.root;
|
||||||
|
if (babelrcRoots === undefined) {
|
||||||
|
return pkgData.directories.includes(absoluteRoot);
|
||||||
|
}
|
||||||
|
let babelrcPatterns = babelrcRoots;
|
||||||
|
if (!Array.isArray(babelrcPatterns)) {
|
||||||
|
babelrcPatterns = [babelrcPatterns];
|
||||||
|
}
|
||||||
|
babelrcPatterns = babelrcPatterns.map(pat => {
|
||||||
|
return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
|
||||||
|
});
|
||||||
|
if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
|
||||||
|
return pkgData.directories.includes(absoluteRoot);
|
||||||
|
}
|
||||||
|
return babelrcPatterns.some(pat => {
|
||||||
|
if (typeof pat === "string") {
|
||||||
|
pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
|
||||||
|
}
|
||||||
|
return pkgData.directories.some(directory => {
|
||||||
|
return matchPattern(pat, babelrcRootsDirectory, directory, context);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||||
|
filepath: file.filepath,
|
||||||
|
dirname: file.dirname,
|
||||||
|
options: (0, _options.validate)("configfile", file.options, file.filepath)
|
||||||
|
}));
|
||||||
|
const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||||
|
filepath: file.filepath,
|
||||||
|
dirname: file.dirname,
|
||||||
|
options: (0, _options.validate)("babelrcfile", file.options, file.filepath)
|
||||||
|
}));
|
||||||
|
const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||||
|
filepath: file.filepath,
|
||||||
|
dirname: file.dirname,
|
||||||
|
options: (0, _options.validate)("extendsfile", file.options, file.filepath)
|
||||||
|
}));
|
||||||
|
const loadProgrammaticChain = makeChainWalker({
|
||||||
|
root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
|
||||||
|
env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
|
||||||
|
overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
|
||||||
|
overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
|
||||||
|
createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
|
||||||
|
});
|
||||||
|
const loadFileChainWalker = makeChainWalker({
|
||||||
|
root: file => loadFileDescriptors(file),
|
||||||
|
env: (file, envName) => loadFileEnvDescriptors(file)(envName),
|
||||||
|
overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
|
||||||
|
overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
|
||||||
|
createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
|
||||||
|
});
|
||||||
|
function* loadFileChain(input, context, files, baseLogger) {
|
||||||
|
const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
|
||||||
|
chain == null || chain.files.add(input.filepath);
|
||||||
|
return chain;
|
||||||
|
}
|
||||||
|
const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
|
||||||
|
const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
|
||||||
|
const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
|
||||||
|
const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
|
||||||
|
function buildFileLogger(filepath, context, baseLogger) {
|
||||||
|
if (!baseLogger) {
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
|
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
|
||||||
|
filepath
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function buildRootDescriptors({
|
||||||
|
dirname,
|
||||||
|
options
|
||||||
|
}, alias, descriptors) {
|
||||||
|
return descriptors(dirname, options, alias);
|
||||||
|
}
|
||||||
|
function buildProgrammaticLogger(_, context, baseLogger) {
|
||||||
|
var _context$caller;
|
||||||
|
if (!baseLogger) {
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
|
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
|
||||||
|
callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function buildEnvDescriptors({
|
||||||
|
dirname,
|
||||||
|
options
|
||||||
|
}, alias, descriptors, envName) {
|
||||||
|
var _options$env;
|
||||||
|
const opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
|
||||||
|
return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
|
||||||
|
}
|
||||||
|
function buildOverrideDescriptors({
|
||||||
|
dirname,
|
||||||
|
options
|
||||||
|
}, alias, descriptors, index) {
|
||||||
|
var _options$overrides;
|
||||||
|
const opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
|
||||||
|
if (!opts) throw new Error("Assertion failure - missing override");
|
||||||
|
return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
|
||||||
|
}
|
||||||
|
function buildOverrideEnvDescriptors({
|
||||||
|
dirname,
|
||||||
|
options
|
||||||
|
}, alias, descriptors, index, envName) {
|
||||||
|
var _options$overrides2, _override$env;
|
||||||
|
const override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
|
||||||
|
if (!override) throw new Error("Assertion failure - missing override");
|
||||||
|
const opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
|
||||||
|
return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
|
||||||
|
}
|
||||||
|
function makeChainWalker({
|
||||||
|
root,
|
||||||
|
env,
|
||||||
|
overrides,
|
||||||
|
overridesEnv,
|
||||||
|
createLogger
|
||||||
|
}) {
|
||||||
|
return function* chainWalker(input, context, files = new Set(), baseLogger) {
|
||||||
|
const {
|
||||||
|
dirname
|
||||||
|
} = input;
|
||||||
|
const flattenedConfigs = [];
|
||||||
|
const rootOpts = root(input);
|
||||||
|
if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
|
||||||
|
flattenedConfigs.push({
|
||||||
|
config: rootOpts,
|
||||||
|
envName: undefined,
|
||||||
|
index: undefined
|
||||||
|
});
|
||||||
|
const envOpts = env(input, context.envName);
|
||||||
|
if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
|
||||||
|
flattenedConfigs.push({
|
||||||
|
config: envOpts,
|
||||||
|
envName: context.envName,
|
||||||
|
index: undefined
|
||||||
|
});
|
||||||
|
}
|
||||||
|
(rootOpts.options.overrides || []).forEach((_, index) => {
|
||||||
|
const overrideOps = overrides(input, index);
|
||||||
|
if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
|
||||||
|
flattenedConfigs.push({
|
||||||
|
config: overrideOps,
|
||||||
|
index,
|
||||||
|
envName: undefined
|
||||||
|
});
|
||||||
|
const overrideEnvOpts = overridesEnv(input, index, context.envName);
|
||||||
|
if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
|
||||||
|
flattenedConfigs.push({
|
||||||
|
config: overrideEnvOpts,
|
||||||
|
index,
|
||||||
|
envName: context.envName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (flattenedConfigs.some(({
|
||||||
|
config: {
|
||||||
|
options: {
|
||||||
|
ignore,
|
||||||
|
only
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}) => shouldIgnore(context, ignore, only, dirname))) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const chain = emptyChain();
|
||||||
|
const logger = createLogger(input, context, baseLogger);
|
||||||
|
for (const {
|
||||||
|
config,
|
||||||
|
index,
|
||||||
|
envName
|
||||||
|
} of flattenedConfigs) {
|
||||||
|
if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
logger(config, index, envName);
|
||||||
|
yield* mergeChainOpts(chain, config);
|
||||||
|
}
|
||||||
|
return chain;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
|
||||||
|
if (opts.extends === undefined) return true;
|
||||||
|
const file = yield* (0, _index.loadConfig)(opts.extends, dirname, context.envName, context.caller);
|
||||||
|
if (files.has(file)) {
|
||||||
|
throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
|
||||||
|
}
|
||||||
|
files.add(file);
|
||||||
|
const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
|
||||||
|
files.delete(file);
|
||||||
|
if (!fileChain) return false;
|
||||||
|
mergeChain(chain, fileChain);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function mergeChain(target, source) {
|
||||||
|
target.options.push(...source.options);
|
||||||
|
target.plugins.push(...source.plugins);
|
||||||
|
target.presets.push(...source.presets);
|
||||||
|
for (const file of source.files) {
|
||||||
|
target.files.add(file);
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
function* mergeChainOpts(target, {
|
||||||
|
options,
|
||||||
|
plugins,
|
||||||
|
presets
|
||||||
|
}) {
|
||||||
|
target.options.push(options);
|
||||||
|
target.plugins.push(...(yield* plugins()));
|
||||||
|
target.presets.push(...(yield* presets()));
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
function emptyChain() {
|
||||||
|
return {
|
||||||
|
options: [],
|
||||||
|
presets: [],
|
||||||
|
plugins: [],
|
||||||
|
files: new Set()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function createConfigChainOptions(opts) {
|
||||||
|
const options = Object.assign({}, opts);
|
||||||
|
delete options.extends;
|
||||||
|
delete options.env;
|
||||||
|
delete options.overrides;
|
||||||
|
delete options.plugins;
|
||||||
|
delete options.presets;
|
||||||
|
delete options.passPerPreset;
|
||||||
|
delete options.ignore;
|
||||||
|
delete options.only;
|
||||||
|
delete options.test;
|
||||||
|
delete options.include;
|
||||||
|
delete options.exclude;
|
||||||
|
if (hasOwnProperty.call(options, "sourceMap")) {
|
||||||
|
options.sourceMaps = options.sourceMap;
|
||||||
|
delete options.sourceMap;
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
function dedupDescriptors(items) {
|
||||||
|
const map = new Map();
|
||||||
|
const descriptors = [];
|
||||||
|
for (const item of items) {
|
||||||
|
if (typeof item.value === "function") {
|
||||||
|
const fnKey = item.value;
|
||||||
|
let nameMap = map.get(fnKey);
|
||||||
|
if (!nameMap) {
|
||||||
|
nameMap = new Map();
|
||||||
|
map.set(fnKey, nameMap);
|
||||||
|
}
|
||||||
|
let desc = nameMap.get(item.name);
|
||||||
|
if (!desc) {
|
||||||
|
desc = {
|
||||||
|
value: item
|
||||||
|
};
|
||||||
|
descriptors.push(desc);
|
||||||
|
if (!item.ownPass) nameMap.set(item.name, desc);
|
||||||
|
} else {
|
||||||
|
desc.value = item;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
descriptors.push({
|
||||||
|
value: item
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return descriptors.reduce((acc, desc) => {
|
||||||
|
acc.push(desc.value);
|
||||||
|
return acc;
|
||||||
|
}, []);
|
||||||
|
}
|
||||||
|
function configIsApplicable({
|
||||||
|
options
|
||||||
|
}, dirname, context, configName) {
|
||||||
|
return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
|
||||||
|
}
|
||||||
|
function configFieldIsApplicable(context, test, dirname, configName) {
|
||||||
|
const patterns = Array.isArray(test) ? test : [test];
|
||||||
|
return matchesPatterns(context, patterns, dirname, configName);
|
||||||
|
}
|
||||||
|
function ignoreListReplacer(_key, value) {
|
||||||
|
if (value instanceof RegExp) {
|
||||||
|
return String(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
function shouldIgnore(context, ignore, only, dirname) {
|
||||||
|
if (ignore && matchesPatterns(context, ignore, dirname)) {
|
||||||
|
var _context$filename;
|
||||||
|
const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
|
||||||
|
debug(message);
|
||||||
|
if (context.showConfig) {
|
||||||
|
console.log(message);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (only && !matchesPatterns(context, only, dirname)) {
|
||||||
|
var _context$filename2;
|
||||||
|
const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
|
||||||
|
debug(message);
|
||||||
|
if (context.showConfig) {
|
||||||
|
console.log(message);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function matchesPatterns(context, patterns, dirname, configName) {
|
||||||
|
return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context, configName));
|
||||||
|
}
|
||||||
|
function matchPattern(pattern, dirname, pathToTest, context, configName) {
|
||||||
|
if (typeof pattern === "function") {
|
||||||
|
return !!(0, _rewriteStackTrace.endHiddenCallStack)(pattern)(pathToTest, {
|
||||||
|
dirname,
|
||||||
|
envName: context.envName,
|
||||||
|
caller: context.caller
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (typeof pathToTest !== "string") {
|
||||||
|
throw new _configError.default(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`, configName);
|
||||||
|
}
|
||||||
|
if (typeof pattern === "string") {
|
||||||
|
pattern = (0, _patternToRegex.default)(pattern, dirname);
|
||||||
|
}
|
||||||
|
return pattern.test(pathToTest);
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=config-chain.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/config-chain.js.map
generated
vendored
Normal file
190
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/config-descriptors.js
generated
vendored
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.createCachedDescriptors = createCachedDescriptors;
|
||||||
|
exports.createDescriptor = createDescriptor;
|
||||||
|
exports.createUncachedDescriptors = createUncachedDescriptors;
|
||||||
|
function _gensync() {
|
||||||
|
const data = require("gensync");
|
||||||
|
_gensync = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
var _functional = require("../gensync-utils/functional.js");
|
||||||
|
var _index = require("./files/index.js");
|
||||||
|
var _item = require("./item.js");
|
||||||
|
var _caching = require("./caching.js");
|
||||||
|
var _resolveTargets = require("./resolve-targets.js");
|
||||||
|
function isEqualDescriptor(a, b) {
|
||||||
|
var _a$file, _b$file, _a$file2, _b$file2;
|
||||||
|
return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && ((_a$file = a.file) == null ? void 0 : _a$file.request) === ((_b$file = b.file) == null ? void 0 : _b$file.request) && ((_a$file2 = a.file) == null ? void 0 : _a$file2.resolved) === ((_b$file2 = b.file) == null ? void 0 : _b$file2.resolved);
|
||||||
|
}
|
||||||
|
function* handlerOf(value) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
|
||||||
|
if (typeof options.browserslistConfigFile === "string") {
|
||||||
|
options.browserslistConfigFile = (0, _resolveTargets.resolveBrowserslistConfigFile)(options.browserslistConfigFile, dirname);
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
function createCachedDescriptors(dirname, options, alias) {
|
||||||
|
const {
|
||||||
|
plugins,
|
||||||
|
presets,
|
||||||
|
passPerPreset
|
||||||
|
} = options;
|
||||||
|
return {
|
||||||
|
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
||||||
|
plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => handlerOf([]),
|
||||||
|
presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => handlerOf([])
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function createUncachedDescriptors(dirname, options, alias) {
|
||||||
|
return {
|
||||||
|
options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
|
||||||
|
plugins: (0, _functional.once)(() => createPluginDescriptors(options.plugins || [], dirname, alias)),
|
||||||
|
presets: (0, _functional.once)(() => createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const PRESET_DESCRIPTOR_CACHE = new WeakMap();
|
||||||
|
const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
||||||
|
const dirname = cache.using(dir => dir);
|
||||||
|
return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCache)(function* (passPerPreset) {
|
||||||
|
const descriptors = yield* createPresetDescriptors(items, dirname, alias, passPerPreset);
|
||||||
|
return descriptors.map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
const PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
|
||||||
|
const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
|
||||||
|
const dirname = cache.using(dir => dir);
|
||||||
|
return (0, _caching.makeStrongCache)(function* (alias) {
|
||||||
|
const descriptors = yield* createPluginDescriptors(items, dirname, alias);
|
||||||
|
return descriptors.map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const DEFAULT_OPTIONS = {};
|
||||||
|
function loadCachedDescriptor(cache, desc) {
|
||||||
|
const {
|
||||||
|
value,
|
||||||
|
options = DEFAULT_OPTIONS
|
||||||
|
} = desc;
|
||||||
|
if (options === false) return desc;
|
||||||
|
let cacheByOptions = cache.get(value);
|
||||||
|
if (!cacheByOptions) {
|
||||||
|
cacheByOptions = new WeakMap();
|
||||||
|
cache.set(value, cacheByOptions);
|
||||||
|
}
|
||||||
|
let possibilities = cacheByOptions.get(options);
|
||||||
|
if (!possibilities) {
|
||||||
|
possibilities = [];
|
||||||
|
cacheByOptions.set(options, possibilities);
|
||||||
|
}
|
||||||
|
if (!possibilities.includes(desc)) {
|
||||||
|
const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc));
|
||||||
|
if (matches.length > 0) {
|
||||||
|
return matches[0];
|
||||||
|
}
|
||||||
|
possibilities.push(desc);
|
||||||
|
}
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
function* createPresetDescriptors(items, dirname, alias, passPerPreset) {
|
||||||
|
return yield* createDescriptors("preset", items, dirname, alias, passPerPreset);
|
||||||
|
}
|
||||||
|
function* createPluginDescriptors(items, dirname, alias) {
|
||||||
|
return yield* createDescriptors("plugin", items, dirname, alias);
|
||||||
|
}
|
||||||
|
function* createDescriptors(type, items, dirname, alias, ownPass) {
|
||||||
|
const descriptors = yield* _gensync().all(items.map((item, index) => createDescriptor(item, dirname, {
|
||||||
|
type,
|
||||||
|
alias: `${alias}$${index}`,
|
||||||
|
ownPass: !!ownPass
|
||||||
|
})));
|
||||||
|
assertNoDuplicates(descriptors);
|
||||||
|
return descriptors;
|
||||||
|
}
|
||||||
|
function* createDescriptor(pair, dirname, {
|
||||||
|
type,
|
||||||
|
alias,
|
||||||
|
ownPass
|
||||||
|
}) {
|
||||||
|
const desc = (0, _item.getItemDescriptor)(pair);
|
||||||
|
if (desc) {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
let name;
|
||||||
|
let options;
|
||||||
|
let value = pair;
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
if (value.length === 3) {
|
||||||
|
[value, options, name] = value;
|
||||||
|
} else {
|
||||||
|
[value, options] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let file = undefined;
|
||||||
|
let filepath = null;
|
||||||
|
if (typeof value === "string") {
|
||||||
|
if (typeof type !== "string") {
|
||||||
|
throw new Error("To resolve a string-based item, the type of item must be given");
|
||||||
|
}
|
||||||
|
const resolver = type === "plugin" ? _index.loadPlugin : _index.loadPreset;
|
||||||
|
const request = value;
|
||||||
|
({
|
||||||
|
filepath,
|
||||||
|
value
|
||||||
|
} = yield* resolver(value, dirname));
|
||||||
|
file = {
|
||||||
|
request,
|
||||||
|
resolved: filepath
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (!value) {
|
||||||
|
throw new Error(`Unexpected falsy value: ${String(value)}`);
|
||||||
|
}
|
||||||
|
if (typeof value === "object" && value.__esModule) {
|
||||||
|
if (value.default) {
|
||||||
|
value = value.default;
|
||||||
|
} else {
|
||||||
|
throw new Error("Must export a default export when using ES6 modules.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeof value !== "object" && typeof value !== "function") {
|
||||||
|
throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`);
|
||||||
|
}
|
||||||
|
if (filepath !== null && typeof value === "object" && value) {
|
||||||
|
throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name,
|
||||||
|
alias: filepath || alias,
|
||||||
|
value,
|
||||||
|
options,
|
||||||
|
dirname,
|
||||||
|
ownPass,
|
||||||
|
file
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function assertNoDuplicates(items) {
|
||||||
|
const map = new Map();
|
||||||
|
for (const item of items) {
|
||||||
|
if (typeof item.value !== "function") continue;
|
||||||
|
let nameMap = map.get(item.value);
|
||||||
|
if (!nameMap) {
|
||||||
|
nameMap = new Set();
|
||||||
|
map.set(item.value, nameMap);
|
||||||
|
}
|
||||||
|
if (nameMap.has(item.name)) {
|
||||||
|
const conflicts = items.filter(i => i.value === item.value);
|
||||||
|
throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n"));
|
||||||
|
}
|
||||||
|
nameMap.add(item.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=config-descriptors.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map
generated
vendored
Normal file
290
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/configuration.js
generated
vendored
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.ROOT_CONFIG_FILENAMES = void 0;
|
||||||
|
exports.findConfigUpwards = findConfigUpwards;
|
||||||
|
exports.findRelativeConfig = findRelativeConfig;
|
||||||
|
exports.findRootConfig = findRootConfig;
|
||||||
|
exports.loadConfig = loadConfig;
|
||||||
|
exports.resolveShowConfigPath = resolveShowConfigPath;
|
||||||
|
function _debug() {
|
||||||
|
const data = require("debug");
|
||||||
|
_debug = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _fs() {
|
||||||
|
const data = require("fs");
|
||||||
|
_fs = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _path() {
|
||||||
|
const data = require("path");
|
||||||
|
_path = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _json() {
|
||||||
|
const data = require("json5");
|
||||||
|
_json = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _gensync() {
|
||||||
|
const data = require("gensync");
|
||||||
|
_gensync = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
var _caching = require("../caching.js");
|
||||||
|
var _configApi = require("../helpers/config-api.js");
|
||||||
|
var _utils = require("./utils.js");
|
||||||
|
var _moduleTypes = require("./module-types.js");
|
||||||
|
var _patternToRegex = require("../pattern-to-regex.js");
|
||||||
|
var _configError = require("../../errors/config-error.js");
|
||||||
|
var fs = require("../../gensync-utils/fs.js");
|
||||||
|
require("module");
|
||||||
|
var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
|
||||||
|
var _async = require("../../gensync-utils/async.js");
|
||||||
|
const debug = _debug()("babel:config:loading:files:configuration");
|
||||||
|
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json", "babel.config.cts", "babel.config.ts", "babel.config.mts"];
|
||||||
|
const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json", ".babelrc.cts"];
|
||||||
|
const BABELIGNORE_FILENAME = ".babelignore";
|
||||||
|
const runConfig = (0, _caching.makeWeakCache)(function* runConfig(options, cache) {
|
||||||
|
yield* [];
|
||||||
|
return {
|
||||||
|
options: (0, _rewriteStackTrace.endHiddenCallStack)(options)((0, _configApi.makeConfigAPI)(cache)),
|
||||||
|
cacheNeedsConfiguration: !cache.configured()
|
||||||
|
};
|
||||||
|
});
|
||||||
|
function* readConfigCode(filepath, data) {
|
||||||
|
if (!_fs().existsSync(filepath)) return null;
|
||||||
|
let options = yield* (0, _moduleTypes.default)(filepath, (yield* (0, _async.isAsync)()) ? "auto" : "require", "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously " + "or when using the Node.js `--experimental-require-module` flag.", "You appear to be using a configuration file that contains top-level " + "await, which is only supported when running Babel asynchronously.");
|
||||||
|
let cacheNeedsConfiguration = false;
|
||||||
|
if (typeof options === "function") {
|
||||||
|
({
|
||||||
|
options,
|
||||||
|
cacheNeedsConfiguration
|
||||||
|
} = yield* runConfig(options, data));
|
||||||
|
}
|
||||||
|
if (!options || typeof options !== "object" || Array.isArray(options)) {
|
||||||
|
throw new _configError.default(`Configuration should be an exported JavaScript object.`, filepath);
|
||||||
|
}
|
||||||
|
if (typeof options.then === "function") {
|
||||||
|
options.catch == null || options.catch(() => {});
|
||||||
|
throw new _configError.default(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`, filepath);
|
||||||
|
}
|
||||||
|
if (cacheNeedsConfiguration) throwConfigError(filepath);
|
||||||
|
return buildConfigFileObject(options, filepath);
|
||||||
|
}
|
||||||
|
const cfboaf = new WeakMap();
|
||||||
|
function buildConfigFileObject(options, filepath) {
|
||||||
|
let configFilesByFilepath = cfboaf.get(options);
|
||||||
|
if (!configFilesByFilepath) {
|
||||||
|
cfboaf.set(options, configFilesByFilepath = new Map());
|
||||||
|
}
|
||||||
|
let configFile = configFilesByFilepath.get(filepath);
|
||||||
|
if (!configFile) {
|
||||||
|
configFile = {
|
||||||
|
filepath,
|
||||||
|
dirname: _path().dirname(filepath),
|
||||||
|
options
|
||||||
|
};
|
||||||
|
configFilesByFilepath.set(filepath, configFile);
|
||||||
|
}
|
||||||
|
return configFile;
|
||||||
|
}
|
||||||
|
const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => {
|
||||||
|
const babel = file.options.babel;
|
||||||
|
if (babel === undefined) return null;
|
||||||
|
if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
|
||||||
|
throw new _configError.default(`.babel property must be an object`, file.filepath);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
filepath: file.filepath,
|
||||||
|
dirname: file.dirname,
|
||||||
|
options: babel
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
||||||
|
let options;
|
||||||
|
try {
|
||||||
|
options = _json().parse(content);
|
||||||
|
} catch (err) {
|
||||||
|
throw new _configError.default(`Error while parsing config - ${err.message}`, filepath);
|
||||||
|
}
|
||||||
|
if (!options) throw new _configError.default(`No config detected`, filepath);
|
||||||
|
if (typeof options !== "object") {
|
||||||
|
throw new _configError.default(`Config returned typeof ${typeof options}`, filepath);
|
||||||
|
}
|
||||||
|
if (Array.isArray(options)) {
|
||||||
|
throw new _configError.default(`Expected config object but found array`, filepath);
|
||||||
|
}
|
||||||
|
delete options.$schema;
|
||||||
|
return {
|
||||||
|
filepath,
|
||||||
|
dirname: _path().dirname(filepath),
|
||||||
|
options
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
|
||||||
|
const ignoreDir = _path().dirname(filepath);
|
||||||
|
const ignorePatterns = content.split("\n").map(line => line.replace(/#.*$/, "").trim()).filter(Boolean);
|
||||||
|
for (const pattern of ignorePatterns) {
|
||||||
|
if (pattern.startsWith("!")) {
|
||||||
|
throw new _configError.default(`Negation of file paths is not supported.`, filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
filepath,
|
||||||
|
dirname: _path().dirname(filepath),
|
||||||
|
ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
function findConfigUpwards(rootDir) {
|
||||||
|
let dirname = rootDir;
|
||||||
|
for (;;) {
|
||||||
|
for (const filename of ROOT_CONFIG_FILENAMES) {
|
||||||
|
if (_fs().existsSync(_path().join(dirname, filename))) {
|
||||||
|
return dirname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const nextDir = _path().dirname(dirname);
|
||||||
|
if (dirname === nextDir) break;
|
||||||
|
dirname = nextDir;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function* findRelativeConfig(packageData, envName, caller) {
|
||||||
|
let config = null;
|
||||||
|
let ignore = null;
|
||||||
|
const dirname = _path().dirname(packageData.filepath);
|
||||||
|
for (const loc of packageData.directories) {
|
||||||
|
if (!config) {
|
||||||
|
var _packageData$pkg;
|
||||||
|
config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null);
|
||||||
|
}
|
||||||
|
if (!ignore) {
|
||||||
|
const ignoreLoc = _path().join(loc, BABELIGNORE_FILENAME);
|
||||||
|
ignore = yield* readIgnoreConfig(ignoreLoc);
|
||||||
|
if (ignore) {
|
||||||
|
debug("Found ignore %o from %o.", ignore.filepath, dirname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
config,
|
||||||
|
ignore
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function findRootConfig(dirname, envName, caller) {
|
||||||
|
return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
|
||||||
|
}
|
||||||
|
function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) {
|
||||||
|
const configs = yield* _gensync().all(names.map(filename => readConfig(_path().join(dirname, filename), envName, caller)));
|
||||||
|
const config = configs.reduce((previousConfig, config) => {
|
||||||
|
if (config && previousConfig) {
|
||||||
|
throw new _configError.default(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`);
|
||||||
|
}
|
||||||
|
return config || previousConfig;
|
||||||
|
}, previousConfig);
|
||||||
|
if (config) {
|
||||||
|
debug("Found configuration %o from %o.", config.filepath, dirname);
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
function* loadConfig(name, dirname, envName, caller) {
|
||||||
|
const filepath = (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
|
||||||
|
paths: [b]
|
||||||
|
}, M = require("module")) => {
|
||||||
|
let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
|
||||||
|
if (f) return f;
|
||||||
|
f = new Error(`Cannot resolve module '${r}'`);
|
||||||
|
f.code = "MODULE_NOT_FOUND";
|
||||||
|
throw f;
|
||||||
|
})(name, {
|
||||||
|
paths: [dirname]
|
||||||
|
});
|
||||||
|
const conf = yield* readConfig(filepath, envName, caller);
|
||||||
|
if (!conf) {
|
||||||
|
throw new _configError.default(`Config file contains no configuration data`, filepath);
|
||||||
|
}
|
||||||
|
debug("Loaded config %o from %o.", name, dirname);
|
||||||
|
return conf;
|
||||||
|
}
|
||||||
|
function readConfig(filepath, envName, caller) {
|
||||||
|
const ext = _path().extname(filepath);
|
||||||
|
switch (ext) {
|
||||||
|
case ".js":
|
||||||
|
case ".cjs":
|
||||||
|
case ".mjs":
|
||||||
|
case ".ts":
|
||||||
|
case ".cts":
|
||||||
|
case ".mts":
|
||||||
|
return readConfigCode(filepath, {
|
||||||
|
envName,
|
||||||
|
caller
|
||||||
|
});
|
||||||
|
default:
|
||||||
|
return readConfigJSON5(filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function* resolveShowConfigPath(dirname) {
|
||||||
|
const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;
|
||||||
|
if (targetPath != null) {
|
||||||
|
const absolutePath = _path().resolve(dirname, targetPath);
|
||||||
|
const stats = yield* fs.stat(absolutePath);
|
||||||
|
if (!stats.isFile()) {
|
||||||
|
throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`);
|
||||||
|
}
|
||||||
|
return absolutePath;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function throwConfigError(filepath) {
|
||||||
|
throw new _configError.default(`\
|
||||||
|
Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
|
||||||
|
for various types of caching, using the first param of their handler functions:
|
||||||
|
|
||||||
|
module.exports = function(api) {
|
||||||
|
// The API exposes the following:
|
||||||
|
|
||||||
|
// Cache the returned value forever and don't call this function again.
|
||||||
|
api.cache(true);
|
||||||
|
|
||||||
|
// Don't cache at all. Not recommended because it will be very slow.
|
||||||
|
api.cache(false);
|
||||||
|
|
||||||
|
// Cached based on the value of some function. If this function returns a value different from
|
||||||
|
// a previously-encountered value, the plugins will re-evaluate.
|
||||||
|
var env = api.cache(() => process.env.NODE_ENV);
|
||||||
|
|
||||||
|
// If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
|
||||||
|
// any possible NODE_ENV value that might come up during plugin execution.
|
||||||
|
var isProd = api.cache(() => process.env.NODE_ENV === "production");
|
||||||
|
|
||||||
|
// .cache(fn) will perform a linear search though instances to find the matching plugin based
|
||||||
|
// based on previous instantiated plugins. If you want to recreate the plugin and discard the
|
||||||
|
// previous instance whenever something changes, you may use:
|
||||||
|
var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
|
||||||
|
|
||||||
|
// Note, we also expose the following more-verbose versions of the above examples:
|
||||||
|
api.cache.forever(); // api.cache(true)
|
||||||
|
api.cache.never(); // api.cache(false)
|
||||||
|
api.cache.using(fn); // api.cache(fn)
|
||||||
|
|
||||||
|
// Return the value that will be cached.
|
||||||
|
return { };
|
||||||
|
};`, filepath);
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=configuration.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/configuration.js.map
generated
vendored
Normal file
6
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/import.cjs
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
module.exports = function import_(filepath) {
|
||||||
|
return import(filepath);
|
||||||
|
};
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=import.cjs.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/import.cjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["module","exports","import_","filepath"],"sources":["../../../src/config/files/import.cjs"],"sourcesContent":["// We keep this in a separate file so that in older node versions, where\n// import() isn't supported, we can try/catch around the require() call\n// when loading this file.\n\nmodule.exports = function import_(filepath) {\n return import(filepath);\n};\n"],"mappings":"AAIAA,MAAM,CAACC,OAAO,GAAG,SAASC,OAAOA,CAACC,QAAQ,EAAE;EAC1C,OAAO,OAAOA,QAAQ,CAAC;AACzB,CAAC;AAAC","ignoreList":[]}
|
||||||
58
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/index-browser.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.ROOT_CONFIG_FILENAMES = void 0;
|
||||||
|
exports.findConfigUpwards = findConfigUpwards;
|
||||||
|
exports.findPackageData = findPackageData;
|
||||||
|
exports.findRelativeConfig = findRelativeConfig;
|
||||||
|
exports.findRootConfig = findRootConfig;
|
||||||
|
exports.loadConfig = loadConfig;
|
||||||
|
exports.loadPlugin = loadPlugin;
|
||||||
|
exports.loadPreset = loadPreset;
|
||||||
|
exports.resolvePlugin = resolvePlugin;
|
||||||
|
exports.resolvePreset = resolvePreset;
|
||||||
|
exports.resolveShowConfigPath = resolveShowConfigPath;
|
||||||
|
function findConfigUpwards(rootDir) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function* findPackageData(filepath) {
|
||||||
|
return {
|
||||||
|
filepath,
|
||||||
|
directories: [],
|
||||||
|
pkg: null,
|
||||||
|
isPackage: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* findRelativeConfig(pkgData, envName, caller) {
|
||||||
|
return {
|
||||||
|
config: null,
|
||||||
|
ignore: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function* findRootConfig(dirname, envName, caller) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function* loadConfig(name, dirname, envName, caller) {
|
||||||
|
throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
|
||||||
|
}
|
||||||
|
function* resolveShowConfigPath(dirname) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const ROOT_CONFIG_FILENAMES = exports.ROOT_CONFIG_FILENAMES = [];
|
||||||
|
function resolvePlugin(name, dirname) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function resolvePreset(name, dirname) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function loadPlugin(name, dirname) {
|
||||||
|
throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
|
||||||
|
}
|
||||||
|
function loadPreset(name, dirname) {
|
||||||
|
throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=index-browser.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["findConfigUpwards","rootDir","findPackageData","filepath","directories","pkg","isPackage","findRelativeConfig","pkgData","envName","caller","config","ignore","findRootConfig","dirname","loadConfig","name","Error","resolveShowConfigPath","ROOT_CONFIG_FILENAMES","exports","resolvePlugin","resolvePreset","loadPlugin","loadPreset"],"sources":["../../../src/config/files/index-browser.ts"],"sourcesContent":["/* c8 ignore start */\n\nimport type { Handler } from \"gensync\";\n\nimport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\n\nimport type { CallerMetadata } from \"../validation/options.ts\";\n\nexport type { ConfigFile, IgnoreFile, RelativeConfig, FilePackageData };\n\nexport function findConfigUpwards(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rootDir: string,\n): string | null {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* findPackageData(filepath: string): Handler<FilePackageData> {\n return {\n filepath,\n directories: [],\n pkg: null,\n isPackage: false,\n };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRelativeConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n pkgData: FilePackageData,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n return { config: null, ignore: null };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRootConfig(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* loadConfig(\n name: string,\n dirname: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n envName: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);\n}\n\n// eslint-disable-next-line require-yield\nexport function* resolveShowConfigPath(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname: string,\n): Handler<string | null> {\n return null;\n}\n\nexport const ROOT_CONFIG_FILENAMES: string[] = [];\n\ntype Resolved =\n | { loader: \"require\"; filepath: string }\n | { loader: \"import\"; filepath: string };\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePlugin(name: string, dirname: string): Resolved | null {\n return null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePreset(name: string, dirname: string): Resolved | null {\n return null;\n}\n\nexport function loadPlugin(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load plugin ${name} relative to ${dirname} in a browser`,\n );\n}\n\nexport function loadPreset(\n name: string,\n dirname: string,\n): Handler<{\n filepath: string;\n value: unknown;\n}> {\n throw new Error(\n `Cannot load preset ${name} relative to ${dirname} in a browser`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeO,SAASA,iBAAiBA,CAE/BC,OAAe,EACA;EACf,OAAO,IAAI;AACb;AAGO,UAAUC,eAAeA,CAACC,QAAgB,EAA4B;EAC3E,OAAO;IACLA,QAAQ;IACRC,WAAW,EAAE,EAAE;IACfC,GAAG,EAAE,IAAI;IACTC,SAAS,EAAE;EACb,CAAC;AACH;AAGO,UAAUC,kBAAkBA,CAEjCC,OAAwB,EAExBC,OAAe,EAEfC,MAAkC,EACT;EACzB,OAAO;IAAEC,MAAM,EAAE,IAAI;IAAEC,MAAM,EAAE;EAAK,CAAC;AACvC;AAGO,UAAUC,cAAcA,CAE7BC,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACN;EAC5B,OAAO,IAAI;AACb;AAGO,UAAUK,UAAUA,CACzBC,IAAY,EACZF,OAAe,EAEfL,OAAe,EAEfC,MAAkC,EACb;EACrB,MAAM,IAAIO,KAAK,CAAC,eAAeD,IAAI,gBAAgBF,OAAO,eAAe,CAAC;AAC5E;AAGO,UAAUI,qBAAqBA,CAEpCJ,OAAe,EACS;EACxB,OAAO,IAAI;AACb;AAEO,MAAMK,qBAA+B,GAAAC,OAAA,CAAAD,qBAAA,GAAG,EAAE;AAO1C,SAASE,aAAaA,CAACL,IAAY,EAAEF,OAAe,EAAmB;EAC5E,OAAO,IAAI;AACb;AAGO,SAASQ,aAAaA,CAACN,IAAY,EAAEF,OAAe,EAAmB;EAC5E,OAAO,IAAI;AACb;AAEO,SAASS,UAAUA,CACxBP,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAEO,SAASU,UAAUA,CACxBR,IAAY,EACZF,OAAe,EAId;EACD,MAAM,IAAIG,KAAK,CACb,sBAAsBD,IAAI,gBAAgBF,OAAO,eACnD,CAAC;AACH;AAAC","ignoreList":[]}
|
||||||
78
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/index.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.ROOT_CONFIG_FILENAMES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "findConfigUpwards", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.findConfigUpwards;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "findPackageData", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _package.findPackageData;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "findRelativeConfig", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.findRelativeConfig;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "findRootConfig", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.findRootConfig;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "loadConfig", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.loadConfig;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "loadPlugin", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _plugins.loadPlugin;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "loadPreset", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _plugins.loadPreset;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "resolvePlugin", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _plugins.resolvePlugin;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "resolvePreset", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _plugins.resolvePreset;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "resolveShowConfigPath", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _configuration.resolveShowConfigPath;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var _package = require("./package.js");
|
||||||
|
var _configuration = require("./configuration.js");
|
||||||
|
var _plugins = require("./plugins.js");
|
||||||
|
({});
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.js.map
|
||||||
1
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/index.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["_package","require","_configuration","_plugins"],"sources":["../../../src/config/files/index.ts"],"sourcesContent":["type indexBrowserType = typeof import(\"./index-browser\");\ntype indexType = typeof import(\"./index\");\n\n// Kind of gross, but essentially asserting that the exports of this module are the same as the\n// exports of index-browser, since this file may be replaced at bundle time with index-browser.\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n({}) as any as indexBrowserType as indexType;\n\nexport { findPackageData } from \"./package.ts\";\n\nexport {\n findConfigUpwards,\n findRelativeConfig,\n findRootConfig,\n loadConfig,\n resolveShowConfigPath,\n ROOT_CONFIG_FILENAMES,\n} from \"./configuration.ts\";\nexport type {\n ConfigFile,\n IgnoreFile,\n RelativeConfig,\n FilePackageData,\n} from \"./types.ts\";\nexport {\n loadPlugin,\n loadPreset,\n resolvePlugin,\n resolvePreset,\n} from \"./plugins.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAcA,IAAAE,QAAA,GAAAF,OAAA;AAlBA,CAAC,CAAC,CAAC;AAA0C","ignoreList":[]}
|
||||||
203
fotograf-de-scraper/frontend/node_modules/@babel/core/lib/config/files/module-types.js
generated
vendored
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.default = loadCodeDefault;
|
||||||
|
exports.supportsESM = void 0;
|
||||||
|
var _async = require("../../gensync-utils/async.js");
|
||||||
|
function _path() {
|
||||||
|
const data = require("path");
|
||||||
|
_path = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _url() {
|
||||||
|
const data = require("url");
|
||||||
|
_url = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
require("module");
|
||||||
|
function _semver() {
|
||||||
|
const data = require("semver");
|
||||||
|
_semver = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
function _debug() {
|
||||||
|
const data = require("debug");
|
||||||
|
_debug = function () {
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
|
||||||
|
var _configError = require("../../errors/config-error.js");
|
||||||
|
var _transformFile = require("../../transform-file.js");
|
||||||
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
||||||
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
||||||
|
const debug = _debug()("babel:config:loading:files:module-types");
|
||||||
|
try {
|
||||||
|
var import_ = require("./import.cjs");
|
||||||
|
} catch (_unused) {}
|
||||||
|
const supportsESM = exports.supportsESM = _semver().satisfies(process.versions.node, "^12.17 || >=13.2");
|
||||||
|
const LOADING_CJS_FILES = new Set();
|
||||||
|
function loadCjsDefault(filepath) {
|
||||||
|
if (LOADING_CJS_FILES.has(filepath)) {
|
||||||
|
debug("Auto-ignoring usage of config %o.", filepath);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
let module;
|
||||||
|
try {
|
||||||
|
LOADING_CJS_FILES.add(filepath);
|
||||||
|
module = (0, _rewriteStackTrace.endHiddenCallStack)(require)(filepath);
|
||||||
|
} finally {
|
||||||
|
LOADING_CJS_FILES.delete(filepath);
|
||||||
|
}
|
||||||
|
return module != null && (module.__esModule || module[Symbol.toStringTag] === "Module") ? module.default || (arguments[1] ? module : undefined) : module;
|
||||||
|
}
|
||||||
|
const loadMjsFromPath = (0, _rewriteStackTrace.endHiddenCallStack)(function () {
|
||||||
|
var _loadMjsFromPath = _asyncToGenerator(function* (filepath) {
|
||||||
|
const url = (0, _url().pathToFileURL)(filepath).toString() + "?import";
|
||||||
|
if (!import_) {
|
||||||
|
throw new _configError.default("Internal error: Native ECMAScript modules aren't supported by this platform.\n", filepath);
|
||||||
|
}
|
||||||
|
return yield import_(url);
|
||||||
|
});
|
||||||
|
function loadMjsFromPath(_x) {
|
||||||
|
return _loadMjsFromPath.apply(this, arguments);
|
||||||
|
}
|
||||||
|
return loadMjsFromPath;
|
||||||
|
}());
|
||||||
|
const tsNotSupportedError = ext => `\
|
||||||
|
You are using a ${ext} config file, but Babel only supports transpiling .cts configs. Either:
|
||||||
|
- Use a .cts config file
|
||||||
|
- Update to Node.js 23.6.0, which has native TypeScript support
|
||||||
|
- Install tsx to transpile ${ext} files on the fly\
|
||||||
|
`;
|
||||||
|
const SUPPORTED_EXTENSIONS = {
|
||||||
|
".js": "unknown",
|
||||||
|
".mjs": "esm",
|
||||||
|
".cjs": "cjs",
|
||||||
|
".ts": "unknown",
|
||||||
|
".mts": "esm",
|
||||||
|
".cts": "cjs"
|
||||||
|
};
|
||||||
|
const asyncModules = new Set();
|
||||||
|
function* loadCodeDefault(filepath, loader, esmError, tlaError) {
|
||||||
|
let async;
|
||||||
|
const ext = _path().extname(filepath);
|
||||||
|
const isTS = ext === ".ts" || ext === ".cts" || ext === ".mts";
|
||||||
|
const type = SUPPORTED_EXTENSIONS[hasOwnProperty.call(SUPPORTED_EXTENSIONS, ext) ? ext : ".js"];
|
||||||
|
const pattern = `${loader} ${type}`;
|
||||||
|
switch (pattern) {
|
||||||
|
case "require cjs":
|
||||||
|
case "auto cjs":
|
||||||
|
if (isTS) {
|
||||||
|
return ensureTsSupport(filepath, ext, () => loadCjsDefault(filepath));
|
||||||
|
} else {
|
||||||
|
return loadCjsDefault(filepath, arguments[2]);
|
||||||
|
}
|
||||||
|
case "auto unknown":
|
||||||
|
case "require unknown":
|
||||||
|
case "require esm":
|
||||||
|
try {
|
||||||
|
if (isTS) {
|
||||||
|
return ensureTsSupport(filepath, ext, () => loadCjsDefault(filepath));
|
||||||
|
} else {
|
||||||
|
return loadCjsDefault(filepath, arguments[2]);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (e.code === "ERR_REQUIRE_ASYNC_MODULE" || e.code === "ERR_REQUIRE_CYCLE_MODULE" && asyncModules.has(filepath)) {
|
||||||
|
asyncModules.add(filepath);
|
||||||
|
if (!(async != null ? async : async = yield* (0, _async.isAsync)())) {
|
||||||
|
throw new _configError.default(tlaError, filepath);
|
||||||
|
}
|
||||||
|
} else if (e.code === "ERR_REQUIRE_ESM" || type === "esm") {} else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "auto esm":
|
||||||
|
if (async != null ? async : async = yield* (0, _async.isAsync)()) {
|
||||||
|
const promise = isTS ? ensureTsSupport(filepath, ext, () => loadMjsFromPath(filepath)) : loadMjsFromPath(filepath);
|
||||||
|
return (yield* (0, _async.waitFor)(promise)).default;
|
||||||
|
}
|
||||||
|
if (isTS) {
|
||||||
|
throw new _configError.default(tsNotSupportedError(ext), filepath);
|
||||||
|
} else {
|
||||||
|
throw new _configError.default(esmError, filepath);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new Error("Internal Babel error: unreachable code.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function ensureTsSupport(filepath, ext, callback) {
|
||||||
|
if (process.features.typescript || require.extensions[".ts"] || require.extensions[".cts"] || require.extensions[".mts"]) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
if (ext !== ".cts") {
|
||||||
|
throw new _configError.default(tsNotSupportedError(ext), filepath);
|
||||||
|
}
|
||||||
|
const opts = {
|
||||||
|
babelrc: false,
|
||||||
|
configFile: false,
|
||||||
|
sourceType: "unambiguous",
|
||||||
|
sourceMaps: "inline",
|
||||||
|
sourceFileName: _path().basename(filepath),
|
||||||
|
presets: [[getTSPreset(filepath), Object.assign({
|
||||||
|
onlyRemoveTypeImports: true,
|
||||||
|
optimizeConstEnums: true
|
||||||
|
}, {
|
||||||
|
allowDeclareFields: true
|
||||||
|
})]]
|
||||||
|
};
|
||||||
|
let handler = function (m, filename) {
|
||||||
|
if (handler && filename.endsWith(".cts")) {
|
||||||
|
try {
|
||||||
|
return m._compile((0, _transformFile.transformFileSync)(filename, Object.assign({}, opts, {
|
||||||
|
filename
|
||||||
|
})).code, filename);
|
||||||
|
} catch (error) {
|
||||||
|
const packageJson = require("@babel/preset-typescript/package.json");
|
||||||
|
if (_semver().lt(packageJson.version, "7.21.4")) {
|
||||||
|
console.error("`.cts` configuration file failed to load, please try to update `@babel/preset-typescript`.");
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return require.extensions[".js"](m, filename);
|
||||||
|
};
|
||||||
|
require.extensions[ext] = handler;
|
||||||
|
try {
|
||||||
|
return callback();
|
||||||
|
} finally {
|
||||||
|
if (require.extensions[ext] === handler) delete require.extensions[ext];
|
||||||
|
handler = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getTSPreset(filepath) {
|
||||||
|
try {
|
||||||
|
return require("@babel/preset-typescript");
|
||||||
|
} catch (error) {
|
||||||
|
if (error.code !== "MODULE_NOT_FOUND") throw error;
|
||||||
|
let message = "You appear to be using a .cts file as Babel configuration, but the `@babel/preset-typescript` package was not found: please install it!";
|
||||||
|
if (process.versions.pnp) {
|
||||||
|
message += `
|
||||||
|
If you are using Yarn Plug'n'Play, you may also need to add the following configuration to your .yarnrc.yml file:
|
||||||
|
|
||||||
|
packageExtensions:
|
||||||
|
\t"@babel/core@*":
|
||||||
|
\t\tpeerDependencies:
|
||||||
|
\t\t\t"@babel/preset-typescript": "*"
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
throw new _configError.default(message, filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0 && 0;
|
||||||
|
|
||||||
|
//# sourceMappingURL=module-types.js.map
|
||||||