diff --git a/.agent/migration_plan.md b/.agent/migration_plan.md
index 286f451..f0899d4 100644
--- a/.agent/migration_plan.md
+++ b/.agent/migration_plan.md
@@ -12,7 +12,8 @@
- Stage 3 B05 (경로 설계): ✅ 백엔드 완료 (Dijkstra + ridge-valley + skeleton)
- Stage 4 B06 (종횡단 생성): ✅ 백엔드 완료 (sampler + 종횡단 + Repository/Router)
- 공통: 전 페이지 DB 접근을 aiomysql Raw SQL로 통일, 순수 계산부는 실데이터로 검증
-- 남은 작업: B04~B06 프론트엔드(Vanilla TS/WebCAD), 실제 aislo_db 연동·구형 수치 비교
+- Stage 2~4 프론트엔드 폼/결과 UI: ✅ 완료 (B04~B06 UI_Page + Api_Fetch + CSS + locale, tsc 타입체크 통과)
+- 남은 작업: B04~B06 **WebCAD 3D/차트 뷰어**, 실제 aislo_db 연동·구형 수치 비교
---
@@ -178,7 +179,8 @@ B04로 넘길 기능:
- [x] 등고선 생성 함수 이전
- [x] 미리보기·메타데이터·모델 확정 라우트 추가 (analyze/models 라우트 + 파이프라인 manifest)
- [x] `processed_point_cloud`, `surface_models`, `terrain_layers` Raw SQL 저장 함수 추가 (aiomysql)
-- [ ] B04 폼·WebCAD 뷰어를 Vanilla TypeScript로 재작성
+- [x] B04 폼·모델 목록 UI를 Vanilla TypeScript로 재작성 (UI_Page + Api_Fetch + CSS + locale)
+- [ ] B04 WebCAD 3D 뷰어(포인트클라우드/메시 렌더) 추가
- [ ] 샘플 LAS 결과를 구형 출력과 비교 검증
### Stage 3 — B05_wf2_Route
@@ -193,7 +195,8 @@ B04로 넘길 기능:
- [ ] 입력 서명·stale 판정 함수 이전
- [x] 경로 확정 함수 이전 (Repository confirm_route + confirm 라우트)
- [x] `routes`, `route_points`, `route_statistics` Raw SQL 저장 함수 추가 (aiomysql)
-- [ ] B05 경로 편집·제약조건·결과 뷰어를 Vanilla TypeScript로 재작성
+- [x] B05 경로점 입력·제약조건·결과 메트릭 UI를 Vanilla TypeScript로 재작성 (UI_Page + Api_Fetch + CSS + locale)
+- [ ] B05 경로 WebCAD 뷰어(노선 폴리라인 렌더/편집) 추가
- [x] 기존 route solver 테스트를 신규 구조로 이관·통과
### Stage 4 — B06_wf3_ProfileCross
@@ -207,7 +210,8 @@ B04로 넘길 기능:
- [ ] 입력 서명·중복 실행 방지 함수 이전 (delete_sections_for_route로 멱등 재실행만 구현)
- [x] 결과 조회·확정 라우트 추가 (sections/generate·get·confirm 라우트)
- [x] `longitudinal_sections`, `cross_sections` Raw SQL 저장 함수 추가 (aiomysql Repository)
-- [ ] B06 종단도·횡단 카드 UI를 Vanilla TypeScript로 재작성
+- [x] B06 측점·횡단 옵션·결과 메트릭 UI를 Vanilla TypeScript로 재작성 (UI_Page + Api_Fetch + CSS + locale)
+- [ ] B06 종단도·횡단 카드 WebCAD 뷰어(프로필 차트 렌더) 추가
- [ ] 구형 section 결과와 수치 비교 검증
**B06 백엔드 구현 파일:**
diff --git a/.agent/structure.md b/.agent/structure.md
index 09f005a..c612f7f 100644
--- a/.agent/structure.md
+++ b/.agent/structure.md
@@ -96,14 +96,47 @@ my-project/
│ ├── B03_FileInput_Engine_Analyze.py # 원본 파일 메타데이터 분석
│ ├── B03_FileInput_Repository.py # input_files asyncpg Raw SQL
│ └── B03_FileInput_Router.py # 다중 파일 업로드 API
-├── B04_wf1_Surface/ # 로그인 후 04: 1차 workflow (지표면 모델 분석) — 워크플로우 셸
-│ ├── B04_wf1_Surface_UI_Page.ts
+├── B04_wf1_Surface/ # 로그인 후 04: 1차 workflow (지표면 모델 분석)
+│ ├── B04_wf1_Surface_UI_Page.ts # 3단 레이아웃 (필터/표현 선택 폼 + 모델 목록)
+│ ├── B04_wf1_Surface_UI_Style.css # B04 고유 폼 그룹/모델 카드 스타일
+│ ├── B04_wf1_Surface_Api_Fetch.ts # surface/analyze·models API 클라이언트
+│ ├── B04_wf1_Surface_Schema.py # 분석 요청/응답 Pydantic 검증
+│ ├── B04_wf1_Surface_Engine.py # 지표면 분석 오케스트레이터
│ ├── B04_wf1_Surface_Engine_Structurize.py # LAS/LAZ 구조화
-│ └── B04_wf1_Surface_Engine_Filter_Grid.py # grid minimum-Z 필터
-├── B05_wf2_Route/ # 로그인 후 05: 2차 workflow (경로설계) — 워크플로우 셸
-│ └── B05_wf2_Route_UI_Page.ts
-├── B06_wf3_ProfileCross/ # 로그인 후 06: 3차 workflow (종횡단 생성) — 워크플로우 셸
-│ └── B06_wf3_ProfileCross_UI_Page.ts
+│ ├── B04_wf1_Surface_Engine_Ground.py # 지면 분석 진입
+│ ├── B04_wf1_Surface_Engine_Filter_Grid.py # grid minimum-Z 필터
+│ ├── B04_wf1_Surface_Engine_Filter_CSF.py # CSF 필터
+│ ├── B04_wf1_Surface_Engine_Filter_PMF.py # PMF 필터
+│ ├── B04_wf1_Surface_Engine_Filter_RANSAC.py # RANSAC 필터
+│ ├── B04_wf1_Surface_Engine_ModelContext.py # 모델 공통 컨텍스트/메시 유틸
+│ ├── B04_wf1_Surface_Engine_ModelBuild.py # TIN/DTM/NURBS/implicit/meshfree 생성
+│ ├── B04_wf1_Surface_Engine_Smooth.py # DTM/TIN 스무딩
+│ ├── B04_wf1_Surface_Engine_Contour.py # 등고선 생성
+│ ├── B04_wf1_Surface_Engine_Pipeline.py # 파이프라인 manifest
+│ ├── B04_wf1_Surface_Repository.py # processed_point_cloud/surface_models aiomysql Raw SQL
+│ └── B04_wf1_Surface_Router.py # surface/analyze·models API
+├── B05_wf2_Route/ # 로그인 후 05: 2차 workflow (경로설계)
+│ ├── B05_wf2_Route_UI_Page.ts # 3단 레이아웃 (제어점/제약 폼 + 결과 메트릭)
+│ ├── B05_wf2_Route_UI_Style.css # B05 고유 제어점 행/제약 그룹 스타일
+│ ├── B05_wf2_Route_Api_Fetch.ts # route/solve·confirm API 클라이언트
+│ ├── B05_wf2_Route_Schema.py # 경로 탐색 요청/응답 Pydantic 검증
+│ ├── B05_wf2_Route_Engine.py # 경로 설계 오케스트레이터
+│ ├── B05_wf2_Route_Engine_Geometry.py # Dijkstra 단일 구간 탐색
+│ ├── B05_wf2_Route_Engine_Solver.py # 비용면 생성 + 최적 경로 조립
+│ ├── B05_wf2_Route_Engine_Skeleton.py # 지형 skeleton (D8 흐름누적)
+│ ├── B05_wf2_Route_Engine_RidgeValley.py # ridge-valley 탐색
+│ ├── B05_wf2_Route_Repository.py # routes/route_points/route_statistics aiomysql Raw SQL
+│ └── B05_wf2_Route_Router.py # route/solve·confirm API
+├── B06_wf3_ProfileCross/ # 로그인 후 06: 3차 workflow (종횡단 생성)
+│ ├── B06_wf3_ProfileCross_UI_Page.ts # 3단 레이아웃 (측점/횡단 옵션 폼 + 결과 메트릭)
+│ ├── B06_wf3_ProfileCross_UI_Style.css # B06 고유 옵션 그룹/결과 메트릭 스타일
+│ ├── B06_wf3_ProfileCross_Api_Fetch.ts # sections/generate·get·confirm API 클라이언트
+│ ├── B06_wf3_ProfileCross_Schema.py # 종횡단 생성 요청/응답 Pydantic 검증
+│ ├── B06_wf3_ProfileCross_Engine.py # 종횡단 생성 오케스트레이터
+│ ├── B06_wf3_ProfileCross_Engine_Sampler.py # 표고 sampler (Protocol + DTM/보간 5종)
+│ ├── B06_wf3_ProfileCross_Engine_Section.py # 종횡단 생성 (측점/접선/횡단 샘플)
+│ ├── B06_wf3_ProfileCross_Repository.py # longitudinal/cross_sections aiomysql Raw SQL
+│ └── B06_wf3_ProfileCross_Router.py # sections/generate·get·confirm API
├── B07_wf4_DesignDetail/ # 로그인 후 07: 4차 workflow (상세설계) — 워크플로우 셸
│ └── B07_wf4_DesignDetail_UI_Page.ts
├── B08_wf5_Quantity/ # 로그인 후 08: 5차 workflow (수량 산출) — 워크플로우 셸
diff --git a/.agent/test/00_Index.md b/.agent/test/00_Index.md
new file mode 100644
index 0000000..3a64718
--- /dev/null
+++ b/.agent/test/00_Index.md
@@ -0,0 +1,35 @@
+---
+document_type: entrypoint
+priority: CRITICAL
+version: 2.0
+---
+# Aislo (아이슬로) 프로젝트 지식 베이스 진입점
+
+이 문서는 AI 코딩 에이전트(Codex, Claude, Antigravity 등)가 프로젝트의 방대한 정보 중 **현재 필요한 컨텍스트를 정확하게 로드**하기 위한 인덱스입니다. 임의로 구조를 추론하지 말고, 작업할 영역에 맞춰 아래 연결된 상세 명세서를 반드시 읽고 코딩을 진행하십시오.
+
+## 🧭 컨텍스트 라우팅 (필요한 문서를 로드하는 방법)
+
+작업 성격에 따라 다음 번호의 문서를 확인하십시오.
+모든 문서는 이 폴더(`.agent/test/`) 하위에 존재합니다.
+
+1. **[구조/아키텍처 파악]** `01_Architecture_and_Structure.md`
+ - **언제 읽는가:** 새로운 페이지를 추가하거나, 파일(프론트/백엔드)을 생성/수정해야 할 때.
+ - **내용:** A00~B11까지의 전체 디렉토리 트리, 파일 명명 규칙(수직 통합).
+2. **[DB 연동 및 쿼리 작성]** `02_Database_Schema.md`
+ - **언제 읽는가:** DB 테이블 조회, 쿼리문 작성, 관계(FK) 및 데이터 저장이 필요할 때.
+ - **내용:** 18개 전체 테이블 스키마, 핵심 쿼리 예제, 공간 데이터(JSON) 설계 원칙.
+3. **[백엔드 로직/저장소 제어]** `03_Backend_Logic_and_Storage.md`
+ - **언제 읽는가:** FastAPI 라우터, 비즈니스 엔진 로직, 영구저장소(물리 파일) 입출력을 다룰 때.
+ - **내용:** Raw SQL 제약, 워크플로우 6단계 폴더 매핑, `workflow.json` 기반의 Stale 상태 동기화 기법.
+4. **[프론트엔드 UI/디자인 구현]** `04_Frontend_and_Design.md`
+ - **언제 읽는가:** TypeScript 이벤트 핸들러, 화면 레이아웃, 다국어 처리, CSS 스타일링을 수행할 때.
+ - **내용:** 3단 레이아웃 제약, 다국어(`ui_locales`) 제약, Wiza 테마(Britti Sans, 색상 토큰) 및 프롬프트 가이드.
+
+---
+
+## 🛑 범용 제약 사항 (절대 준수)
+1. **700줄 제한:** 단일 파일 코드 작성/수정 시 700줄이 넘으면 기능별 분할 필수.
+2. **코드 포맷팅:** 작성 후 반드시 포맷터 적용 (Python: `ruff`, TS/CSS: `prettier`).
+3. **인코딩:** 모든 파일은 UTF-8.
+4. **DB 원칙:** `aiomysql` 기반 비동기 통신. **ORM 사용은 절대 금지**하며 무조건 Raw SQL 사용.
+5. **다국어 규칙:** 프론트엔드 내 UI 텍스트 하드코딩 금지. 반드시 다국어 인덱스 배열 방식 준수.
diff --git a/.agent/test/01_Architecture_and_Structure.md b/.agent/test/01_Architecture_and_Structure.md
new file mode 100644
index 0000000..5bd5840
--- /dev/null
+++ b/.agent/test/01_Architecture_and_Structure.md
@@ -0,0 +1,65 @@
+---
+document_type: architecture
+priority: HIGH
+---
+# 프로젝트 구조 및 아키텍처 명세
+
+## 1. 아키텍처 기본 원칙
+* **수직 통합:** 백엔드 로직과 프론트엔드 코드는 페이지 폴더(`A01_`, `B01_` 등)별로 격리. 거대 단일 모듈을 금지하고 기능별로 파일을 분할한다.
+* **루트 main.py:** FastAPI 진입점으로, 라우터 등록(`include_router`)만 수행. 비즈니스 로직 작성 금지.
+* **명명 규칙:**
+ - 백엔드: `[폴더명]_Router.py`, `[폴더명]_Engine.py`, `[폴더명]_Schema.py`, `[폴더명]_Repository.py`
+ - 프론트엔드: `[폴더명]_UI_Page.ts`, `[폴더명]_UI_Style.css`, `[폴더명]_Api_Fetch.ts`
+ - 로그인 전은 `A01_`, 로그인 후는 `B01_`, 워크플로우는 `B04_wf1_` 형태 적용.
+ - 공통 유틸 코드는 `common_util_[기능].확장자`
+
+## 2. 전체 디렉토리 트리 상세
+
+```text
+my-project/
+├── A00_Common/ # 프론트엔드 공통 인프라
+│ ├── main.ts # 앱 진입점
+│ ├── router.ts # 해시 기반 SPA 라우터
+│ └── app_shell.ts # 공통 헤더/푸터
+├── common_util/ # 공통 유틸리티
+│ ├── common_util_validate.ts # 프론트 유효성 검사
+│ ├── common_util_storage.py # 저장 경로 로직
+│ └── common_util_workflow.py # 상태 동기화 로직
+├── config/ # 환경 설정
+│ ├── config_system.py # 시스템 파라미터 (제어 변수 중앙화)
+│ └── config_db.py # DB 설정
+├── db_management/ # 스키마 및 마이그레이션
+├── resources/ # 정적 리소스 (에셋)
+├── storage/ # 물리 파일 영구 저장소 (DB와 매핑)
+├── templates/ # 보고서/도면 양식
+├── ui_template/ # 공통 UI 컴포넌트, 테마, 다국어
+│ ├── ui_template_theme.css
+│ ├── ui_template_locale.ts
+│ └── ui_template_elements.ts
+
+# --- 로그인 전 페이지 (A 그룹) ---
+├── A01_Home/ # 홈 (소개, 소식)
+├── A02_ProgDetail/ # 프로그램 상세 (6단계 워크플로우 설명)
+├── A03_CompDetail/ # 회사 상세 (미션 등)
+├── A04_NewsHistory/ # 최신소식 및 개선 이력
+├── A05_EduDetail/ # 교육 상세
+├── A06_Login/ # 로그인 (이메일/비밀번호)
+├── A07_Register/ # 회원가입
+├── A08_Support/ # 기술지원 요청
+
+# --- 로그인 후 페이지 (B 그룹) ---
+├── B01_AccountDetail/ # 계정 관리
+├── B02_ProjRegister/ # 신규 프로젝트 등록
+├── B03_FileInput/ # [WF0] 원본 파일 입력 (다중 파일 업로드)
+├── B04_wf1_Surface/ # [WF1] 지표면 모델 분석 (LAS 처리)
+├── B05_wf2_Route/ # [WF2] 경로 설계 (최적 경로 계산)
+├── B06_wf3_ProfileCross/ # [WF3] 종횡단 생성 (단면 추출)
+├── B07_wf4_DesignDetail/ # [WF4] 상세 설계 (구조물 배치)
+├── B08_wf5_Quantity/ # [WF5] 수량 산출 (물량 집계)
+├── B09_wf6_Estimation/ # [WF6] 견적/최종 산출물 생성
+├── B10_Payment/ # 결제 관리
+└── B11_Status/ # 상태 출력 페이지
+
+├── main.py # FastAPI 루트
+└── package.json, requirements.txt 등
+```
diff --git a/.agent/test/01_Rules_and_Constraints.md b/.agent/test/01_Rules_and_Constraints.md
new file mode 100644
index 0000000..141ac8c
--- /dev/null
+++ b/.agent/test/01_Rules_and_Constraints.md
@@ -0,0 +1,20 @@
+---
+document_type: rules
+priority: CRITICAL
+---
+# 프로젝트 기본 규칙 및 제약 (Rules & Constraints)
+
+## 🚨 필수 행동 지침 (Do's)
+- **[MUST]** 코드 작성 전 반드시 `02_Architecture_and_Structure.md`의 구조를 확인하고 적절한 위치에 작성한다.
+- **[MUST]** 700줄 제한: 단일 파일이 700줄을 초과할 경우 사전 공지하고 기능별로 파일을 분할한다.
+- **[MUST]** 인코딩은 반드시 **UTF-8** 표준으로 통일한다.
+- **[MUST]** 코드 작성이 완료되면 다음 포맷터를 실행한다.
+ - Python: `ruff format [파일명]`, `ruff check --fix [파일명]`
+ - TypeScript/CSS: `npx prettier --write [파일명]`
+- **[MUST]** 외부 라이브러리 추가 시 프로젝트 호환성을 고려하고 무분별한 사용을 지양한다.
+
+## 🛑 금지 행동 지침 (Don'ts)
+- **[DON'T]** 하드코딩 금지: 제어 변수/파라미터는 `config/config_system.py`에서, UI 문자열은 `ui_template/ui_template_locale.ts`에서 가져와야 한다.
+- **[DON'T]** 임의 파일 경로 생성 금지: 모든 파일 입출력 및 저장은 `05_Workflow_and_Storage.md`에 정의된 6단계 워크플로우 폴더 경로를 준수해야 한다.
+- **[DON'T]** 백엔드에서 중간 산출물이나 임시 파일을 MariaDB에 직접 바이너리로 저장하지 않는다. 물리 파일로 저장 후 DB에는 경로(프로젝트 상대 경로)만 기록한다.
+- **[DON'T]** 삭제 및 덮어쓰기 금지: 다른 단계의 산출물을 직접 삭제하거나 덮어쓰지 않고 stale 상태를 통해 재계산 필요성을 전파한다.
diff --git a/.agent/test/02_Architecture_and_Structure.md b/.agent/test/02_Architecture_and_Structure.md
new file mode 100644
index 0000000..eb2e49e
--- /dev/null
+++ b/.agent/test/02_Architecture_and_Structure.md
@@ -0,0 +1,27 @@
+---
+document_type: architecture
+priority: HIGH
+---
+# 파일 구조 및 명명 규칙
+
+## 📂 아키텍처 원칙
+- **수직 통합:** 프론트엔드(TypeScript)와 백엔드(Python) 파일을 기능/페이지별로 같은 폴더(`A01_`, `B01_` 등)에 격리하여 관리한다. (단일 거대 모듈 금지)
+- **루트 `main.py`:** FastAPI의 진입점. 라우터 등록(`include_router`)만 수행하고 비즈니스 로직은 절대 작성하지 않는다.
+
+## 📝 명명 규칙
+- **폴더명:**
+ - 로그인 전 페이지: `A01_`, `A02_` ...
+ - 로그인 후 페이지: `B01_`, `B02_` ...
+ - 워크플로우 페이지: `B04_wf1_`, `B05_wf2_` ...
+ - 공통/시스템 폴더: `A00_Common`, `common_util`, `config` 등 접두사 없이 영문명 사용.
+- **파일명:** `[폴더명(페이지명)]_[기능]_[기타사양].[확장자]` 형태 필수.
+ - 예시: `B04_wf1_Surface_UI_Page.ts`, `B04_wf1_Surface_Router.py`
+- **공통 모듈:** `common_util` 폴더 내에 `common_util_[기능].[확장자]` 형태로 보관.
+
+## 🏗️ 주요 폴더 구조 요약
+- `A00_Common/`: 프론트엔드 공통 인프라 (SPA 라우터, 앱 셸 등)
+- `common_util/`: 공통 유틸리티 코드 (검증, 스토리지 제어 등)
+- `config/`: 시스템 설정, DB 설정, TS/Vite 환경 설정
+- `ui_template/`: 공통 UI 테마, 컴포넌트, 다국어 파일 배열
+- `storage/`: 파일 영구 저장소 (DB 경로와 연동됨)
+- `B03_FileInput/` ~ `B09_wf6_Estimation/`: 핵심 6단계 워크플로우 페이지 및 API
diff --git a/.agent/test/02_Database_Schema.md b/.agent/test/02_Database_Schema.md
new file mode 100644
index 0000000..c23eb07
--- /dev/null
+++ b/.agent/test/02_Database_Schema.md
@@ -0,0 +1,60 @@
+---
+document_type: database
+priority: CRITICAL
+---
+# 데이터베이스 스키마 명세 (MariaDB)
+
+MariaDB v10.6+를 사용하며, 총 18개의 테이블로 구성됩니다. ORM 없이 Raw SQL과 `aiomysql` 드라이버를 사용합니다. **공간 데이터(GEOMETRY)는 지원 한계로 인해 JSONB 또는 TEXT(GeoJSON)로 저장합니다.**
+
+## 테이블 목록 및 컬럼 구조
+
+### 1. 사용자 & 프로젝트 (Core)
+* **`users`**: `id`(PK), `email`, `password_hash`, `name`, `position`, `department`, `phone`, `company_id`(FK)
+* **`companies`**: `id`(PK), `name`, `business_registration_number`, `business_address`, `business_owner`, `business_status`
+* **`projects`**: `id`(UUID, PK), `user_id`(FK), `company_id`(FK), `name`, `region`, `road_type`, `status`, `crs_epsg`, `storage_path`
+* **`project_versions`**: `id`, `project_id`, `version_num`, `data`(JSONB)
+
+### 2. 파일 & 지표면 데이터 (WF0, WF1)
+* **`input_files`**: `id`(PK), `project_id`(FK), `file_type`(las, tif 등), `original_filename`, `raw_file_path`, `crs_epsg`, `metadata`(JSONB)
+* **`processed_point_cloud`**: `id`, `input_file_id`, `project_id`, `processed_file_path`, `converted_file_path`, `min_z`, `max_z` 등 통계치
+* **`surface_models`**: `id`, `project_id`, `model_type`(dem_grid, tin 등), `model_file_path`, `generation_params`(JSONB)
+* **`terrain_layers`**: `id`, `surface_model_id`, `layer_name`, `layer_file_path`(geojson 등)
+
+### 3. 경로 설계 (WF2)
+* **`routes`**: `id`(PK), `project_id`, `surface_model_id`, `status`, `geometry`(LineString JSON), `route_data_path`, `constraints`(JSONB)
+* **`route_points`**: `id`, `route_id`, `chainage_m`, `geometry`(Point JSON), `elevation_m`
+* **`route_statistics`**: `id`, `route_id`, `mean_slope`, `cut_volume_m3`, `fill_volume_m3`
+
+### 4. 종횡단 및 구조물 설계 (WF3, WF4)
+* **`longitudinal_sections`**: `id`, `project_id`, `route_id`, `longitudinal_file_path`, `data`(JSONB - chainages, elevations 등 배열)
+* **`cross_sections`**: `id`, `route_id`, `chainage_m`, `cross_section_file_path`, `data`(JSONB - left_slope, cut_volume_m3 등)
+* **`structures`**: `id`, `cross_section_id`, `structure_type`, `location`(LEFT/RIGHT/CENTER), `length_m`, `geometry`(Polygon JSON), `structure_data_path`
+
+### 5. 수량 산출 및 산출물 (WF5, WF6)
+* **`quantity_items`**: `id`, `project_id`, `category`, `item_name`, `quantity_design`, `quantity_actual`, `unit_price`, `quantity_data_path`
+* **`outputs`**: `id`, `project_id`, `output_type`, `outputs_directory_path`
+* **`output_files`**: `id`, `output_id`, `file_type`, `output_file_path`
+
+### 6. 로그 (Audit)
+* **`audit_logs`**, **`change_logs`**
+
+---
+
+## 💡 주요 원칙 (DB vs File System)
+- **DB에는 메타데이터와 파일 시스템의 "상대 경로"만 기록합니다.** (예: `input_files.raw_file_path = "B03_FileInput/input/las/cloud.las"`)
+- 대용량 파일(LAS, TIF, GeoJSON)은 MariaDB에 Blob으로 저장하지 않습니다.
+
+## 📝 쿼리 작성 예제 (Raw SQL & aiomysql)
+```python
+# 쿼리에는 ORM이 아닌 %s 플레이스홀더를 사용해야 함
+async def get_project_route(pool, project_id: str):
+ async with pool.acquire() as conn:
+ async with conn.cursor() as cur:
+ await cur.execute("""
+ SELECT r.id, r.total_length_m, r.route_data_path
+ FROM routes r
+ WHERE r.project_id = %s
+ ORDER BY r.computed_at DESC LIMIT 1
+ """, (project_id,))
+ return await cur.fetchone()
+```
diff --git a/.agent/test/03_Backend_Logic_and_Storage.md b/.agent/test/03_Backend_Logic_and_Storage.md
new file mode 100644
index 0000000..8ade290
--- /dev/null
+++ b/.agent/test/03_Backend_Logic_and_Storage.md
@@ -0,0 +1,44 @@
+---
+document_type: backend
+priority: HIGH
+---
+# 백엔드 제어 및 저장소/워크플로우 명세
+
+## 1. 물리 파일 및 저장소 구조 (Workflow Mapping)
+프로젝트 저장소 내부는 워크플로우 단계와 1:1로 매핑됩니다. 백엔드에서 파일을 다룰 때는 DB에 직접 Blob을 저장하지 않고 이 구조를 따라 저장 후 DB에 상대 경로만 기록합니다.
+
+```text
+storage/{company_slug}/{user_slug}/{project_id}/
+├── B03_FileInput/
+│ └── input/ (원본 업로드 파일들: .las, .tif)
+├── B04_wf1_Surface/
+│ ├── processed/ (변환된 데이터: cloud_filtered.las 등)
+│ └── models/ (DEM, TIN 결과물: dem_2m.tif, layer.geojson)
+├── B05_wf2_Route/
+│ └── route/ (최적 경로: route_main.geojson)
+├── B06_wf3_ProfileCross/
+│ ├── longitudinal/ (종단면: longitudinal.json)
+│ └── cross_sections/ (횡단면 배열: cross_0020m.json 등)
+├── B07_wf4_DesignDetail/
+│ └── structures/ (구조물 객체: struct_0020m_001.json)
+├── B08_wf5_Quantity/
+│ └── quantities/ (수량 집계: items.json)
+└── B09_wf6_Estimation/
+ └── v1/, v2/ (버전별 최종 엑셀, PDF, DXF)
+```
+**규칙:** 페이지별 백엔드 모듈은 자기 단계의 폴더만 제어합니다. 하위 단계의 파일을 강제로 지우거나 덮어쓰지 않고 `stale_from` 상태를 통해 제어합니다.
+
+## 2. 워크플로우 상태 동기화 (workflow.json)
+다중 브라우저 동시 작업을 지원하기 위해 서버 측 상태 파일(`workflow.json`)을 원자적(Atomic)으로 관리합니다.
+
+* **Stale (상태 무효화) 발생:**
+ 상위 단계(예: 지표면 분석 B04)가 재계산되면, 그에 의존하는 하위 단계(경로 B05, 횡단 B06 등) 결과는 신뢰할 수 없으므로 `workflow.json`에 `stale_from: "route"` 형태로 마킹됩니다.
+* **상태 업데이트 함수 (예시):**
+ ```python
+ def _patch_workflow_stale(project_id: str, stale_from: str | None) -> None:
+ # workflow.json의 stale_from 필드만 원자적 업데이트
+ ```
+
+## 3. 클라이언트 폴링 (Polling)
+- 프론트는 3초 주기로 `GET /api/projects/{project_id}/workflow` 를 폴링합니다.
+- 서버가 반환하는 `stale_from` 값을 확인하여, 만약 현재 단계와 다르다면 UI에서 사용자에게 "결과가 변경되었습니다. 재계산하시겠습니까?"를 경고합니다.
diff --git a/.agent/test/03_Backend_and_DB.md b/.agent/test/03_Backend_and_DB.md
new file mode 100644
index 0000000..b7fdbcc
--- /dev/null
+++ b/.agent/test/03_Backend_and_DB.md
@@ -0,0 +1,23 @@
+---
+document_type: backend
+priority: HIGH
+---
+# 백엔드 & 데이터베이스 제어 명세
+
+## 🐍 백엔드 (FastAPI / Python)
+- **파일 분할:** 라우터(`_Router.py`), 비즈니스 로직(`_Engine.py`), 스키마(`_Schema.py`), DB 접근(`_Repository.py`) 형태로 세분화.
+- **데이터 검증:** 모든 JSON 요청은 Pydantic 모델을 통해 라우터 진입 전 타입/범위 필수 검증.
+- **예외 처리:** 지형/메쉬 연산 등 복잡한 로직 수행 시 `try-except` 필수 처리. 에러 발생 시 `{"status": "error", "message": "원인"}` 반환 표준 포맷 유지.
+
+## 🗄️ 데이터베이스 (MariaDB)
+- **[MUST]** 비동기 통신: `aiomysql` 드라이버 사용 강제. (`asyncmy` 사용 불가)
+- **[DON'T]** ORM 사용 금지: 오직 **Raw SQL**만 작성한다.
+- **[MUST]** 파라미터 바인딩: `%s` 플레이스홀더를 사용하여 SQL Injection 방지.
+- **트랜잭션:** `pool.acquire()`로 커넥션 확보 후 다건 쓰기는 `connection.begin()` → `commit()` / 예외 시 `rollback()` 필수.
+- **자동 증가 ID:** `INSERT` 후 `cursor.lastrowid`로 조회.
+- **공간 데이터 처리:** MariaDB의 GEOMETRY 타입 한계로 인해, 공간 기하 데이터(좌표, 다각형, 경로 등)는 JSON (GeoJSON 형식)으로 저장 후 애플리케이션(Python Shapely/Geopandas)에서 파싱하여 기하 연산을 처리한다.
+
+## 🔄 워크플로우 상태 동기화 (Sync)
+- **공유 상태:** 다중 브라우저 대응을 위해 각 프로젝트는 `workflow.json`으로 현재 진행 단계와 'stale(무효화)' 상태를 관리한다.
+- **Stale 전파:** 상위 단계(예: 지표면 분석)가 재실행되면 하위 단계들은 자동으로 `stale_from`으로 표기되며, 클라이언트는 3초 주기의 폴링(Polling)을 통해 상태를 확인하고 경고/재계산을 유도한다.
+- **원자적 쓰기:** `workflow.json` 상태 업데이트는 `common_util_workflow.py`를 통해 원자적 업데이트로 보호되어야 한다.
diff --git a/.agent/test/04_Frontend_and_Design.md b/.agent/test/04_Frontend_and_Design.md
new file mode 100644
index 0000000..3733817
--- /dev/null
+++ b/.agent/test/04_Frontend_and_Design.md
@@ -0,0 +1,47 @@
+---
+document_type: frontend
+priority: HIGH
+---
+# 프론트엔드 제어 및 Wiza 디자인 시스템
+
+## 1. Wiza 디자인 시스템 (Theme Constraints)
+프론트엔드 UI는 Wiza 브랜드 가이드라인에 따라 구현해야 합니다. 하드코딩된 색상이나 수치를 금지하며, 제공되는 `ui_template_theme.css` 토큰을 사용합니다.
+
+* **색상 토큰 (Monochromatic Violet):**
+ - `--color-deep-iris` (#26114a): 헤드라인, 메인 버튼 배경 (강조)
+ - `--color-plum-velvet` (#312749): 네비게이션, 2차 헤딩
+ - `--color-royal-amethyst` (#3e0079): 링크, 포커스 링, 강조 아이콘
+ - `--color-lavender-wash`: 영웅 영역 및 섹션의 부드러운 그라데이션 배경
+ - `--color-canvas` (#ffffff): 카드, 입력 폼 등 캔버스 표면
+* **타이포그래피:**
+ - **Display/Heading:** `Britti Sans` (대체제: Plus Jakarta Sans), 500 Weight, **Line-height 1.0 (절대 준수)**.
+ - **Body/UI:** `Inter`, 400/500/700 Weight, 크기는 컴팩트하게(12~16px) 유지.
+* **형태 및 간격 (Spacing & Radius):**
+ - 카드, 버튼, 인풋 폼 등 모든 사각형 컨테이너는 **8px Radius** 강제.
+ - 뱃지(Badge), 필(Pill), 네비게이션 아이템 등은 **1440px Radius** 강제.
+ - 요소 간 기본 간격 유닛은 **8px**.
+
+## 2. 레이아웃 제약
+워크플로우 페이지(B04~B09)는 반드시 **3단 기본 레이아웃**을 따릅니다.
+1. 상단: 페이지 타이틀 및 현재 진행 단계
+2. 좌측: 데이터 입력 폼 및 설정 제어 패널 (너비 고정)
+3. 우측: WebCAD 도면 뷰어 (Canvas/WebGL) 또는 결과 데이터 그리드 (나머지 화면 너비 전체)
+
+## 3. 다국어 제어 원칙 (i18n)
+모든 텍스트는 컴포넌트 내에 직접 작성할 수 없습니다.
+
+```typescript
+// 선언부: ui_template/ui_template_locale.ts
+export const ui_locales = {
+ A01_Home_Title: ["반갑습니다", "Welcome"],
+ B04_wf1_Surface_Btn: ["지표면 분석 실행", "Run Surface Analysis"]
+};
+
+// 구현부 호출 예시
+
+```
+
+## 4. 로직 컨벤션 (TypeScript)
+* **이벤트 핸들러:** `on[페이지명]_[기능명]_[액션]` 형태 강제. (예: `onB04_Surface_Calculate_Click`)
+* **프론트 유효성 검사:** 백엔드 API 전송 전, 1차적으로 빈 값 및 타입 유효성 검사를 수행하여 피드백합니다.
+* **로딩 스피너:** API 요청 시작 전 Overlay 활성화, 통신 성공/실패 시 즉시 해제 로직 필수.
diff --git a/.agent/test/04_Frontend_and_UI.md b/.agent/test/04_Frontend_and_UI.md
new file mode 100644
index 0000000..84ffd83
--- /dev/null
+++ b/.agent/test/04_Frontend_and_UI.md
@@ -0,0 +1,26 @@
+---
+document_type: frontend
+priority: HIGH
+---
+# 프론트엔드 및 UI 제어 명세
+
+## 🎨 테마 및 디자인 규약
+- **[DON'T]** 하드코딩된 Hex 색상 코드나 임의의 스타일 직접 입력 금지.
+- **[MUST]** 테마(라이트/다크) 전환 호환을 위해 `ui_template/ui_template_theme.css`에 선언된 CSS 변수(`var(--color-...)`)만 참조.
+- **공통 레이아웃 (3단 분리 준수):**
+ 1. 상단 영역: 페이지 타이틀 및 진행 상태 (헤더)
+ 2. 좌측 패널: 데이터 입력 폼 및 제어 설정 창 (고정 너비)
+ 3. 우측 영역: WebCAD 도면 뷰어 (Canvas/WebGL) 또는 데이터 그리드 (가변 너비)
+
+## 🌐 다국어 지원 (i18n)
+- **[DON'T]** UI 문자열(라벨, 버튼 명, 툴팁, 안내 메시지 등)의 코드 내 하드코딩 절대 금지.
+- **[MUST]** 동시 수정 프로토콜:
+ 1. 신규 텍스트 발생 시 `ui_template/ui_template_locale.ts` 최하단에 키(Key)와 번역 배열(`[한국어, 영어]`) 선 등록.
+ 2. 컴포넌트 내에서는 `ui_locales.키값[현재언어인덱스]` 형태로만 호출한다.
+ 3. UI 수정 PR시 다국어 업데이트 내역 누락은 심각한 에러로 취급한다.
+
+## ⚙️ TypeScript 및 로직 제어
+- **이벤트 핸들러 명명법:** `on[페이지명]_[기능명]_[액션]` 규칙 준수.
+ - 예: `onB04_Surface_Calculate_Click`
+- **상태 제어 피드백:** API 비동기 호출 시작 시 전체 로딩 스피너(Overlay) 활성화, 통신 완료(성공/에러) 시 반드시 해제 보장.
+- **1차 검증:** 백엔드 전송 전 빈 값, 최대 길이, 숫자 범위 검증은 프론트엔드(`common_util_validate.ts`)에서 우선 처리하며, 에러 시 입력창 주변에 명시한다.
diff --git a/.agent/test/05_Workflow_and_Storage.md b/.agent/test/05_Workflow_and_Storage.md
new file mode 100644
index 0000000..0cd4d67
--- /dev/null
+++ b/.agent/test/05_Workflow_and_Storage.md
@@ -0,0 +1,31 @@
+---
+document_type: workflow
+priority: HIGH
+---
+# 워크플로우 및 데이터 저장소 명세
+
+## 🔄 6단계 워크플로우 (6-Stage Workflow)
+설계의 순차적 흐름을 정의하며, DB 및 폴더 구조와 1:1 맵핑됩니다.
+
+- **WF0 (B03): 파일 입력** - 사용자 원본 파일 (LAS, TIF, DXF 등) 업로드
+- **WF1 (B04): 지표면 분석** - 포인트클라우드 포맷 변환 및 지표면 모델(DEM/TIN) 생성
+- **WF2 (B05): 경로 설계** - 제약조건 반영 최적 선형 도출 (GeoJSON)
+- **WF3 (B06): 종횡단 생성** - 종단면도, 횡단면도 지형/설계 데이터 생성
+- **WF4 (B07): 상세 설계** - 횡단면별 구조물(옹벽, 수로 등) 배치
+- **WF5 (B08): 수량 산출** - 구조물 수량 및 토공량 집계
+- **WF6 (B09): 견적·문서** - Excel, PDF, DXF 등 최종 산출물 패키지 생성
+
+## 📁 영구 저장소 구조 (파일시스템)
+중간 산출물(LAS, TIF, GeoJSON 등) 및 대용량 파일은 DB가 아닌 파일시스템에 저장되며, DB(MariaDB)에는 저장된 파일의 **상대 경로**만 기록합니다. 임의의 위치에 파일을 쓰거나 사용자 입력을 경로에 그대로 결합하지 않습니다.
+
+**저장 규칙 기반 디렉토리 구조:**
+`storage/{company_slug}/{user_slug}/{project_id}/` 내부
+- `B03_FileInput/input/` : 원본 업로드 파일
+- `B04_wf1_Surface/processed/` : 변환 완료된 파일 (ply, 필터링 las 등)
+- `B04_wf1_Surface/models/` : 생성된 DEM, TIN 모델
+- `B05_wf2_Route/route/` : 주요 경로선 (GeoJSON) 및 제약 정보
+- `B06_wf3_ProfileCross/longitudinal/` : 종단면 데이터셋
+- `B06_wf3_ProfileCross/cross_sections/` : 구간별 횡단면 데이터셋
+- `B07_wf4_DesignDetail/structures/` : 배치된 구조물 메타데이터
+- `B08_wf5_Quantity/quantities/` : 산출 물량표 내역
+- `B09_wf6_Estimation/v1/` : 완료 버전별 패키징 결과물 (엑셀, 도면)
diff --git a/.agents/instructions.md b/.agents/instructions.md
deleted file mode 120000
index c50fbcb..0000000
--- a/.agents/instructions.md
+++ /dev/null
@@ -1 +0,0 @@
-../.agent/design.md
\ No newline at end of file
diff --git a/.ai-rules b/.ai-rules
deleted file mode 120000
index a7453fe..0000000
--- a/.ai-rules
+++ /dev/null
@@ -1 +0,0 @@
-.agent/agent.md
\ No newline at end of file
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 06a8bb1..647cd27 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -7,7 +7,8 @@
"Bash(ruff format *)",
"Bash(ruff check *)",
"Bash(./venv/Scripts/python.exe -m unittest discover -s tests -p \"test_b04_surface_filter_pmf.py\" -v)",
- "Bash(./venv/Scripts/python.exe -m unittest discover -s tests -p \"test_b04_surface_filter_ransac.py\" -v)"
+ "Bash(./venv/Scripts/python.exe -m unittest discover -s tests -p \"test_b04_surface_filter_ransac.py\" -v)",
+ "Bash(curl -s http://localhost:5175/ui_template/ui_template_theme.css)"
]
}
}
diff --git a/.env b/.env
new file mode 100644
index 0000000..4f7f4a5
--- /dev/null
+++ b/.env
@@ -0,0 +1,21 @@
+SERVER_HOST=0.0.0.0
+SERVER_PORT=8000
+DEBUG=True
+ENVIRONMENT=development
+
+DB_HOST=dsm.chemifactory.com
+DB_PORT=53306
+DB_NAME=aislo_db
+DB_USER=ctnt_root
+DB_PASSWORD=Umsang6595!!
+DB_POOL_MIN=5
+DB_POOL_MAX=20
+
+LOG_LEVEL=INFO
+UPLOAD_MAX_MB=500
+MESH_GRID_SIZE=1.0
+MESH_SMOOTHING_ITERATIONS=0
+SPATIAL_INDEX_ENABLED=True
+JWT_SECRET_KEY=your-secret-key-change-in-production
+JWT_EXPIRE_MINUTES=1440
+CORS_ORIGINS=http://localhost:5173,http://localhost:8000
diff --git a/.env.example b/.env.example
deleted file mode 100644
index 152ede0..0000000
--- a/.env.example
+++ /dev/null
@@ -1,40 +0,0 @@
-# 서버 설정
-SERVER_HOST=0.0.0.0
-SERVER_PORT=8000
-DEBUG=False
-ENVIRONMENT=development
-
-# 데이터베이스 (MariaDB)
-DB_HOST=localhost
-DB_PORT=3306
-DB_NAME=aislo_db
-DB_USER=aislo
-DB_PASSWORD=aislo
-DB_POOL_MIN=5
-DB_POOL_MAX=20
-
-# 로깅
-LOG_LEVEL=INFO
-
-# 파일 업로드
-UPLOAD_MAX_MB=500
-UPLOAD_MAX_FILES=20
-UPLOAD_CHUNK_SIZE_BYTES=1048576
-
-# 지형 분석 파라미터
-MESH_GRID_SIZE=1.0
-MESH_SMOOTHING_ITERATIONS=0
-SURFACE_LAS_CHUNK_SIZE=500000
-SURFACE_DEFAULT_RGB_VALUE=128
-SURFACE_GRID_CELL_SIZE_M=2.0
-SURFACE_GRID_HEIGHT_THRESHOLD_M=1.5
-
-# 인증
-JWT_SECRET_KEY=your-secret-key-change-in-production
-JWT_EXPIRE_MINUTES=1440
-
-# CORS (프론트엔드 도메인)
-CORS_ORIGINS=http://localhost:5173,http://localhost:8000
-
-# 프론트엔드 빌드 결과 폴더
-STATIC_DIR=node_modules/.build
diff --git a/.gitignore b/.gitignore
index 1eb568f..4dd8899 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,22 +1,26 @@
# Python
venv/
-__pycache__/
-*.pyc
+**/__pycache__/
+**/*.pyc
.pytest_cache/
-.env
-.env.*
-!.env.example
# Node / Frontend (루트 기반 구조)
node_modules/
dist/
*.tsbuildinfo
-
-# 구형 코드 백업 (참고용, 빌드 제외)
-0_old/node_modules/
-0_old/dist/
+config\node_modules
# Storage (물리 산출물)
storage/projects/*/processed/*.json
storage/projects/*/processed/*.png
storage/projects/*/exports/*.json
+
+#.claude
+.dependencygraph/
+.ruff_cache/
+
+# 구형 코드 백업 (참고용, 빌드 제외)
+0_old/
+
+# 신규 백업
+storage
\ No newline at end of file
diff --git a/A00_Common/.vite/deps/_metadata.json b/A00_Common/.vite/deps/_metadata.json
index e102234..bb947df 100644
--- a/A00_Common/.vite/deps/_metadata.json
+++ b/A00_Common/.vite/deps/_metadata.json
@@ -1,8 +1,8 @@
{
- "hash": "c4f37c34",
- "configHash": "ac5d08a1",
- "lockfileHash": "35998b1e",
- "browserHash": "7f5b0cf9",
+ "hash": "43705b0a",
+ "configHash": "f5412da4",
+ "lockfileHash": "0cc0e656",
+ "browserHash": "ae6c1db5",
"optimized": {},
"chunks": {}
}
\ No newline at end of file
diff --git a/A00_Common/index.html b/A00_Common/index.html
index 9aac481..1a5d34f 100644
--- a/A00_Common/index.html
+++ b/A00_Common/index.html
@@ -4,7 +4,6 @@
임도 설계 및 견적 자동화
-
diff --git a/A00_Common/main.ts b/A00_Common/main.ts
index e328717..33baaa2 100644
--- a/A00_Common/main.ts
+++ b/A00_Common/main.ts
@@ -8,6 +8,7 @@
* - hashchange 1회 구독: 셸 chrome 갱신 + 현재 라우트 렌더
* ========================================================================== */
+import "@ui/ui_template_theme.css";
import { injectBaseStyles } from "@ui/ui_template_elements";
import { initThemeAndLang, injectShellStyles, renderShell } from "./app_shell";
import { renderCurrentRoute, ensureInitialHash } from "./router";
diff --git a/A01_Home/A01_Home_UI_Page.ts b/A01_Home/A01_Home_UI_Page.ts
index 110f0c4..d163526 100644
--- a/A01_Home/A01_Home_UI_Page.ts
+++ b/A01_Home/A01_Home_UI_Page.ts
@@ -12,7 +12,7 @@
import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale";
import { createButton, createCard, createTag } from "@ui/ui_template_elements";
import { navigateTo } from "../A00_Common/router";
-import { ROUTES } from "@config/config_frontend";
+import { ROUTES, AUTH_TOKEN_KEY } from "@config/config_frontend";
import "./A01_Home_UI_Style.css";
/** locale 헬퍼 */
@@ -46,6 +46,11 @@ function onA01_Home_Explore_Click(): void {
navigateTo(ROUTES.A02_PROG_DETAIL);
}
+function navigateToDevPage(route: string): void {
+ localStorage.setItem(AUTH_TOKEN_KEY, "dev-temp-token");
+ navigateTo(route as never);
+}
+
/* -----------------------------------------------------------------------------
* 섹션 빌더
* -------------------------------------------------------------------------- */
@@ -145,12 +150,56 @@ function buildFeatures(): HTMLElement {
return section;
}
+function buildDevMenu(): HTMLElement {
+ const section = document.createElement("section");
+ section.className = "a01-section a01-dev-menu";
+ section.style.opacity = "0.6";
+ section.style.borderTop = "2px dashed var(--color-slate)";
+ section.style.marginTop = "var(--spacing-48)";
+ section.style.paddingTop = "var(--spacing-48)";
+
+ const heading = document.createElement("h2");
+ heading.className = "a01-section__title";
+ heading.textContent = "🔧 개발 모드 - B 그룹 테스트";
+
+ const grid = document.createElement("div");
+ grid.className = "a01-feature-grid";
+ grid.style.gridTemplateColumns = "repeat(auto-fit, minmax(200px, 1fr))";
+
+ const bPages: [string, string][] = [
+ [ROUTES.B01_ACCOUNT, "B01 · 계정 상세"],
+ [ROUTES.B02_PROJ_REGISTER, "B02 · 프로젝트 등록"],
+ [ROUTES.B03_FILE_INPUT, "B03 · 파일 입력"],
+ [ROUTES.B04_WF1_SURFACE, "B04 · 지표면 분석"],
+ [ROUTES.B05_WF2_ROUTE, "B05 · 경로 설계"],
+ [ROUTES.B06_WF3_PROFILE_CROSS, "B06 · 종횡단 생성"],
+ [ROUTES.B07_WF4_DESIGN_DETAIL, "B07 · 상세 설계"],
+ [ROUTES.B08_WF5_QUANTITY, "B08 · 수량 산출"],
+ [ROUTES.B09_WF6_ESTIMATION, "B09 · 견적/문서"],
+ [ROUTES.B10_PAYMENT, "B10 · 결재"],
+ [ROUTES.B11_STATUS, "B11 · 상태 출력"],
+ ];
+
+ for (const [route, label] of bPages) {
+ const btn = createButton({
+ label,
+ variant: "ghost",
+ onClick: () => navigateToDevPage(route),
+ });
+ btn.style.width = "100%";
+ grid.append(btn);
+ }
+
+ section.append(heading, grid);
+ return section;
+}
+
/* -----------------------------------------------------------------------------
* 페이지 진입점
* -------------------------------------------------------------------------- */
export function renderA01Home(root: HTMLElement): void {
const page = document.createElement("div");
page.className = "a01-home";
- page.append(buildHero(), buildNews(), buildFeatures());
+ page.append(buildHero(), buildNews(), buildFeatures(), buildDevMenu());
root.append(page);
}
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..19ad6d1
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,148 @@
+# 프로젝트 행동지침 및 기술 스택 명세 (agent.md)
+
+## 프로젝트 & DB 정보
+
+### 📌 프로그램명
+**Aislo (아이슬로)**
+- **의미**: AI (인공지능) + Slotti (핀란드어: 임도/산림 도로)
+- **콘셉트**: 산림의 미래를 열어가는 인공지능 경로 설계 솔루션
+
+---
+
+## 1. 기술 환경 및 기본 스택 (Technical Stack Baseline)
+프로젝트의 코드를 작성, 테스트 또는 검증할 환경 명확화 및 호환 기준 제시.
+
+### A. 백엔드 프레임워크 (Python)
+* **Runtime:** Python v3.12 or v3.13.7
+* **Framework:** FastAPI / Pydantic
+* **Geometry/GIS Engine:** Trimesh, Whitebox, Geopandas, Shapely, Rasterio, Laspy
+
+### B. 데이터베이스 (MariaDB)
+* **DBMS:** MariaDB v10.6+
+* **Character Set:** utf8mb4 (한글 완벽 지원)
+* **Collation:** utf8mb4_unicode_ci
+* **DB Driver (비동기):** `aiomysql` (순수 Python, Windows 호환. asyncmy는 Cython 빌드 필요로 미채택)
+* **쿼리 방식:** Raw SQL (ORM 사용 금지)
+* **공간 데이터:** JSON 기반 저장 (MariaDB는 PostGIS 미지원)
+
+### C. 프론트엔드 & WebCAD (TypeScript & WebGL)
+* **Language/Runtime:** TypeScript / Node.js
+* **Rendering:** HTML5 Canvas 및 WebGL 기반 WebCAD 시스템 구현
+
+### D. 인코딩 및 다국어 표준
+* **인코딩:** 텍스트 파일은 UTF-8 표준으로 통일
+
+---
+
+## 2. 문맥 라우팅 및 문서 구조 (Context Routing)
+코드 작성 및 기술 검증 시 문서 우선순위에 따른 계층적 레퍼런스 필수 읽기.
+
+* **1단계 (필수):** `.agent/structure.md` 읽기 후 신규 폴더 생성 기준 분석.
+* **2단계 (선택 읽기):** 프로젝트 구현에 필요한 세부 기술 명세 읽기.
+ * **그룹 A (UI, 스타일, 컴포넌트, WebCAD):** `.agent/frontend.md` 필수 추가 읽기.
+ * **그룹 B (알고리즘, 저장, DB, MariaDB 값 제어):** `.agent/backend.md` 필수 추가 읽기.
+ * **그룹 C (DB 구조 변경):** DB 구조 변경 시 `.agent/db_schema.md` 선택적 읽기.
+
+---
+
+## 3. 코드 작성 기본 제약 (Constraints)
+* **구조 준수:** `.agent/structure.md` 트리 구조 엄격 준수.
+* **700줄 제한:** 단일 파일 코드 작성/수정 시 700줄 이상이 될 경우 사전 공지. 기능별 파일 분할 후 `structure.md` 갱신 필수.
+* **안전 보관:** 백엔드 작업 시 보안 저장소 경로 명시 및 임의 삭제 방지 필수.
+* **경로 활용:** 단계별 페이지 기반 폴더 구조(B03~B09)와 DB 경로 열의 기준은 `.agent/db_schema_simple.md`의 「파일시스템 경로와 DB 링크」를 따른다.
+* **일관성 검증:** 설계 단계에서부터 DB 설계, 파일 경로, API 라우팅이 모두 동일한 워크플로우 기준으로 통일되어야 한다. (불일치 발생 시 설계 단계에서 재논의 필수)
+* **코드 포맷팅 (자동화 도구):** 프로젝트의 코드 작성이 완료되는 시, 반드시 프로젝트 루트에서 각 언어별 포맷터를 재실행하여 스타일을 통일해야 한다.
+ * *Python 포맷팅 명령어:* `ruff format [파일명]` 및 `ruff check --fix [파일명]` 실행
+ * *TypeScript/CSS 포맷팅 명령어:* `npx prettier --write [파일명]` 실행
+* **외부 라이브러리 활용:** 외부 라이브러리 활용 시 프로젝트에 맞춰 호환 라이브러리 선정하고, 불필요한 함수는 작성하지 않도록 최소화.
+
+---
+
+## 4. 데이터베이스 상세 명세 (Database Specification)
+
+### 4.1 스키마 기본 정보
+- **DB 명:** `aislo_db`
+- **DBMS:** MariaDB v10.6+
+- **인코딩:** utf8mb4_unicode_ci
+- **테이블 수:** 18개
+- **드라이버:** aiomysql (비동기)
+
+### 4.2 파일 경로 추적 (Path Tracking)
+**모든 중간 산출물의 파일 경로를 DB에 기록:**
+- `input_files.raw_file_path` — 원본 입력 파일
+- `processed_point_cloud.converted_file_path` — 변환된 포인트클라우드
+- `surface_models.model_file_path` — 지표면 모델
+- `routes.route_data_path` — 경로 데이터
+- `longitudinal_sections.longitudinal_file_path` — 종단면
+- `cross_sections.cross_section_file_path` — 횡단면
+- `structures.structure_data_path` — 구조물 배치
+- `quantity_items.quantity_data_path` — 수량 항목
+- `outputs.outputs_directory_path` — 산출물 폴더
+- `output_files.output_file_path` — 개별 산출 파일
+
+### 4.3 저장소 구조 (Workflow-based Folder Structure)
+```
+storage/{company_slug}/{user_slug}/{project_id}/
+├── B03_FileInput/input/ (WF0: 원본 입력)
+├── B04_wf1_Surface/processed/ (WF1: 변환된 포인트클라우드 & 모델)
+├── B05_wf2_Route/route/ (WF2: 경로 설계)
+├── B06_wf3_ProfileCross/ (WF3: 종단면 & 횡단면)
+├── B07_wf4_DesignDetail/structures/ (WF4: 구조물 배치)
+├── B08_wf5_Quantity/quantities/ (WF5: 수량 산출)
+└── B09_wf6_Estimation/v1,v2,.../ (WF6: 최종 산출물)
+```
+
+### 4.4 공간 데이터 처리 (MariaDB 특성)
+- **지하형 기하 데이터:** GEOMETRY 타입 미지원 → JSON으로 저장
+- **좌표 저장 예:** `{"type": "Point", "coordinates": [127.5, 37.5]}`
+- **경로 저장 예:** `{"type": "LineString", "coordinates": [[127.5, 37.5], [127.6, 37.6]]}`
+- **애플리케이션 처리:** Python의 Shapely, Geopandas에서 JSON 파싱 후 기하 연산
+
+---
+
+## 5. 워크플로우 6단계 (6-Stage Workflow)
+
+```
+WF0: B03_FileInput (파일 입력)
+ ↓ (LAS, TIF, TFW, PRJ, DXF 업로드)
+WF1: B04_wf1_Surface (지표면 분석)
+ ↓ (DEM, TIN, 포인트클라우드 변환)
+WF2: B05_wf2_Route (경로 설계)
+ ↓ (최적 경로 계산)
+WF3: B06_wf3_ProfileCross (종횡단 생성)
+ ↓ (종단면, 횡단면 생성)
+WF4: B07_wf4_DesignDetail (상세 설계)
+ ↓ (구조물 배치)
+WF5: B08_wf5_Quantity (수량 산출)
+ ↓ (수량 항목 계산)
+WF6: B09_wf6_Estimation (견적·문서)
+ ↓ (Excel, PDF, DXF 생성)
+```
+
+---
+
+## 6. 주요 문서 참고 순서
+
+1. **구조 설계:** `.agent/structure.md` 읽기
+2. **프론트 구현:** `.agent/frontend.md` 읽기
+3. **백엔드 구현:** `.agent/backend.md` 읽기
+4. **마이그레이션:** `.agent/migration_plan.md` 읽기
+5. **DB 스키마:** `.agent/db_schema_simple.md` 읽기
+6. **프로젝트 정보:** `.agent/project_info.md` 읽기
+
+---
+
+## 7. 요약
+
+| 항목 | 값 |
+|------|-----|
+| **프로그램명** | Aislo (아이슬로) |
+| **DB 명** | aislo_db |
+| **DBMS** | MariaDB v10.6+ |
+| **인코딩** | utf8mb4_unicode_ci |
+| **Backend** | Python 3.12+ / FastAPI |
+| **Frontend** | TypeScript / Node.js |
+| **드라이버** | aiomysql |
+| **워크플로우** | 6단계 (WF0~WF6) |
+| **테이블 수** | 18개 |
+| **폴더 구조** | 워크플로우 기반 (B03~B09) |
diff --git a/B04_wf1_Surface/B04_wf1_Surface_UI_Style.css b/B04_wf1_Surface/B04_wf1_Surface_UI_Style.css
new file mode 100644
index 0000000..6b30941
--- /dev/null
+++ b/B04_wf1_Surface/B04_wf1_Surface_UI_Style.css
@@ -0,0 +1,109 @@
+/* =============================================================================
+ * B04_wf1_Surface_UI_Style.css
+ * 1차 워크플로우(지표면 모델 분석) 페이지 전용 스타일.
+ *
+ * 원칙(frontend.md §1): 하드코딩 색상 금지. theme.css 변수(var(--...))만 참조.
+ * 공통 컴포넌트(ui-wf, ui-btn 등) 스타일은 ui_template_elements.ts가 주입하므로
+ * 여기서는 B04 고유 레이아웃(폼 그룹/모델 카드)만 정의한다.
+ * ========================================================================== */
+
+/* --- 좌측 입력 폼 --- */
+.b04-surface__form {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+}
+
+.b04-surface__group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-8);
+ margin: 0;
+ padding: var(--spacing-16);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-cards);
+ background-color: var(--color-surface-raised);
+}
+
+.b04-surface__group-legend {
+ padding: 0 var(--spacing-8);
+ font-size: var(--text-caption);
+ font-weight: var(--font-weight-medium);
+ color: var(--color-text-secondary);
+}
+
+.b04-surface__check {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-8);
+ font-size: var(--text-body-sm);
+ color: var(--color-text-body);
+ cursor: pointer;
+}
+
+.b04-surface__check input {
+ accent-color: var(--color-primary);
+}
+
+/* --- 우측 결과 영역 --- */
+.b04-surface__result {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+ padding: var(--spacing-24);
+}
+
+.b04-surface__result-head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.b04-surface__result-head h3 {
+ font-size: var(--text-subheading);
+ color: var(--color-text);
+}
+
+.b04-surface__models {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
+ gap: var(--spacing-16);
+}
+
+.b04-surface__empty {
+ color: var(--color-text-muted);
+ font-size: var(--text-body-sm);
+}
+
+.b04-surface__model-card {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-8);
+ padding: var(--spacing-16);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-cards);
+ background-color: var(--color-surface-raised);
+ box-shadow: var(--shadow-sm);
+}
+
+.b04-surface__model-head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-8);
+}
+
+.b04-surface__model-head strong {
+ font-family: var(--font-display);
+ color: var(--color-plum-velvet);
+ text-transform: uppercase;
+}
+
+.b04-surface__model-meta {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-4);
+ font-size: var(--text-caption);
+ color: var(--color-text-secondary);
+ word-break: break-all;
+}
diff --git a/B05_wf2_Route/B05_wf2_Route_Api_Fetch.ts b/B05_wf2_Route/B05_wf2_Route_Api_Fetch.ts
new file mode 100644
index 0000000..d563baa
--- /dev/null
+++ b/B05_wf2_Route/B05_wf2_Route_Api_Fetch.ts
@@ -0,0 +1,99 @@
+/* =============================================================================
+ * B05_wf2_Route_Api_Fetch.ts
+ * 2차 워크플로우(경로 설계) API 클라이언트
+ *
+ * 백엔드 계약 (B05_wf2_Route_Router.py):
+ * POST /api/projects/{project_id}/route/solve → 경로 탐색 + DB 기록
+ * POST /api/projects/{project_id}/route/confirm → 최신 경로 확정
+ *
+ * 규칙:
+ * - 모든 제어 상수는 config_frontend에서 참조 (하드코딩 금지).
+ * - 오류 응답 형식 {status:"error", message:"..."}을 Error로 변환.
+ * ========================================================================== */
+
+import { API_BASE_URL, API_TIMEOUT_MS, AUTH_TOKEN_KEY } from "@config/config_frontend";
+
+/** 경로 제어점 (BP/EP/CP) */
+export interface RoutePoint {
+ x: number;
+ y: number;
+ order?: number;
+}
+
+/** 경로 탐색 실행 요청 (RouteSolveRequest) */
+export interface RouteSolveRequest {
+ filter_key: string;
+ method?: string;
+ smooth?: boolean;
+ surface_model_id?: number | null;
+ algorithm?: string;
+ bp: RoutePoint;
+ ep: RoutePoint;
+ cp?: RoutePoint[];
+ grade_class?: string;
+ min_curve_radius_m?: number | null;
+ max_uphill_grade?: number | null;
+ max_downhill_grade?: number | null;
+}
+
+/** 경로 탐색 실행 결과 (RouteSolveResponse) */
+export interface RouteSolveResponse {
+ status: string;
+ project_id: string;
+ route_id: number;
+ total_length_m: number;
+ metrics: Record;
+ required_points_ok: boolean;
+ route_data_path: string;
+}
+
+/** 경로 확정 결과 (RouteConfirmResponse) */
+export interface RouteConfirmResponse {
+ status: string;
+ project_id: string;
+ route_id: number;
+ confirmed: boolean;
+}
+
+/** 공통 fetch 헬퍼: 타임아웃 + 인증 헤더 + 오류 응답 변환. */
+async function requestJson(path: string, init: RequestInit): Promise {
+ const controller = new AbortController();
+ const timeoutId = window.setTimeout(() => controller.abort(), API_TIMEOUT_MS);
+ const token = localStorage.getItem(AUTH_TOKEN_KEY);
+ try {
+ const response = await fetch(`${API_BASE_URL}${path}`, {
+ ...init,
+ headers: {
+ "Content-Type": "application/json",
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
+ ...(init.headers ?? {}),
+ },
+ signal: controller.signal,
+ });
+ const payload = (await response.json()) as T & { message?: string };
+ if (!response.ok) {
+ throw new Error(payload.message ?? `HTTP ${response.status}`);
+ }
+ return payload;
+ } finally {
+ window.clearTimeout(timeoutId);
+ }
+}
+
+/** 경로 탐색을 실행한다 (비용면 생성 → Dijkstra/ridge-valley → GeoJSON 저장). */
+export async function solveRoute(
+ projectId: string,
+ request: RouteSolveRequest,
+): Promise {
+ return requestJson(`/projects/${projectId}/route/solve`, {
+ method: "POST",
+ body: JSON.stringify(request),
+ });
+}
+
+/** 프로젝트의 최신 경로를 확정한다. */
+export async function confirmRoute(projectId: string): Promise {
+ return requestJson(`/projects/${projectId}/route/confirm`, {
+ method: "POST",
+ });
+}
diff --git a/B05_wf2_Route/B05_wf2_Route_UI_Page.ts b/B05_wf2_Route/B05_wf2_Route_UI_Page.ts
index 3117c90..7794fb1 100644
--- a/B05_wf2_Route/B05_wf2_Route_UI_Page.ts
+++ b/B05_wf2_Route/B05_wf2_Route_UI_Page.ts
@@ -2,27 +2,344 @@
* B05_wf2_Route_UI_Page.ts
* 로그인 후 05: 2차 워크플로우 (경로 설계)
*
- * ⚠️ 좌측 입력 패널 / 우측 WebCAD 뷰어 본문은 준비 중 — 워크플로우 셸(헤더+
- * 스텝바 = 3단 레이아웃)만 구성. 실제 본문은 0_old 참고하여 추후 구체화.
+ * 3단 레이아웃 (frontend.md §2):
+ * 상단: 페이지 타이틀 + 진행 단계 스텝바 (createWorkflowShell)
+ * 좌측: 경로 제어점(BP/EP/CP) 좌표 + 기반 지표면 + 설계 제약 폼
+ * 우측: 경로 탐색 결과(연장·경사·비용) 카드
*
- * 제약 준수 (frontend.md §2 3단 레이아웃): createWorkflowShell 재사용.
+ * 이벤트 핸들러 명명 (frontend.md §4): onB05_Route_[기능]_[액션]
+ * 텍스트는 ui_template_locale에 선(先) 등록 후 참조 (frontend.md §3).
* ========================================================================== */
-import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale";
-import { renderPendingWorkflow, workflowSteps } from "../A00_Common/b_page_scaffold";
+import { CURRENT_PROJECT_ID_KEY } from "@config/config_frontend";
+import { currentLanguageIndex, ui_locales } from "@ui/ui_template_locale";
+import {
+ createButton,
+ createInputField,
+ createWorkflowShell,
+ hideLoadingOverlay,
+ showLoadingOverlay,
+ showToast,
+ type InputFieldHandle,
+} from "@ui/ui_template_elements";
+import { workflowSteps } from "../A00_Common/b_page_scaffold";
+import {
+ confirmRoute,
+ solveRoute,
+ type RoutePoint,
+ type RouteSolveResponse,
+} from "./B05_wf2_Route_Api_Fetch";
+import "./B05_wf2_Route_UI_Style.css";
/** locale 헬퍼 */
function L(key: keyof typeof ui_locales): string {
return ui_locales[key][currentLanguageIndex];
}
-/* -----------------------------------------------------------------------------
- * 페이지 진입점
- * -------------------------------------------------------------------------- */
+/** 임도 등급 (config_system.ROUTE_GRADE_CLASSES) */
+const GRADE_CLASSES = ["trunk", "branch", "work"] as const;
+/** 경로 알고리즘 (Schema.algorithm 허용값) */
+const ALGORITHMS = ["dijkstra", "ridge_valley"] as const;
+
+/** 라벨 + select 요소 하나 생성. */
+function buildSelect(
+ label: string,
+ values: readonly string[],
+): { root: HTMLElement; select: HTMLSelectElement } {
+ const root = document.createElement("div");
+ root.className = "ui-field";
+ const labelEl = document.createElement("label");
+ labelEl.className = "ui-field__label";
+ labelEl.textContent = label;
+ const select = document.createElement("select");
+ select.className = "ui-input b05-route__select";
+ for (const value of values) {
+ const option = document.createElement("option");
+ option.value = value;
+ option.textContent = value;
+ select.append(option);
+ }
+ root.append(labelEl, select);
+ return { root, select };
+}
+
+/** X/Y 좌표 한 쌍 입력 행 생성. */
+function buildPointRow(label: string): {
+ root: HTMLElement;
+ x: InputFieldHandle;
+ y: InputFieldHandle;
+} {
+ const root = document.createElement("div");
+ root.className = "b05-route__point";
+ const caption = document.createElement("span");
+ caption.className = "b05-route__point-label";
+ caption.textContent = label;
+ const x = createInputField({ label: L("B05_Route_Field_X"), type: "number" });
+ const y = createInputField({ label: L("B05_Route_Field_Y"), type: "number" });
+ const row = document.createElement("div");
+ row.className = "b05-route__point-row";
+ row.append(x.root, y.root);
+ root.append(caption, row);
+ return { root, x, y };
+}
+
+/** 숫자 입력값을 파싱. 빈 값이면 null. */
+function parseNumber(value: string): number | null {
+ const trimmed = value.trim();
+ if (!trimmed) return null;
+ const parsed = Number(trimmed);
+ return Number.isFinite(parsed) ? parsed : null;
+}
+
export function renderB05Route(root: HTMLElement): void {
- renderPendingWorkflow(root, {
+ const shell = createWorkflowShell({
title: L("B05_Route_Title"),
steps: workflowSteps(),
activeStep: 1,
});
+
+ /* ---- 좌측: 경로 제어점 ---- */
+ const pointsGroup = document.createElement("fieldset");
+ pointsGroup.className = "b05-route__group";
+ const pointsLegend = document.createElement("legend");
+ pointsLegend.className = "b05-route__group-legend";
+ pointsLegend.textContent = L("B05_Route_Group_Points");
+ const bpRow = buildPointRow(L("B05_Route_Point_BP"));
+ const epRow = buildPointRow(L("B05_Route_Point_EP"));
+ const cpContainer = document.createElement("div");
+ cpContainer.className = "b05-route__cp-list";
+ const cpRows: { root: HTMLElement; x: InputFieldHandle; y: InputFieldHandle }[] = [];
+
+ function onB05_Route_AddCp_Click(): void {
+ const row = buildPointRow(L("B05_Route_Point_CP"));
+ const removeBtn = createButton({
+ label: L("B05_Route_Btn_RemoveCp"),
+ variant: "ghost",
+ onClick: () => {
+ const idx = cpRows.indexOf(row);
+ if (idx >= 0) cpRows.splice(idx, 1);
+ row.root.remove();
+ },
+ });
+ row.root.append(removeBtn);
+ cpRows.push(row);
+ cpContainer.append(row.root);
+ }
+
+ const addCpButton = createButton({
+ label: L("B05_Route_Btn_AddCp"),
+ variant: "ghost",
+ onClick: () => onB05_Route_AddCp_Click(),
+ });
+ pointsGroup.append(pointsLegend, bpRow.root, epRow.root, cpContainer, addCpButton);
+
+ /* ---- 좌측: 기반 지표면 ---- */
+ const surfaceGroup = document.createElement("fieldset");
+ surfaceGroup.className = "b05-route__group";
+ const surfaceLegend = document.createElement("legend");
+ surfaceLegend.className = "b05-route__group-legend";
+ surfaceLegend.textContent = L("B05_Route_Group_Surface");
+ const filterField = createInputField({ label: L("B05_Route_Field_Filter"), type: "text" });
+ const methodField = createInputField({
+ label: L("B05_Route_Field_Method"),
+ type: "text",
+ value: "dtm",
+ });
+ const surfaceIdField = createInputField({
+ label: L("B05_Route_Field_SurfaceId"),
+ type: "number",
+ min: 1,
+ });
+ surfaceGroup.append(surfaceLegend, filterField.root, methodField.root, surfaceIdField.root);
+
+ /* ---- 좌측: 설계 제약 ---- */
+ const constraintGroup = document.createElement("fieldset");
+ constraintGroup.className = "b05-route__group";
+ const constraintLegend = document.createElement("legend");
+ constraintLegend.className = "b05-route__group-legend";
+ constraintLegend.textContent = L("B05_Route_Group_Constraints");
+ const gradeSelect = buildSelect(L("B05_Route_Field_GradeClass"), GRADE_CLASSES);
+ const algorithmSelect = buildSelect(L("B05_Route_Field_Algorithm"), ALGORITHMS);
+ const maxUphillField = createInputField({
+ label: L("B05_Route_Field_MaxUphill"),
+ type: "number",
+ });
+ const maxDownhillField = createInputField({
+ label: L("B05_Route_Field_MaxDownhill"),
+ type: "number",
+ });
+ const minRadiusField = createInputField({
+ label: L("B05_Route_Field_MinRadius"),
+ type: "number",
+ });
+
+ const smoothLabel = document.createElement("label");
+ smoothLabel.className = "b05-route__check";
+ const smoothBox = document.createElement("input");
+ smoothBox.type = "checkbox";
+ const smoothText = document.createElement("span");
+ smoothText.textContent = L("B05_Route_Field_Smooth");
+ smoothLabel.append(smoothBox, smoothText);
+
+ constraintGroup.append(
+ constraintLegend,
+ gradeSelect.root,
+ algorithmSelect.root,
+ maxUphillField.root,
+ maxDownhillField.root,
+ minRadiusField.root,
+ smoothLabel,
+ );
+
+ const solveButton = createButton({
+ label: L("B05_Route_Btn_Solve"),
+ variant: "filled",
+ onClick: () => void onB05_Route_Solve_Click(),
+ });
+ const confirmButton = createButton({
+ label: L("B05_Route_Btn_Confirm"),
+ variant: "ghost",
+ onClick: () => void onB05_Route_Confirm_Click(),
+ });
+ const actionRow = document.createElement("div");
+ actionRow.className = "b05-route__actions";
+ actionRow.append(solveButton, confirmButton);
+
+ const leftForm = document.createElement("div");
+ leftForm.className = "b05-route__form";
+ leftForm.append(pointsGroup, surfaceGroup, constraintGroup, actionRow);
+ shell.leftPanel.append(leftForm);
+
+ /* ---- 우측: 결과 ---- */
+ const resultTitle = document.createElement("h3");
+ resultTitle.className = "b05-route__result-title";
+ resultTitle.textContent = L("B05_Route_Result_Title");
+ const resultBody = document.createElement("div");
+ resultBody.className = "b05-route__result-body";
+
+ function renderEmptyResult(): void {
+ resultBody.replaceChildren();
+ const empty = document.createElement("p");
+ empty.className = "b05-route__empty";
+ empty.textContent = L("B05_Route_Result_Empty");
+ resultBody.append(empty);
+ }
+
+ function metricRow(label: string, value: string): HTMLElement {
+ const row = document.createElement("div");
+ row.className = "b05-route__metric";
+ const key = document.createElement("span");
+ key.className = "b05-route__metric-key";
+ key.textContent = label;
+ const val = document.createElement("span");
+ val.className = "b05-route__metric-val";
+ val.textContent = value;
+ row.append(key, val);
+ return row;
+ }
+
+ function renderResult(result: RouteSolveResponse): void {
+ resultBody.replaceChildren();
+ const metrics = result.metrics as Record;
+ const fmt = (v: number | undefined): string => (v === undefined ? "-" : v.toFixed(3));
+ resultBody.append(
+ metricRow(L("B05_Route_Result_Length"), result.total_length_m.toFixed(2)),
+ metricRow(L("B05_Route_Result_MinSlope"), fmt(metrics.min_slope)),
+ metricRow(L("B05_Route_Result_MaxSlope"), fmt(metrics.max_slope)),
+ metricRow(L("B05_Route_Result_MeanSlope"), fmt(metrics.mean_slope)),
+ metricRow(L("B05_Route_Result_Cost"), fmt(metrics.cost_score)),
+ metricRow(L("B05_Route_Result_Path"), result.route_data_path),
+ );
+ }
+
+ const resultCard = document.createElement("div");
+ resultCard.className = "b05-route__result";
+ resultCard.append(resultTitle, resultBody);
+ shell.rightArea.append(resultCard);
+
+ /* ---- 이벤트 핸들러 ---- */
+ function getProjectId(): string | null {
+ const projectId = localStorage.getItem(CURRENT_PROJECT_ID_KEY);
+ if (!projectId) showToast(L("B05_Route_Error_Project"), "error");
+ return projectId;
+ }
+
+ /** 필수 좌표(BP/EP)와 필터 키를 검증하고, 유효하면 요청 페이로드를 반환. */
+ function collectRequest(): {
+ filter_key: string;
+ bp: RoutePoint;
+ ep: RoutePoint;
+ cp: RoutePoint[];
+ } | null {
+ const bpX = parseNumber(bpRow.x.input.value);
+ const bpY = parseNumber(bpRow.y.input.value);
+ const epX = parseNumber(epRow.x.input.value);
+ const epY = parseNumber(epRow.y.input.value);
+ if (bpX === null || bpY === null || epX === null || epY === null) {
+ showToast(L("B05_Route_Error_Points"), "error");
+ return null;
+ }
+ const filterKey = filterField.input.value.trim();
+ if (!filterKey) {
+ filterField.setError(L("B05_Route_Error_Filter"));
+ return null;
+ }
+ filterField.setError();
+
+ const cp: RoutePoint[] = [];
+ for (const row of cpRows) {
+ const x = parseNumber(row.x.input.value);
+ const y = parseNumber(row.y.input.value);
+ if (x !== null && y !== null) cp.push({ x, y });
+ }
+ return { filter_key: filterKey, bp: { x: bpX, y: bpY }, ep: { x: epX, y: epY }, cp };
+ }
+
+ async function onB05_Route_Solve_Click(): Promise {
+ const projectId = getProjectId();
+ if (!projectId) return;
+ const base = collectRequest();
+ if (!base) return;
+
+ const surfaceId = parseNumber(surfaceIdField.input.value);
+ showLoadingOverlay();
+ try {
+ const result = await solveRoute(projectId, {
+ ...base,
+ method: methodField.input.value.trim() || "dtm",
+ smooth: smoothBox.checked,
+ surface_model_id: surfaceId,
+ algorithm: algorithmSelect.select.value,
+ grade_class: gradeSelect.select.value,
+ max_uphill_grade: parseNumber(maxUphillField.input.value),
+ max_downhill_grade: parseNumber(maxDownhillField.input.value),
+ min_curve_radius_m: parseNumber(minRadiusField.input.value),
+ });
+ renderResult(result);
+ showToast(L("B05_Route_Solve_Success"), "success");
+ } catch (error) {
+ const detail = error instanceof Error ? error.message : L("B05_Route_Solve_Failed");
+ showToast(`${L("B05_Route_Solve_Failed")} ${detail}`, "error");
+ } finally {
+ hideLoadingOverlay();
+ }
+ }
+
+ async function onB05_Route_Confirm_Click(): Promise {
+ const projectId = getProjectId();
+ if (!projectId) return;
+ showLoadingOverlay();
+ try {
+ await confirmRoute(projectId);
+ showToast(L("B05_Route_Confirm_Success"), "success");
+ } catch (error) {
+ const detail = error instanceof Error ? error.message : L("B05_Route_Confirm_Failed");
+ showToast(`${L("B05_Route_Confirm_Failed")} ${detail}`, "error");
+ } finally {
+ hideLoadingOverlay();
+ }
+ }
+
+ renderEmptyResult();
+ root.replaceChildren(shell.root);
}
diff --git a/B05_wf2_Route/B05_wf2_Route_UI_Style.css b/B05_wf2_Route/B05_wf2_Route_UI_Style.css
new file mode 100644
index 0000000..47a7504
--- /dev/null
+++ b/B05_wf2_Route/B05_wf2_Route_UI_Style.css
@@ -0,0 +1,132 @@
+/* =============================================================================
+ * B05_wf2_Route_UI_Style.css
+ * 2차 워크플로우(경로 설계) 페이지 전용 스타일.
+ *
+ * 원칙(frontend.md §1): 하드코딩 색상 금지. theme.css 변수(var(--...))만 참조.
+ * 공통 컴포넌트 스타일은 ui_template_elements.ts가 주입하므로 여기서는
+ * B05 고유 레이아웃(제어점 행/제약 그룹/결과 메트릭)만 정의한다.
+ * ========================================================================== */
+
+/* --- 좌측 입력 폼 --- */
+.b05-route__form {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+}
+
+.b05-route__group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+ margin: 0;
+ padding: var(--spacing-16);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-cards);
+ background-color: var(--color-surface-raised);
+}
+
+.b05-route__group-legend {
+ padding: 0 var(--spacing-8);
+ font-size: var(--text-caption);
+ font-weight: var(--font-weight-medium);
+ color: var(--color-text-secondary);
+}
+
+/* --- 제어점 (X/Y 쌍) --- */
+.b05-route__point {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-8);
+}
+
+.b05-route__point-label {
+ font-size: var(--text-body-sm);
+ font-weight: var(--font-weight-medium);
+ color: var(--color-text-body);
+}
+
+.b05-route__point-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: var(--spacing-8);
+}
+
+.b05-route__cp-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+}
+
+/* --- select (지표면/제약) --- */
+.b05-route__select {
+ appearance: auto;
+ cursor: pointer;
+}
+
+/* --- 체크박스 --- */
+.b05-route__check {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-8);
+ font-size: var(--text-body-sm);
+ color: var(--color-text-body);
+ cursor: pointer;
+}
+
+.b05-route__check input {
+ accent-color: var(--color-primary);
+}
+
+/* --- 액션 버튼 행 --- */
+.b05-route__actions {
+ display: flex;
+ gap: var(--spacing-8);
+}
+
+/* --- 우측 결과 --- */
+.b05-route__result {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+ padding: var(--spacing-24);
+}
+
+.b05-route__result-title {
+ font-size: var(--text-subheading);
+ color: var(--color-text);
+}
+
+.b05-route__empty {
+ color: var(--color-text-muted);
+ font-size: var(--text-body-sm);
+}
+
+.b05-route__result-body {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-8);
+ max-width: 480px;
+}
+
+.b05-route__metric {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: var(--spacing-16);
+ padding: var(--spacing-8) var(--spacing-16);
+ border-radius: var(--radius-inputs);
+ background-color: var(--color-surface);
+}
+
+.b05-route__metric-key {
+ font-size: var(--text-caption);
+ color: var(--color-text-secondary);
+}
+
+.b05-route__metric-val {
+ font-family: var(--font-mono);
+ font-size: var(--text-body-sm);
+ color: var(--color-text-body);
+ word-break: break-all;
+ text-align: right;
+}
diff --git a/B06_wf3_ProfileCross/B06_wf3_ProfileCross_Api_Fetch.ts b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_Api_Fetch.ts
new file mode 100644
index 0000000..27640aa
--- /dev/null
+++ b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_Api_Fetch.ts
@@ -0,0 +1,111 @@
+/* =============================================================================
+ * B06_wf3_ProfileCross_Api_Fetch.ts
+ * 3차 워크플로우(종·횡단 생성) API 클라이언트
+ *
+ * 백엔드 계약 (B06_wf3_ProfileCross_Router.py):
+ * POST /api/projects/{project_id}/sections/generate → 종횡단 생성 + DB 기록
+ * GET /api/projects/{project_id}/sections/{route_id} → 종단 요약 조회
+ * POST /api/projects/{project_id}/sections/{route_id}/confirm → 종횡단 확정
+ *
+ * 규칙:
+ * - 모든 제어 상수는 config_frontend에서 참조 (하드코딩 금지).
+ * - 오류 응답 형식 {status:"error", message:"..."}을 Error로 변환.
+ * ========================================================================== */
+
+import { API_BASE_URL, API_TIMEOUT_MS, AUTH_TOKEN_KEY } from "@config/config_frontend";
+
+/** 종횡단 생성 실행 요청 (SectionGenerateRequest) */
+export interface SectionGenerateRequest {
+ route_id: number;
+ filter_key: string;
+ method?: string;
+ smooth?: boolean;
+ crs?: string | null;
+ station_interval_m?: number | null;
+ cross_half_width_m?: number | null;
+ cross_sample_interval_m?: number | null;
+ long_sample_interval_m?: number | null;
+}
+
+/** 종횡단 생성 결과 (SectionGenerateResponse) */
+export interface SectionGenerateResponse {
+ status: string;
+ project_id: string;
+ route_id: number;
+ longitudinal_id: number;
+ cross_section_count: number;
+ length_m: number;
+ longitudinal_file_path: string;
+}
+
+/** 종단 요약 조회 결과 (SectionSummaryResponse) */
+export interface SectionSummaryResponse {
+ status: string;
+ project_id: string;
+ route_id: number;
+ longitudinal: Record | null;
+}
+
+/** 종횡단 확정 결과 (SectionConfirmResponse) */
+export interface SectionConfirmResponse {
+ status: string;
+ project_id: string;
+ route_id: number;
+ confirmed: boolean;
+}
+
+/** 공통 fetch 헬퍼: 타임아웃 + 인증 헤더 + 오류 응답 변환. */
+async function requestJson(path: string, init: RequestInit): Promise {
+ const controller = new AbortController();
+ const timeoutId = window.setTimeout(() => controller.abort(), API_TIMEOUT_MS);
+ const token = localStorage.getItem(AUTH_TOKEN_KEY);
+ try {
+ const response = await fetch(`${API_BASE_URL}${path}`, {
+ ...init,
+ headers: {
+ "Content-Type": "application/json",
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
+ ...(init.headers ?? {}),
+ },
+ signal: controller.signal,
+ });
+ const payload = (await response.json()) as T & { message?: string };
+ if (!response.ok) {
+ throw new Error(payload.message ?? `HTTP ${response.status}`);
+ }
+ return payload;
+ } finally {
+ window.clearTimeout(timeoutId);
+ }
+}
+
+/** 확정 경로에서 종·횡단을 생성한다 (측점 배열 → 종단 프로필 → 횡단 샘플). */
+export async function generateSections(
+ projectId: string,
+ request: SectionGenerateRequest,
+): Promise {
+ return requestJson(`/projects/${projectId}/sections/generate`, {
+ method: "POST",
+ body: JSON.stringify(request),
+ });
+}
+
+/** 경로의 종단면 요약을 조회한다. */
+export async function getSections(
+ projectId: string,
+ routeId: number,
+): Promise {
+ return requestJson(`/projects/${projectId}/sections/${routeId}`, {
+ method: "GET",
+ });
+}
+
+/** 경로의 종·횡단면을 확정한다. */
+export async function confirmSections(
+ projectId: string,
+ routeId: number,
+): Promise {
+ return requestJson(`/projects/${projectId}/sections/${routeId}/confirm`, {
+ method: "POST",
+ });
+}
diff --git a/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Page.ts b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Page.ts
index bad7fb9..6e50715 100644
--- a/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Page.ts
+++ b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Page.ts
@@ -2,27 +2,251 @@
* B06_wf3_ProfileCross_UI_Page.ts
* 로그인 후 06: 3차 워크플로우 (종·횡단 생성)
*
- * ⚠️ 좌측 입력 패널 / 우측 WebCAD 뷰어 본문은 준비 중 — 워크플로우 셸(헤더+
- * 스텝바 = 3단 레이아웃)만 구성. 실제 본문은 0_old 참고하여 추후 구체화.
+ * 3단 레이아웃 (frontend.md §2):
+ * 상단: 페이지 타이틀 + 진행 단계 스텝바 (createWorkflowShell)
+ * 좌측: 대상 경로 ID + 지표면 참조 + 측점/횡단 옵션 폼
+ * 우측: 종·횡단 생성 결과(연장·횡단 개수·파일) 카드
*
- * 제약 준수 (frontend.md §2 3단 레이아웃): createWorkflowShell 재사용.
+ * 이벤트 핸들러 명명 (frontend.md §4): onB06_Profile_[기능]_[액션]
+ * 텍스트는 ui_template_locale에 선(先) 등록 후 참조 (frontend.md §3).
* ========================================================================== */
-import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale";
-import { renderPendingWorkflow, workflowSteps } from "../A00_Common/b_page_scaffold";
+import { CURRENT_PROJECT_ID_KEY } from "@config/config_frontend";
+import { currentLanguageIndex, ui_locales } from "@ui/ui_template_locale";
+import {
+ createButton,
+ createInputField,
+ createWorkflowShell,
+ hideLoadingOverlay,
+ showLoadingOverlay,
+ showToast,
+} from "@ui/ui_template_elements";
+import { workflowSteps } from "../A00_Common/b_page_scaffold";
+import {
+ confirmSections,
+ generateSections,
+ type SectionGenerateResponse,
+} from "./B06_wf3_ProfileCross_Api_Fetch";
+import "./B06_wf3_ProfileCross_UI_Style.css";
/** locale 헬퍼 */
function L(key: keyof typeof ui_locales): string {
return ui_locales[key][currentLanguageIndex];
}
-/* -----------------------------------------------------------------------------
- * 페이지 진입점
- * -------------------------------------------------------------------------- */
+/** 라벨 + fieldset 그룹 컨테이너 생성. */
+function buildGroup(legend: string): HTMLElement {
+ const group = document.createElement("fieldset");
+ group.className = "b06-profile__group";
+ const legendEl = document.createElement("legend");
+ legendEl.className = "b06-profile__group-legend";
+ legendEl.textContent = legend;
+ group.append(legendEl);
+ return group;
+}
+
+/** 숫자 입력값을 파싱. 빈 값이면 null. */
+function parseNumber(value: string): number | null {
+ const trimmed = value.trim();
+ if (!trimmed) return null;
+ const parsed = Number(trimmed);
+ return Number.isFinite(parsed) ? parsed : null;
+}
+
export function renderB06ProfileCross(root: HTMLElement): void {
- renderPendingWorkflow(root, {
+ const shell = createWorkflowShell({
title: L("B06_Profile_Title"),
steps: workflowSteps(),
activeStep: 2,
});
+
+ let currentRouteId: number | null = null;
+
+ /* ---- 좌측: 대상 경로 ---- */
+ const routeGroup = buildGroup(L("B06_Profile_Group_Route"));
+ const routeIdField = createInputField({
+ label: L("B06_Profile_Field_RouteId"),
+ type: "number",
+ min: 1,
+ });
+ const filterField = createInputField({ label: L("B06_Profile_Field_Filter"), type: "text" });
+ const methodField = createInputField({
+ label: L("B06_Profile_Field_Method"),
+ type: "text",
+ value: "dtm",
+ });
+ const crsField = createInputField({
+ label: L("B06_Profile_Field_Crs"),
+ type: "text",
+ placeholder: "EPSG:5178",
+ });
+ routeGroup.append(routeIdField.root, filterField.root, methodField.root, crsField.root);
+
+ /* ---- 좌측: 측점/횡단 옵션 ---- */
+ const optionGroup = buildGroup(L("B06_Profile_Group_Options"));
+ const stationField = createInputField({
+ label: L("B06_Profile_Field_StationInterval"),
+ type: "number",
+ });
+ const halfWidthField = createInputField({
+ label: L("B06_Profile_Field_CrossHalfWidth"),
+ type: "number",
+ });
+ const crossSampleField = createInputField({
+ label: L("B06_Profile_Field_CrossSample"),
+ type: "number",
+ });
+ const longSampleField = createInputField({
+ label: L("B06_Profile_Field_LongSample"),
+ type: "number",
+ });
+
+ const smoothLabel = document.createElement("label");
+ smoothLabel.className = "b06-profile__check";
+ const smoothBox = document.createElement("input");
+ smoothBox.type = "checkbox";
+ const smoothText = document.createElement("span");
+ smoothText.textContent = L("B06_Profile_Field_Smooth");
+ smoothLabel.append(smoothBox, smoothText);
+
+ optionGroup.append(
+ stationField.root,
+ halfWidthField.root,
+ crossSampleField.root,
+ longSampleField.root,
+ smoothLabel,
+ );
+
+ const generateButton = createButton({
+ label: L("B06_Profile_Btn_Generate"),
+ variant: "filled",
+ onClick: () => void onB06_Profile_Generate_Click(),
+ });
+ const confirmButton = createButton({
+ label: L("B06_Profile_Btn_Confirm"),
+ variant: "ghost",
+ onClick: () => void onB06_Profile_Confirm_Click(),
+ });
+ const actionRow = document.createElement("div");
+ actionRow.className = "b06-profile__actions";
+ actionRow.append(generateButton, confirmButton);
+
+ const leftForm = document.createElement("div");
+ leftForm.className = "b06-profile__form";
+ leftForm.append(routeGroup, optionGroup, actionRow);
+ shell.leftPanel.append(leftForm);
+
+ /* ---- 우측: 결과 ---- */
+ const resultTitle = document.createElement("h3");
+ resultTitle.className = "b06-profile__result-title";
+ resultTitle.textContent = L("B06_Profile_Result_Title");
+ const resultBody = document.createElement("div");
+ resultBody.className = "b06-profile__result-body";
+
+ function renderEmptyResult(): void {
+ resultBody.replaceChildren();
+ const empty = document.createElement("p");
+ empty.className = "b06-profile__empty";
+ empty.textContent = L("B06_Profile_Result_Empty");
+ resultBody.append(empty);
+ }
+
+ function metricRow(label: string, value: string): HTMLElement {
+ const row = document.createElement("div");
+ row.className = "b06-profile__metric";
+ const key = document.createElement("span");
+ key.className = "b06-profile__metric-key";
+ key.textContent = label;
+ const val = document.createElement("span");
+ val.className = "b06-profile__metric-val";
+ val.textContent = value;
+ row.append(key, val);
+ return row;
+ }
+
+ function renderResult(result: SectionGenerateResponse): void {
+ resultBody.replaceChildren();
+ resultBody.append(
+ metricRow(L("B06_Profile_Result_Length"), result.length_m.toFixed(2)),
+ metricRow(L("B06_Profile_Result_CrossCount"), String(result.cross_section_count)),
+ metricRow(L("B06_Profile_Result_Path"), result.longitudinal_file_path),
+ );
+ }
+
+ const resultCard = document.createElement("div");
+ resultCard.className = "b06-profile__result";
+ resultCard.append(resultTitle, resultBody);
+ shell.rightArea.append(resultCard);
+
+ /* ---- 이벤트 핸들러 ---- */
+ function getProjectId(): string | null {
+ const projectId = localStorage.getItem(CURRENT_PROJECT_ID_KEY);
+ if (!projectId) showToast(L("B06_Profile_Error_Project"), "error");
+ return projectId;
+ }
+
+ async function onB06_Profile_Generate_Click(): Promise {
+ const projectId = getProjectId();
+ if (!projectId) return;
+
+ const routeId = parseNumber(routeIdField.input.value);
+ if (routeId === null || !Number.isInteger(routeId) || routeId <= 0) {
+ routeIdField.setError(L("B06_Profile_Error_RouteId"));
+ return;
+ }
+ routeIdField.setError();
+
+ const filterKey = filterField.input.value.trim();
+ if (!filterKey) {
+ filterField.setError(L("B06_Profile_Error_Filter"));
+ return;
+ }
+ filterField.setError();
+
+ showLoadingOverlay();
+ try {
+ const result = await generateSections(projectId, {
+ route_id: routeId,
+ filter_key: filterKey,
+ method: methodField.input.value.trim() || "dtm",
+ smooth: smoothBox.checked,
+ crs: crsField.input.value.trim() || null,
+ station_interval_m: parseNumber(stationField.input.value),
+ cross_half_width_m: parseNumber(halfWidthField.input.value),
+ cross_sample_interval_m: parseNumber(crossSampleField.input.value),
+ long_sample_interval_m: parseNumber(longSampleField.input.value),
+ });
+ currentRouteId = result.route_id;
+ renderResult(result);
+ showToast(L("B06_Profile_Generate_Success"), "success");
+ } catch (error) {
+ const detail = error instanceof Error ? error.message : L("B06_Profile_Generate_Failed");
+ showToast(`${L("B06_Profile_Generate_Failed")} ${detail}`, "error");
+ } finally {
+ hideLoadingOverlay();
+ }
+ }
+
+ async function onB06_Profile_Confirm_Click(): Promise {
+ const projectId = getProjectId();
+ if (!projectId) return;
+ const routeId = currentRouteId ?? parseNumber(routeIdField.input.value);
+ if (routeId === null || !Number.isInteger(routeId) || routeId <= 0) {
+ routeIdField.setError(L("B06_Profile_Error_RouteId"));
+ return;
+ }
+ showLoadingOverlay();
+ try {
+ await confirmSections(projectId, routeId);
+ showToast(L("B06_Profile_Confirm_Success"), "success");
+ } catch (error) {
+ const detail = error instanceof Error ? error.message : L("B06_Profile_Confirm_Failed");
+ showToast(`${L("B06_Profile_Confirm_Failed")} ${detail}`, "error");
+ } finally {
+ hideLoadingOverlay();
+ }
+ }
+
+ renderEmptyResult();
+ root.replaceChildren(shell.root);
}
diff --git a/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Style.css b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Style.css
new file mode 100644
index 0000000..db059be
--- /dev/null
+++ b/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Style.css
@@ -0,0 +1,101 @@
+/* =============================================================================
+ * B06_wf3_ProfileCross_UI_Style.css
+ * 3차 워크플로우(종·횡단 생성) 페이지 전용 스타일.
+ *
+ * 원칙(frontend.md §1): 하드코딩 색상 금지. theme.css 변수(var(--...))만 참조.
+ * 공통 컴포넌트 스타일은 ui_template_elements.ts가 주입하므로 여기서는
+ * B06 고유 레이아웃(옵션 그룹/결과 메트릭)만 정의한다.
+ * ========================================================================== */
+
+/* --- 좌측 입력 폼 --- */
+.b06-profile__form {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+}
+
+.b06-profile__group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+ margin: 0;
+ padding: var(--spacing-16);
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius-cards);
+ background-color: var(--color-surface-raised);
+}
+
+.b06-profile__group-legend {
+ padding: 0 var(--spacing-8);
+ font-size: var(--text-caption);
+ font-weight: var(--font-weight-medium);
+ color: var(--color-text-secondary);
+}
+
+/* --- 체크박스 --- */
+.b06-profile__check {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-8);
+ font-size: var(--text-body-sm);
+ color: var(--color-text-body);
+ cursor: pointer;
+}
+
+.b06-profile__check input {
+ accent-color: var(--color-primary);
+}
+
+/* --- 액션 버튼 행 --- */
+.b06-profile__actions {
+ display: flex;
+ gap: var(--spacing-8);
+}
+
+/* --- 우측 결과 --- */
+.b06-profile__result {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-16);
+ padding: var(--spacing-24);
+}
+
+.b06-profile__result-title {
+ font-size: var(--text-subheading);
+ color: var(--color-text);
+}
+
+.b06-profile__empty {
+ color: var(--color-text-muted);
+ font-size: var(--text-body-sm);
+}
+
+.b06-profile__result-body {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-8);
+ max-width: 480px;
+}
+
+.b06-profile__metric {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: var(--spacing-16);
+ padding: var(--spacing-8) var(--spacing-16);
+ border-radius: var(--radius-inputs);
+ background-color: var(--color-surface);
+}
+
+.b06-profile__metric-key {
+ font-size: var(--text-caption);
+ color: var(--color-text-secondary);
+}
+
+.b06-profile__metric-val {
+ font-family: var(--font-mono);
+ font-size: var(--text-body-sm);
+ color: var(--color-text-body);
+ word-break: break-all;
+ text-align: right;
+}
diff --git a/CLAUDE.md b/CLAUDE.md
index a7453fe..19ad6d1 120000
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1 +1,148 @@
-.agent/agent.md
\ No newline at end of file
+# 프로젝트 행동지침 및 기술 스택 명세 (agent.md)
+
+## 프로젝트 & DB 정보
+
+### 📌 프로그램명
+**Aislo (아이슬로)**
+- **의미**: AI (인공지능) + Slotti (핀란드어: 임도/산림 도로)
+- **콘셉트**: 산림의 미래를 열어가는 인공지능 경로 설계 솔루션
+
+---
+
+## 1. 기술 환경 및 기본 스택 (Technical Stack Baseline)
+프로젝트의 코드를 작성, 테스트 또는 검증할 환경 명확화 및 호환 기준 제시.
+
+### A. 백엔드 프레임워크 (Python)
+* **Runtime:** Python v3.12 or v3.13.7
+* **Framework:** FastAPI / Pydantic
+* **Geometry/GIS Engine:** Trimesh, Whitebox, Geopandas, Shapely, Rasterio, Laspy
+
+### B. 데이터베이스 (MariaDB)
+* **DBMS:** MariaDB v10.6+
+* **Character Set:** utf8mb4 (한글 완벽 지원)
+* **Collation:** utf8mb4_unicode_ci
+* **DB Driver (비동기):** `aiomysql` (순수 Python, Windows 호환. asyncmy는 Cython 빌드 필요로 미채택)
+* **쿼리 방식:** Raw SQL (ORM 사용 금지)
+* **공간 데이터:** JSON 기반 저장 (MariaDB는 PostGIS 미지원)
+
+### C. 프론트엔드 & WebCAD (TypeScript & WebGL)
+* **Language/Runtime:** TypeScript / Node.js
+* **Rendering:** HTML5 Canvas 및 WebGL 기반 WebCAD 시스템 구현
+
+### D. 인코딩 및 다국어 표준
+* **인코딩:** 텍스트 파일은 UTF-8 표준으로 통일
+
+---
+
+## 2. 문맥 라우팅 및 문서 구조 (Context Routing)
+코드 작성 및 기술 검증 시 문서 우선순위에 따른 계층적 레퍼런스 필수 읽기.
+
+* **1단계 (필수):** `.agent/structure.md` 읽기 후 신규 폴더 생성 기준 분석.
+* **2단계 (선택 읽기):** 프로젝트 구현에 필요한 세부 기술 명세 읽기.
+ * **그룹 A (UI, 스타일, 컴포넌트, WebCAD):** `.agent/frontend.md` 필수 추가 읽기.
+ * **그룹 B (알고리즘, 저장, DB, MariaDB 값 제어):** `.agent/backend.md` 필수 추가 읽기.
+ * **그룹 C (DB 구조 변경):** DB 구조 변경 시 `.agent/db_schema.md` 선택적 읽기.
+
+---
+
+## 3. 코드 작성 기본 제약 (Constraints)
+* **구조 준수:** `.agent/structure.md` 트리 구조 엄격 준수.
+* **700줄 제한:** 단일 파일 코드 작성/수정 시 700줄 이상이 될 경우 사전 공지. 기능별 파일 분할 후 `structure.md` 갱신 필수.
+* **안전 보관:** 백엔드 작업 시 보안 저장소 경로 명시 및 임의 삭제 방지 필수.
+* **경로 활용:** 단계별 페이지 기반 폴더 구조(B03~B09)와 DB 경로 열의 기준은 `.agent/db_schema_simple.md`의 「파일시스템 경로와 DB 링크」를 따른다.
+* **일관성 검증:** 설계 단계에서부터 DB 설계, 파일 경로, API 라우팅이 모두 동일한 워크플로우 기준으로 통일되어야 한다. (불일치 발생 시 설계 단계에서 재논의 필수)
+* **코드 포맷팅 (자동화 도구):** 프로젝트의 코드 작성이 완료되는 시, 반드시 프로젝트 루트에서 각 언어별 포맷터를 재실행하여 스타일을 통일해야 한다.
+ * *Python 포맷팅 명령어:* `ruff format [파일명]` 및 `ruff check --fix [파일명]` 실행
+ * *TypeScript/CSS 포맷팅 명령어:* `npx prettier --write [파일명]` 실행
+* **외부 라이브러리 활용:** 외부 라이브러리 활용 시 프로젝트에 맞춰 호환 라이브러리 선정하고, 불필요한 함수는 작성하지 않도록 최소화.
+
+---
+
+## 4. 데이터베이스 상세 명세 (Database Specification)
+
+### 4.1 스키마 기본 정보
+- **DB 명:** `aislo_db`
+- **DBMS:** MariaDB v10.6+
+- **인코딩:** utf8mb4_unicode_ci
+- **테이블 수:** 18개
+- **드라이버:** aiomysql (비동기)
+
+### 4.2 파일 경로 추적 (Path Tracking)
+**모든 중간 산출물의 파일 경로를 DB에 기록:**
+- `input_files.raw_file_path` — 원본 입력 파일
+- `processed_point_cloud.converted_file_path` — 변환된 포인트클라우드
+- `surface_models.model_file_path` — 지표면 모델
+- `routes.route_data_path` — 경로 데이터
+- `longitudinal_sections.longitudinal_file_path` — 종단면
+- `cross_sections.cross_section_file_path` — 횡단면
+- `structures.structure_data_path` — 구조물 배치
+- `quantity_items.quantity_data_path` — 수량 항목
+- `outputs.outputs_directory_path` — 산출물 폴더
+- `output_files.output_file_path` — 개별 산출 파일
+
+### 4.3 저장소 구조 (Workflow-based Folder Structure)
+```
+storage/{company_slug}/{user_slug}/{project_id}/
+├── B03_FileInput/input/ (WF0: 원본 입력)
+├── B04_wf1_Surface/processed/ (WF1: 변환된 포인트클라우드 & 모델)
+├── B05_wf2_Route/route/ (WF2: 경로 설계)
+├── B06_wf3_ProfileCross/ (WF3: 종단면 & 횡단면)
+├── B07_wf4_DesignDetail/structures/ (WF4: 구조물 배치)
+├── B08_wf5_Quantity/quantities/ (WF5: 수량 산출)
+└── B09_wf6_Estimation/v1,v2,.../ (WF6: 최종 산출물)
+```
+
+### 4.4 공간 데이터 처리 (MariaDB 특성)
+- **지하형 기하 데이터:** GEOMETRY 타입 미지원 → JSON으로 저장
+- **좌표 저장 예:** `{"type": "Point", "coordinates": [127.5, 37.5]}`
+- **경로 저장 예:** `{"type": "LineString", "coordinates": [[127.5, 37.5], [127.6, 37.6]]}`
+- **애플리케이션 처리:** Python의 Shapely, Geopandas에서 JSON 파싱 후 기하 연산
+
+---
+
+## 5. 워크플로우 6단계 (6-Stage Workflow)
+
+```
+WF0: B03_FileInput (파일 입력)
+ ↓ (LAS, TIF, TFW, PRJ, DXF 업로드)
+WF1: B04_wf1_Surface (지표면 분석)
+ ↓ (DEM, TIN, 포인트클라우드 변환)
+WF2: B05_wf2_Route (경로 설계)
+ ↓ (최적 경로 계산)
+WF3: B06_wf3_ProfileCross (종횡단 생성)
+ ↓ (종단면, 횡단면 생성)
+WF4: B07_wf4_DesignDetail (상세 설계)
+ ↓ (구조물 배치)
+WF5: B08_wf5_Quantity (수량 산출)
+ ↓ (수량 항목 계산)
+WF6: B09_wf6_Estimation (견적·문서)
+ ↓ (Excel, PDF, DXF 생성)
+```
+
+---
+
+## 6. 주요 문서 참고 순서
+
+1. **구조 설계:** `.agent/structure.md` 읽기
+2. **프론트 구현:** `.agent/frontend.md` 읽기
+3. **백엔드 구현:** `.agent/backend.md` 읽기
+4. **마이그레이션:** `.agent/migration_plan.md` 읽기
+5. **DB 스키마:** `.agent/db_schema_simple.md` 읽기
+6. **프로젝트 정보:** `.agent/project_info.md` 읽기
+
+---
+
+## 7. 요약
+
+| 항목 | 값 |
+|------|-----|
+| **프로그램명** | Aislo (아이슬로) |
+| **DB 명** | aislo_db |
+| **DBMS** | MariaDB v10.6+ |
+| **인코딩** | utf8mb4_unicode_ci |
+| **Backend** | Python 3.12+ / FastAPI |
+| **Frontend** | TypeScript / Node.js |
+| **드라이버** | aiomysql |
+| **워크플로우** | 6단계 (WF0~WF6) |
+| **테이블 수** | 18개 |
+| **폴더 구조** | 워크플로우 기반 (B03~B09) |
diff --git a/config/vite.config.ts b/config/vite.config.ts
index fa59ea5..70f69f7 100644
--- a/config/vite.config.ts
+++ b/config/vite.config.ts
@@ -13,7 +13,7 @@ const __dirname = resolve(fileURLToPath(import.meta.url), "..");
*/
export default defineConfig({
root: "../A00_Common",
- publicDir: "../resources",
+ publicDir: "..",
resolve: {
alias: {
"@ui": resolve(__dirname, "../ui_template"),
diff --git a/node_modules/.bin/prettier b/node_modules/.bin/prettier
deleted file mode 100644
index 5944261..0000000
--- a/node_modules/.bin/prettier
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
- *CYGWIN*|*MINGW*|*MSYS*)
- if command -v cygpath > /dev/null 2>&1; then
- basedir=`cygpath -w "$basedir"`
- fi
- ;;
-esac
-
-if [ -x "$basedir/node" ]; then
- exec "$basedir/node" "$basedir/../prettier/bin/prettier.cjs" "$@"
-else
- exec node "$basedir/../prettier/bin/prettier.cjs" "$@"
-fi
diff --git a/node_modules/.bin/prettier.cmd b/node_modules/.bin/prettier.cmd
deleted file mode 100644
index e0fa0f7..0000000
--- a/node_modules/.bin/prettier.cmd
+++ /dev/null
@@ -1,17 +0,0 @@
-@ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
-SETLOCAL
-CALL :find_dp0
-
-IF EXIST "%dp0%\node.exe" (
- SET "_prog=%dp0%\node.exe"
-) ELSE (
- SET "_prog=node"
- SET PATHEXT=%PATHEXT:;.JS;=;%
-)
-
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\prettier\bin\prettier.cjs" %*
diff --git a/node_modules/.bin/prettier.ps1 b/node_modules/.bin/prettier.ps1
deleted file mode 100644
index 8359dd9..0000000
--- a/node_modules/.bin/prettier.ps1
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env pwsh
-$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
-
-$exe=""
-if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
- # Fix case when both the Windows and Linux builds of Node
- # are installed in the same directory
- $exe=".exe"
-}
-$ret=0
-if (Test-Path "$basedir/node$exe") {
- # Support pipeline input
- if ($MyInvocation.ExpectingInput) {
- $input | & "$basedir/node$exe" "$basedir/../prettier/bin/prettier.cjs" $args
- } else {
- & "$basedir/node$exe" "$basedir/../prettier/bin/prettier.cjs" $args
- }
- $ret=$LASTEXITCODE
-} else {
- # Support pipeline input
- if ($MyInvocation.ExpectingInput) {
- $input | & "node$exe" "$basedir/../prettier/bin/prettier.cjs" $args
- } else {
- & "node$exe" "$basedir/../prettier/bin/prettier.cjs" $args
- }
- $ret=$LASTEXITCODE
-}
-exit $ret
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index a518860..8729d81 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -29,43 +29,6 @@
"dev": true,
"license": "Apache-2.0"
},
- "node_modules/@emnapi/core": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
- "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/wasi-threads": "1.2.2",
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/runtime": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
- "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/wasi-threads": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
- "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
"node_modules/@mapbox/jsonlint-lines-primitives": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.3.tgz",
@@ -179,26 +142,6 @@
"pbf": "bin/pbf"
}
},
- "node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
- "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@tybys/wasm-util": "^0.10.3"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "peerDependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1"
- }
- },
"node_modules/@oxc-project/types": {
"version": "0.137.0",
"resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz",
@@ -215,260 +158,6 @@
"integrity": "sha512-8awtpHXCx/bNpFt4mt2xdkgtgVvKqty8VbjHI/WWWQuEw+KLzFot3f4+LkQY9YmOtq7A5GdOnqoIC8Pdygjk2g==",
"license": "MIT"
},
- "node_modules/@rolldown/binding-android-arm64": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz",
- "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz",
- "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz",
- "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz",
- "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz",
- "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz",
- "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz",
- "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz",
- "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz",
- "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz",
- "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz",
- "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz",
- "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz",
- "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "1.11.1",
- "@emnapi/runtime": "1.11.1",
- "@napi-rs/wasm-runtime": "^1.1.6"
- },
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz",
- "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
"node_modules/@rolldown/binding-win32-x64-msvc": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz",
@@ -500,18 +189,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@tybys/wasm-util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
- "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
- "dev": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
"node_modules/@types/geojson": {
"version": "7946.0.16",
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
@@ -645,22 +322,6 @@
"resolved": "frontend",
"link": true
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "ideallyInert": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/geotiff": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/geotiff/-/geotiff-3.0.5.tgz",
@@ -734,226 +395,6 @@
"lightningcss-win32-x64-msvc": "1.32.0"
}
},
- "node_modules/lightningcss-android-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
- "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-darwin-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
- "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-darwin-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
- "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-freebsd-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
- "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
- "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
- "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
- "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
- "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-linux-x64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
- "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
- "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "ideallyInert": true,
- "license": "MPL-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
"node_modules/lightningcss-win32-x64-msvc": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
@@ -1148,22 +589,6 @@
"integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==",
"license": "ISC"
},
- "node_modules/prettier": {
- "version": "3.9.4",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.4.tgz",
- "integrity": "sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
"node_modules/protocol-buffers-schema": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz",
@@ -1297,15 +722,6 @@
"integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==",
"license": "ISC"
},
- "node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "dev": true,
- "ideallyInert": true,
- "license": "0BSD",
- "optional": true
- },
"node_modules/typescript": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
diff --git a/node_modules/prettier/LICENSE b/node_modules/prettier/LICENSE
deleted file mode 100644
index 5767e34..0000000
--- a/node_modules/prettier/LICENSE
+++ /dev/null
@@ -1,7 +0,0 @@
-Copyright © James Long and contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/prettier/README.md b/node_modules/prettier/README.md
deleted file mode 100644
index 2297b58..0000000
--- a/node_modules/prettier/README.md
+++ /dev/null
@@ -1,104 +0,0 @@
-[](https://prettier.io)
-
-Opinionated Code Formatter
-
-
-
- JavaScript
- · TypeScript
- · Flow
- · JSX
- · JSON
-
-
-
- CSS
- · SCSS
- · Less
-
-
-
- HTML
- · Vue
- · Angular
-
-
-
- GraphQL
- · Markdown
- · YAML
-
-
-
-
- Your favorite language?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## Intro
-
-Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.
-
-### Input
-
-
-```js
-foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
-```
-
-### Output
-
-```js
-foo(
- reallyLongArg(),
- omgSoManyParameters(),
- IShouldRefactorThis(),
- isThereSeriouslyAnotherOne(),
-);
-```
-
-Prettier can be run [in your editor](https://prettier.io/docs/editors) on-save, in a [pre-commit hook](https://prettier.io/docs/precommit), or in [CI environments](https://prettier.io/docs/cli#list-different) to ensure your codebase has a consistent style without devs ever having to post a nit-picky comment on a code review ever again!
-
----
-
-**[Documentation](https://prettier.io/docs/)**
-
-[Install](https://prettier.io/docs/install) ·
-[Options](https://prettier.io/docs/options) ·
-[CLI](https://prettier.io/docs/cli) ·
-[API](https://prettier.io/docs/api)
-
-**[Playground](https://prettier.io/playground/)**
-
----
-
-## Badge
-
-Show the world you're using _Prettier_ → [](https://github.com/prettier/prettier)
-
-```md
-[](https://github.com/prettier/prettier)
-```
-
-## Contributing
-
-See [CONTRIBUTING.md](CONTRIBUTING.md).
diff --git a/node_modules/prettier/THIRD-PARTY-NOTICES.md b/node_modules/prettier/THIRD-PARTY-NOTICES.md
deleted file mode 100644
index 97a7ca2..0000000
--- a/node_modules/prettier/THIRD-PARTY-NOTICES.md
+++ /dev/null
@@ -1,8013 +0,0 @@
-# Licenses of bundled dependencies
-
-The published Prettier artifact additionally contains code with the following licenses:
-MIT, ISC, BSD-3-Clause, Apache-2.0, BSD-2-Clause, and BlueOak-1.0.0.
-
-## @angular/compiler@v22.0.4
-
-> Angular - the compiler library
-
-License: MIT
-Repository:
-Author: angular
-
-> The MIT License
->
-> Copyright (c) 2010-2026 Google LLC. https://angular.dev/license
->
-> 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.
-
-----------------------------------------
-
-## @babel/code-frame@v8.0.0
-
-> Generate errors that contain a code frame that point to source locations.
-
-License: MIT
-Homepage:
-Repository:
-Author: The Babel Team (https://babel.dev/team)
-
-> 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.
-
-----------------------------------------
-
-## @babel/helper-validator-identifier@v8.0.2
-
-> Validate identifier/keywords name
-
-License: MIT
-Repository:
-Author: The Babel Team (https://babel.dev/team)
-
-> 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.
-
-----------------------------------------
-
-## @babel/parser@v8.0.0
-
-> A JavaScript parser
-
-License: MIT
-Homepage:
-Repository:
-Author: The Babel Team (https://babel.dev/team)
-
-> Copyright (C) 2012-2014 by various contributors (see AUTHORS)
->
-> 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.
-
-----------------------------------------
-
-## @cacheable/memory@v2.2.0
-
-> High Performance In-Memory Cache for Node.js
-
-License: MIT
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## @cacheable/utils@v2.5.0
-
-> Cacheable Utilities for Caching Libraries
-
-License: MIT
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## @glimmer/syntax@v0.95.0
-
-License: MIT
-Repository:
-
-> Copyright (c) 2015 Tilde, Inc.
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of
-> this software and associated documentation files (the "Software"), to deal in
-> the Software without restriction, including without limitation the rights to
-> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-> of the Software, and to permit persons to whom the Software is furnished to do
-> so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
-----------------------------------------
-
-## @glimmer/util@v0.94.8
-
-> Common utilities used in Glimmer
-
-License: MIT
-Repository:
-
-> Copyright (c) 2015 Tilde, Inc.
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of
-> this software and associated documentation files (the "Software"), to deal in
-> the Software without restriction, including without limitation the rights to
-> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-> of the Software, and to permit persons to whom the Software is furnished to do
-> so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
-----------------------------------------
-
-## @glimmer/wire-format@v0.94.8
-
-License: MIT
-Repository:
-
-> Copyright (c) 2015 Tilde, Inc.
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of
-> this software and associated documentation files (the "Software"), to deal in
-> the Software without restriction, including without limitation the rights to
-> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-> of the Software, and to permit persons to whom the Software is furnished to do
-> so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
-----------------------------------------
-
-## @handlebars/parser@v2.2.2
-
-> The parser for the Handlebars language
-
-License: ISC
-Homepage:
-Repository:
-
-----------------------------------------
-
-## @keyv/serialize@v1.1.1
-
-> Serialization for Keyv
-
-License: MIT
-Homepage:
-Repository:
-Author: Jared Wray (https://jaredwray.com)
-
-> MIT License
->
-> Copyright (c) 2017-2021 Luke Childs
-> Copyright (c) 2021-2022 Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## @nodelib/fs.scandir@v2.1.5
-
-> List files and directories inside the specified directory
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) Denis Malinochkin
->
-> 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.
-
-----------------------------------------
-
-## @nodelib/fs.stat@v2.0.5
-
-> Get the status of a file with some features
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) Denis Malinochkin
->
-> 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.
-
-----------------------------------------
-
-## @nodelib/fs.walk@v1.2.8
-
-> A library for efficiently walking a directory recursively
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) Denis Malinochkin
->
-> 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.
-
-----------------------------------------
-
-## @prettier/cli@v0.12.0
-
-> A faster CLI for Prettier.
-
-License: MIT
-
-> Copyright © James Long and 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.
-
-----------------------------------------
-
-## @prettier/html-event-attributes@v0.0.2
-
-> List of HTML event handler attributes.
-
-License: MIT
-Author: fisker (https://fiskercheung.com)
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## @prettier/parse-srcset@v3.1.0
-
-> A spec-conformant JavaScript parser for the HTML5 srcset attribute
-
-License: MIT
-Homepage:
-Author: Alex Bell
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014 Alex Bell
-> Copyright (c) fisker Cheung
->
-> 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.
-
-----------------------------------------
-
-## @typescript-eslint/types@v8.62.0
-
-> Types for the TypeScript-ESTree AST spec
-
-License: MIT
-Homepage:
-Repository:
-
-> MIT License
->
-> Copyright (c) 2019 typescript-eslint 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.
-
-----------------------------------------
-
-## @typescript-eslint/typescript-estree@v8.62.0
-
-> A parser that converts TypeScript source code into an ESTree compatible form
-
-License: MIT
-Homepage:
-Repository:
-
-> MIT License
->
-> Copyright (c) 2019 typescript-eslint 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.
-
-----------------------------------------
-
-## acorn@v8.17.0
-
-> ECMAScript parser
-
-License: MIT
-Homepage:
-Repository:
-
-> MIT License
->
-> Copyright (C) 2012-2022 by various contributors (see AUTHORS)
->
-> 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.
-
-----------------------------------------
-
-## acorn-jsx@v5.3.2
-
-> Modern, fast React.js JSX parser
-
-License: MIT
-Homepage:
-Repository:
-
-> Copyright (C) 2012-2017 by Ingvar Stepanyan
->
-> 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.
-
-----------------------------------------
-
-## angular-estree-parser@v15.5.0
-
-> A parser that converts Angular source code into an ESTree-compatible form
-
-License: MIT
-Homepage:
-Author: Ika (https://github.com/ikatyang)
-
-> MIT License
->
-> Copyright (c) Ika (https://github.com/ikatyang)
->
-> 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.
-
-----------------------------------------
-
-## angular-html-parser@v10.10.0
-
-> A HTML parser extracted from Angular with some modifications
-
-License: MIT
-Homepage:
-Author: Ika (https://github.com/ikatyang)
-
-> MIT License
->
-> Copyright (c) Ika (https://github.com/ikatyang)
->
-> 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.
-
-----------------------------------------
-
-## ansi-purge@v1.1.0
-
-> A tiny function for deleting ANSI escape sequences from a string.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## ansi-regex@v6.2.2
-
-> Regular expression for matching ANSI escape codes
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## ansi-truncate@v1.4.0
-
-> A tiny function for truncating a string that may contain ANSI escape sequences.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2022-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## atomically@v2.1.1
-
-> Read and write files atomically and reliably.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2020-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## bail@v1.0.5
-
-> Throw a given error
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## balanced-match@v4.0.4
-
-> Match balanced character pairs, like "{" and "}"
-
-License: MIT
-Repository:
-
-> (MIT)
->
-> Original code Copyright Julian Gruber
->
-> Port to TypeScript Copyright Isaac Z. Schlueter
->
-> 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.
-
-----------------------------------------
-
-## base64-js@v1.5.1
-
-> Base64 encoding/decoding in pure JS
-
-License: MIT
-Homepage:
-Repository:
-Author: T. Jameson Little
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014 Jameson Little
->
-> 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.
-
-----------------------------------------
-
-## binary-extensions@v3.1.0
-
-> List of binary file extensions
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://sindresorhus.com)
-> Copyright (c) Paul Miller (https://paulmillr.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.
-
-----------------------------------------
-
-## brace-expansion@v5.0.6
-
-> Brace expansion as known from sh/bash
-
-License: MIT
-Repository:
-
-> MIT License
->
-> Copyright Julian Gruber
->
-> TypeScript port Copyright Isaac Z. Schlueter
->
-> 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.
-
-----------------------------------------
-
-## braces@v3.0.3
-
-> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-Contributors:
- - Brian Woodward (https://twitter.com/doowb)
- - Elan Shanker (https://github.com/es128)
- - Eugene Sharygin (https://github.com/eush77)
- - hemanth.hm (http://h3manth.com)
- - Jon Schlinkert (http://twitter.com/jonschlinkert)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014-present, Jon Schlinkert.
->
-> 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.
-
-----------------------------------------
-
-## buffer@v6.0.3
-
-> Node.js Buffer API, for the browser
-
-License: MIT
-Homepage:
-Repository:
-Author: Feross Aboukhadijeh (https://feross.org)
-Contributors:
- - Romain Beauxis
- - James Halliday
-
-> The MIT License (MIT)
->
-> Copyright (c) Feross Aboukhadijeh, 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.
-
-----------------------------------------
-
-## cacheable@v2.5.0
-
-> High Performance Layer 1 / Layer 2 Caching with Keyv Storage
-
-License: MIT
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## camelcase@v9.0.0
-
-> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## ccount@v2.0.1
-
-> Count how often a character (or substring) is used in a string
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## character-entities@v2.0.2
-
-> Map of named character references
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## character-entities-legacy@v1.1.4
-
-> HTML legacy character entity information
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## character-reference-invalid@v1.1.4
-
-> HTML invalid numeric character reference information
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## ci-info@v4.4.0
-
-> Get details about the current Continuous Integration environment
-
-License: MIT
-Homepage:
-Author: Thomas Watson Steen (https://twitter.com/wa7son)
-Contributors:
- - Sibiraj (https://github.com/sibiraj-s)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2016 Thomas Watson Steen
->
-> 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.
-
-----------------------------------------
-
-## collapse-white-space@v1.0.6
-
-> Replace multiple white-space characters with a single space
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## common-path-prefix@v3.0.0
-
-> Computes the longest prefix string that is common to each path, excluding the base component
-
-License: ISC
-Homepage:
-Repository:
-Author: Mark Wubben (https://novemberborn.net/)
-
-> ISC License (ISC)
-> Copyright (c) 2016, Mark Wubben
->
-> Permission to use, copy, modify, and/or distribute this software for any purpose
-> with or without fee is hereby granted, provided that the above copyright notice
-> and this permission notice appear in all copies.
->
-> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-> REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-> FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-> INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-> OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-> TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-> THIS SOFTWARE.
-
-----------------------------------------
-
-## dashify@v2.0.0
-
-> Convert a camelcase or space-separated string to a dash-separated string. ~12 sloc, fast, supports diacritics.
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-Contributors:
- - Jeffrey Priebe (https://github.com/jeffreypriebe)
- - Jon Schlinkert (http://twitter.com/jonschlinkert)
- - Ondrej Brinkel (https://www.anzui.de)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2015-present, Jon Schlinkert.
->
-> 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.
-
-----------------------------------------
-
-## decode-named-character-reference@v1.3.0
-
-> Decode named character references
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## deno-path-from-file-url@v0.0.7
-
-> Convert file URLs to paths.
-
-License: MIT
-Homepage:
-Author: fisker Cheung (https://www.fiskercheung.com/)
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## dettle@v1.0.5
-
-> A tiny fully-featured debounce and throttle implementation.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## devlop@v1.1.0
-
-> Do things in development and nothing otherwise
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2023 Titus Wormer
->
-> Permission is hereby granted, free of charge, to any person obtaining
-> a copy of this software and associated documentation files (the
-> 'Software'), to deal in the Software without restriction, including
-> without limitation the rights to use, copy, modify, merge, publish,
-> distribute, sublicense, and/or sell copies of the Software, and to
-> permit persons to whom the Software is furnished to do so, subject to
-> the following conditions:
->
-> The above copyright notice and this permission notice shall be
-> included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
-## diff@v9.0.0
-
-> A JavaScript text diff implementation.
-
-License: BSD-3-Clause
-Repository:
-
-> BSD 3-Clause License
->
-> Copyright (c) 2009-2015, Kevin Decker
-> All rights reserved.
->
-> Redistribution and use in source and binary forms, with or without
-> modification, are permitted provided that the following conditions are met:
->
-> 1. Redistributions of source code must retain the above copyright notice, this
-> list of conditions and the following disclaimer.
->
-> 2. Redistributions in binary form must reproduce the above copyright notice,
-> this list of conditions and the following disclaimer in the documentation
-> and/or other materials provided with the distribution.
->
-> 3. Neither the name of the copyright holder nor the names of its
-> contributors may be used to endorse or promote products derived from
-> this software without specific prior written permission.
->
-> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------
-
-## editorconfig-without-wasm@v0.0.7
-
-> EditorConfig File Locator and Interpreter for Node.js
-
-License: MIT
-Repository:
-Author: fisker Cheung (https://www.fiskercheung.com/)
-Contributors:
- - Hong Xu (topbug.net)
- - Jed Mao (https://github.com/jedmao/)
- - Trey Hunner (http://treyhunner.com)
- - Joe Hildebrand (https://github.com/hildjj/)
- - SunsetTechuila (https://github.com/SunsetTechuila/)
- - Rex Lorenzo (https://github.com/rlorenzo/)
- - Gareth Jones (https://github.com/G-Rath)
-
-> Copyright © 2012 EditorConfig Team
->
-> 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.
-
-----------------------------------------
-
-## emoji-regex@v10.6.0
-
-> A regular expression to match all Emoji-only symbols as per the Unicode Standard.
-
-License: MIT
-Homepage:
-Repository:
-Author: Mathias Bynens (https://mathiasbynens.be/)
-
-> Copyright Mathias Bynens
->
-> 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.
-
-----------------------------------------
-
-## escape-string-regexp@v5.0.0
-
-> Escape RegExp special characters
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## eslint-visitor-keys@v5.0.1
-
-> Constants and utilities about visitor keys to traverse AST.
-
-License: Apache-2.0
-Homepage:
-Repository:
-Author: Toru Nagashima (https://github.com/mysticatea)
-
-> Apache License
-> Version 2.0, January 2004
-> http://www.apache.org/licenses/
->
-> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
->
-> 1. Definitions.
->
-> "License" shall mean the terms and conditions for use, reproduction,
-> and distribution as defined by Sections 1 through 9 of this document.
->
-> "Licensor" shall mean the copyright owner or entity authorized by
-> the copyright owner that is granting the License.
->
-> "Legal Entity" shall mean the union of the acting entity and all
-> other entities that control, are controlled by, or are under common
-> control with that entity. For the purposes of this definition,
-> "control" means (i) the power, direct or indirect, to cause the
-> direction or management of such entity, whether by contract or
-> otherwise, or (ii) ownership of fifty percent (50%) or more of the
-> outstanding shares, or (iii) beneficial ownership of such entity.
->
-> "You" (or "Your") shall mean an individual or Legal Entity
-> exercising permissions granted by this License.
->
-> "Source" form shall mean the preferred form for making modifications,
-> including but not limited to software source code, documentation
-> source, and configuration files.
->
-> "Object" form shall mean any form resulting from mechanical
-> transformation or translation of a Source form, including but
-> not limited to compiled object code, generated documentation,
-> and conversions to other media types.
->
-> "Work" shall mean the work of authorship, whether in Source or
-> Object form, made available under the License, as indicated by a
-> copyright notice that is included in or attached to the work
-> (an example is provided in the Appendix below).
->
-> "Derivative Works" shall mean any work, whether in Source or Object
-> form, that is based on (or derived from) the Work and for which the
-> editorial revisions, annotations, elaborations, or other modifications
-> represent, as a whole, an original work of authorship. For the purposes
-> of this License, Derivative Works shall not include works that remain
-> separable from, or merely link (or bind by name) to the interfaces of,
-> the Work and Derivative Works thereof.
->
-> "Contribution" shall mean any work of authorship, including
-> the original version of the Work and any modifications or additions
-> to that Work or Derivative Works thereof, that is intentionally
-> submitted to Licensor for inclusion in the Work by the copyright owner
-> or by an individual or Legal Entity authorized to submit on behalf of
-> the copyright owner. For the purposes of this definition, "submitted"
-> means any form of electronic, verbal, or written communication sent
-> to the Licensor or its representatives, including but not limited to
-> communication on electronic mailing lists, source code control systems,
-> and issue tracking systems that are managed by, or on behalf of, the
-> Licensor for the purpose of discussing and improving the Work, but
-> excluding communication that is conspicuously marked or otherwise
-> designated in writing by the copyright owner as "Not a Contribution."
->
-> "Contributor" shall mean Licensor and any individual or Legal Entity
-> on behalf of whom a Contribution has been received by Licensor and
-> subsequently incorporated within the Work.
->
-> 2. Grant of Copyright License. Subject to the terms and conditions of
-> this License, each Contributor hereby grants to You a perpetual,
-> worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-> copyright license to reproduce, prepare Derivative Works of,
-> publicly display, publicly perform, sublicense, and distribute the
-> Work and such Derivative Works in Source or Object form.
->
-> 3. Grant of Patent License. Subject to the terms and conditions of
-> this License, each Contributor hereby grants to You a perpetual,
-> worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-> (except as stated in this section) patent license to make, have made,
-> use, offer to sell, sell, import, and otherwise transfer the Work,
-> where such license applies only to those patent claims licensable
-> by such Contributor that are necessarily infringed by their
-> Contribution(s) alone or by combination of their Contribution(s)
-> with the Work to which such Contribution(s) was submitted. If You
-> institute patent litigation against any entity (including a
-> cross-claim or counterclaim in a lawsuit) alleging that the Work
-> or a Contribution incorporated within the Work constitutes direct
-> or contributory patent infringement, then any patent licenses
-> granted to You under this License for that Work shall terminate
-> as of the date such litigation is filed.
->
-> 4. Redistribution. You may reproduce and distribute copies of the
-> Work or Derivative Works thereof in any medium, with or without
-> modifications, and in Source or Object form, provided that You
-> meet the following conditions:
->
-> (a) You must give any other recipients of the Work or
-> Derivative Works a copy of this License; and
->
-> (b) You must cause any modified files to carry prominent notices
-> stating that You changed the files; and
->
-> (c) You must retain, in the Source form of any Derivative Works
-> that You distribute, all copyright, patent, trademark, and
-> attribution notices from the Source form of the Work,
-> excluding those notices that do not pertain to any part of
-> the Derivative Works; and
->
-> (d) If the Work includes a "NOTICE" text file as part of its
-> distribution, then any Derivative Works that You distribute must
-> include a readable copy of the attribution notices contained
-> within such NOTICE file, excluding those notices that do not
-> pertain to any part of the Derivative Works, in at least one
-> of the following places: within a NOTICE text file distributed
-> as part of the Derivative Works; within the Source form or
-> documentation, if provided along with the Derivative Works; or,
-> within a display generated by the Derivative Works, if and
-> wherever such third-party notices normally appear. The contents
-> of the NOTICE file are for informational purposes only and
-> do not modify the License. You may add Your own attribution
-> notices within Derivative Works that You distribute, alongside
-> or as an addendum to the NOTICE text from the Work, provided
-> that such additional attribution notices cannot be construed
-> as modifying the License.
->
-> You may add Your own copyright statement to Your modifications and
-> may provide additional or different license terms and conditions
-> for use, reproduction, or distribution of Your modifications, or
-> for any such Derivative Works as a whole, provided Your use,
-> reproduction, and distribution of the Work otherwise complies with
-> the conditions stated in this License.
->
-> 5. Submission of Contributions. Unless You explicitly state otherwise,
-> any Contribution intentionally submitted for inclusion in the Work
-> by You to the Licensor shall be under the terms and conditions of
-> this License, without any additional terms or conditions.
-> Notwithstanding the above, nothing herein shall supersede or modify
-> the terms of any separate license agreement you may have executed
-> with Licensor regarding such Contributions.
->
-> 6. Trademarks. This License does not grant permission to use the trade
-> names, trademarks, service marks, or product names of the Licensor,
-> except as required for reasonable and customary use in describing the
-> origin of the Work and reproducing the content of the NOTICE file.
->
-> 7. Disclaimer of Warranty. Unless required by applicable law or
-> agreed to in writing, Licensor provides the Work (and each
-> Contributor provides its Contributions) on an "AS IS" BASIS,
-> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-> implied, including, without limitation, any warranties or conditions
-> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-> PARTICULAR PURPOSE. You are solely responsible for determining the
-> appropriateness of using or redistributing the Work and assume any
-> risks associated with Your exercise of permissions under this License.
->
-> 8. Limitation of Liability. In no event and under no legal theory,
-> whether in tort (including negligence), contract, or otherwise,
-> unless required by applicable law (such as deliberate and grossly
-> negligent acts) or agreed to in writing, shall any Contributor be
-> liable to You for damages, including any direct, indirect, special,
-> incidental, or consequential damages of any character arising as a
-> result of this License or out of the use or inability to use the
-> Work (including but not limited to damages for loss of goodwill,
-> work stoppage, computer failure or malfunction, or any and all
-> other commercial damages or losses), even if such Contributor
-> has been advised of the possibility of such damages.
->
-> 9. Accepting Warranty or Additional Liability. While redistributing
-> the Work or Derivative Works thereof, You may choose to offer,
-> and charge a fee for, acceptance of support, warranty, indemnity,
-> or other liability obligations and/or rights consistent with this
-> License. However, in accepting such obligations, You may act only
-> on Your own behalf and on Your sole responsibility, not on behalf
-> of any other Contributor, and only if You agree to indemnify,
-> defend, and hold each Contributor harmless for any liability
-> incurred by, or claims asserted against, such Contributor by reason
-> of your accepting any such warranty or additional liability.
->
-> END OF TERMS AND CONDITIONS
->
-> APPENDIX: How to apply the Apache License to your work.
->
-> To apply the Apache License to your work, attach the following
-> boilerplate notice, with the fields enclosed by brackets "{}"
-> replaced with your own identifying information. (Don't include
-> the brackets!) The text should be enclosed in the appropriate
-> comment syntax for the file format. We also recommend that a
-> file or class name and description of purpose be included on the
-> same "printed page" as the copyright notice for easier
-> identification within third-party archives.
->
-> Copyright contributors
->
-> Licensed under the Apache License, Version 2.0 (the "License");
-> you may not use this file except in compliance with the License.
-> You may obtain a copy of the License at
->
-> http://www.apache.org/licenses/LICENSE-2.0
->
-> Unless required by applicable law or agreed to in writing, software
-> distributed under the License is distributed on an "AS IS" BASIS,
-> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-> See the License for the specific language governing permissions and
-> limitations under the License.
-
-----------------------------------------
-
-## espree@v11.2.0
-
-> An Esprima-compatible JavaScript parser built on Acorn
-
-License: BSD-2-Clause
-Homepage:
-Repository:
-Author: Nicholas C. Zakas
-
-> BSD 2-Clause License
->
-> Copyright (c) Open JS Foundation
-> All rights reserved.
->
-> Redistribution and use in source and binary forms, with or without
-> modification, are permitted provided that the following conditions are met:
->
-> 1. Redistributions of source code must retain the above copyright notice, this
-> list of conditions and the following disclaimer.
->
-> 2. Redistributions in binary form must reproduce the above copyright notice,
-> this list of conditions and the following disclaimer in the documentation
-> and/or other materials provided with the distribution.
->
-> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------
-
-## extend@v3.0.2
-
-> Port of jQuery.extend for node.js and the browser
-
-License: MIT
-Repository:
-Author: Stefan Thomas (http://www.justmoon.net)
-Contributors:
- - Jordan Harband (https://github.com/ljharb)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014 Stefan Thomas
->
-> 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.
-
-----------------------------------------
-
-## fast-glob@v3.3.3
-
-> It's a very fast and efficient glob library for Node.js
-
-License: MIT
-Author: Denis Malinochkin (https://mrmlnc.com)
-
-> The MIT License (MIT)
->
-> Copyright (c) Denis Malinochkin
->
-> 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.
-
-----------------------------------------
-
-## fast-ignore@v2.0.0
-
-> A fast parser and processor for .gitignore files.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## fast-json-stable-stringify@v2.1.0
-
-> deterministic `JSON.stringify()` - a faster version of substack's json-stable-strigify without jsonify
-
-License: MIT
-Homepage:
-Repository:
-Author: James Halliday (http://substack.net)
-
-> This software is released under the MIT license:
->
-> Copyright (c) 2017 Evgeny Poberezkin
-> Copyright (c) 2013 James Halliday
->
-> 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.
-
-----------------------------------------
-
-## fast-string-truncated-width@v3.0.3
-
-> A fast function for calculating where a string should be truncated, given an optional width limit and an ellipsis string.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2024-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## fast-string-width@v3.0.2
-
-> A fast function for calculating the visual width of a string once printed to the terminal.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2024-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## fastq@v1.20.1
-
-> Fast, in memory work queue
-
-License: ISC
-Homepage:
-Repository:
-Author: Matteo Collina
-
-> Copyright (c) 2015-2020, Matteo Collina
->
-> Permission to use, copy, modify, and/or distribute this software for any
-> purpose with or without fee is hereby granted, provided that the above
-> copyright notice and this permission notice appear in all copies.
->
-> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-----------------------------------------
-
-## file-entry-cache@v11.1.5
-
-> A lightweight cache for file metadata, ideal for processes that work on a specific set of files and only need to reprocess files that have changed since the last run
-
-License: MIT
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## fill-range@v7.1.1
-
-> Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-Contributors:
- - Edo Rivai (edo.rivai.nl)
- - Jon Schlinkert (http://twitter.com/jonschlinkert)
- - Paul Miller (paulmillr.com)
- - Rouven Weßling (www.rouvenwessling.de)
- - null (https://github.com/wtgtybhertgeghgtwtg)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014-present, Jon Schlinkert.
->
-> 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.
-
-----------------------------------------
-
-## find-cache-directory@v6.0.0
-
-> Finds the common standard cache directory
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://sindresorhus.com)
-> Copyright (c) James Talmage (https://github.com/jamestalmage)
->
-> 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.
-
-----------------------------------------
-
-## find-in-directory@v5.0.2
-
-> Find file or directory by names in a directory.
-
-License: MIT
-Homepage:
-Author: fisker Cheung (https://www.fiskercheung.com/)
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## find-up-json@v2.0.5
-
-> Find, read and parse the first matching file found walking the filesystem upwards.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2021-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## find-up-path@v1.0.1
-
-> Find the path of the first file matching a given name, walking the filesystem upwards.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2024-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## find-up-simple@v1.0.1
-
-> Find a file or directory by walking up parent directories — Zero dependencies
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## flat-cache@v6.1.23
-
-> A simple key/value storage using files to persist the data
-
-License: MIT
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## flatted@v3.4.2
-
-> A super light and fast circular JSON parser.
-
-License: ISC
-Homepage:
-Repository:
-Author: Andrea Giammarchi
-
-> ISC License
->
-> Copyright (c) 2018-2020, Andrea Giammarchi, @WebReflection
->
-> Permission to use, copy, modify, and/or distribute this software for any
-> purpose with or without fee is hereby granted, provided that the above
-> copyright notice and this permission notice appear in all copies.
->
-> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-> REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-> AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-> INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-> LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-> OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-> PERFORMANCE OF THIS SOFTWARE.
-
-----------------------------------------
-
-## flatten@v1.0.3
-
-> Flatten arbitrarily nested arrays into a non-nested list of non-array items. Maintained for legacy compatibility.
-
-License: MIT
-Homepage:
-Repository:
-Author: Joshua Holbrook (http://jesusabdullah.net)
-Contributors:
- - M.K. (https://github.com/mk-pmb)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2016 Joshua Holbrook
->
-> 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.
-
-----------------------------------------
-
-## flow-estree@v0.321.0
-
-> Flow types for the Flow-ESTree spec produced by the Flow Rust parser, forked from hermes-estree.
-
-License: MIT
-Homepage:
-Repository:
-Author: Flow Team
-
-----------------------------------------
-
-## flow-parser@v0.321.0
-
-> JavaScript parser written in OCaml. Produces ESTree AST
-
-License: MIT
-Homepage:
-Repository:
-Author: Flow Team
-
-----------------------------------------
-
-## function-once@v3.0.1
-
-> Wraps a function so that it's only ever executed once.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2021-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## get-current-package@v1.0.1
-
-> Get the package.json of the currently executing bin.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## get-east-asian-width@v1.6.0
-
-> Determine the East Asian Width of a Unicode character
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## get-stdin@v9.0.0
-
-> Get stdin as a string or buffer
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## glob-parent@v5.1.2
-
-> Extract the non-magic parent path from a glob string.
-
-License: ISC
-Author: Gulp Team (https://gulpjs.com/)
-Contributors:
- - Elan Shanker (https://github.com/es128)
- - Blaine Bublitz
-
-> The ISC License
->
-> Copyright (c) 2015, 2019 Elan Shanker
->
-> Permission to use, copy, modify, and/or distribute this software for any
-> purpose with or without fee is hereby granted, provided that the above
-> copyright notice and this permission notice appear in all copies.
->
-> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-----------------------------------------
-
-## grammex@v3.1.12
-
-> A tiny, PEG-like system for building language grammars with regexes.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## graphmatch@v1.1.1
-
-> A low-level utility for matching a string against a directed acyclic graph of regexes.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2025-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## graphql@v17.0.1
-
-> A Query Language and Runtime which can target any service.
-
-License: MIT
-Homepage:
-Repository:
-
-> MIT License
->
-> Copyright (c) GraphQL 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.
-
-----------------------------------------
-
-## hashery@v1.5.1
-
-> Browser Compatible Object Hashing
-
-License: MIT
-Author: Jared Wray
-
-> MIT License
->
-> Copyright (c) 2025 Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## hookified@v1.15.1
-
-> Event Emitting and Middleware Hooks
-
-License: MIT
-Homepage:
-Repository:
-Author: Jared Wray
-
-> MIT License & © Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## ieee754@v1.2.1
-
-> Read/write IEEE754 floating point numbers from/to a Buffer or array-like object
-
-License: BSD-3-Clause
-Repository:
-Author: Feross Aboukhadijeh (https://feross.org)
-Contributors:
- - Romain Beauxis
-
-> Copyright 2008 Fair Oaks Labs, Inc.
->
-> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
->
-> 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
->
-> 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
->
-> 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
->
-> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------
-
-## ignore@v7.0.5
-
-> Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.
-
-License: MIT
-Repository:
-Author: kael
-
-> Copyright (c) 2013 Kael Zhang , contributors
-> http://kael.me/
->
-> 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.
-
-----------------------------------------
-
-## import-meta-resolve@v4.2.0
-
-> Resolve things like Node.js — ponyfill for `import.meta.resolve`
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer
->
-> 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.
->
-> ---
->
-> This is a derivative work based on:
-> .
-> Which is licensed:
->
-> """
-> Copyright Node.js contributors. All rights reserved.
->
-> 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.
-> """
->
-> This license applies to parts of Node.js originating from the
-> https://github.com/joyent/node repository:
->
-> """
-> Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-> 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.
-> """
-
-----------------------------------------
-
-## imurmurhash-esm@v0.0.2
-
-> An incremental implementation of MurmurHash3 for JavaScript.
-
-License: MIT
-Homepage:
-Author: fisker Cheung (https://www.fiskercheung.com/)
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## index-to-position@v1.2.0
-
-> Convert a string index to its line and column position
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## indexes-of@v1.0.1
-
-> line String/Array#indexOf but return all the indexes in an array
-
-License: MIT
-Homepage:
-Repository:
-Author: Dominic Tarr (dominictarr.com)
-
-> Copyright (c) 2013 Dominic Tarr
->
-> 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.
-
-----------------------------------------
-
-## inherits@v2.0.4
-
-> Browser-friendly inheritance fully compatible with standard node.js inherits()
-
-License: ISC
-
-> The ISC License
->
-> Copyright (c) Isaac Z. Schlueter
->
-> Permission to use, copy, modify, and/or distribute this software for any
-> purpose with or without fee is hereby granted, provided that the above
-> copyright notice and this permission notice appear in all copies.
->
-> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-> REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-> FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-> INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-> LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-> OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-> PERFORMANCE OF THIS SOFTWARE.
-
-----------------------------------------
-
-## ini-simple-parser@v1.0.1
-
-> A simple, fast and configurable INI parser.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## ionstore@v1.0.1
-
-> A very simple isomorphic key-value store with a Map-like API for persisting session data.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## is-alphabetical@v1.0.4
-
-> Check if a character is alphabetical
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## is-alphanumerical@v1.0.4
-
-> Check if a character is alphanumerical
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## is-binary-path@v3.0.0
-
-> Check if a file path is a binary file
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://sindresorhus.com)
-> Copyright (c) Paul Miller (https://paulmillr.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.
-
-----------------------------------------
-
-## is-buffer@v2.0.5
-
-> Determine if an object is a Buffer
-
-License: MIT
-Repository:
-Author: Feross Aboukhadijeh (https://feross.org)
-
-> The MIT License (MIT)
->
-> Copyright (c) Feross Aboukhadijeh
->
-> 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.
-
-----------------------------------------
-
-## is-decimal@v1.0.4
-
-> Check if a character is decimal
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## is-es5-identifier-name@v1.0.1
-
-> Check if provided string is an `IdentifierName` as specified in ECMA262 edition 5.1 section 7.6.
-
-License: MIT
-Author: fisker Cheung
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## is-extglob@v2.1.1
-
-> Returns true if a string has an extglob.
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014-2016, Jon Schlinkert
->
-> 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.
-
-----------------------------------------
-
-## is-glob@v4.0.3
-
-> Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-Contributors:
- - Brian Woodward (https://twitter.com/doowb)
- - Daniel Perez (https://tuvistavie.com)
- - Jon Schlinkert (http://twitter.com/jonschlinkert)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014-2017, Jon Schlinkert.
->
-> 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.
-
-----------------------------------------
-
-## is-hexadecimal@v1.0.4
-
-> Check if a character is hexadecimal
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## is-number@v7.0.0
-
-> Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.
-
-License: MIT
-Homepage:
-Author: Jon Schlinkert (https://github.com/jonschlinkert)
-Contributors:
- - Jon Schlinkert (http://twitter.com/jonschlinkert)
- - Olsten Larck (https://i.am.charlike.online)
- - Rouven Weßling (www.rouvenwessling.de)
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014-present, Jon Schlinkert.
->
-> 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.
-
-----------------------------------------
-
-## is-plain-obj@v2.1.0
-
-> Check if a value is a plain object
-
-License: MIT
-Author: Sindre Sorhus (sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (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.
-
-----------------------------------------
-
-## is-whitespace-character@v1.0.4
-
-> Check if a character is a whitespace character
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## is-word-character@v1.0.4
-
-> Check if a character is a word character
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## isoconcurrency@v1.0.0
-
-> An isomorphic way to get the number of logical cores available.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2025-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## isotimer@v1.0.0
-
-> An isomorphic setImmediate/setInterval/setTimeout implementation.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2025-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## iterate-directory-up@v1.5.2
-
-> Iterate directory up.
-
-License: MIT
-Homepage:
-Author: fisker Cheung (https://www.fiskercheung.com/)
-
-> MIT License
->
-> Copyright (c) fisker Cheung (https://www.fiskercheung.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.
-
-----------------------------------------
-
-## jest-docblock@v30.4.0
-
-License: MIT
-Repository:
-
-> MIT License
->
-> Copyright (c) Meta Platforms, Inc. and affiliates.
-> Copyright Contributors to the Jest project.
->
-> 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.
-
-----------------------------------------
-
-## js-tokens@v10.0.0
-
-> Tiny JavaScript tokenizer.
-
-License: MIT
-Author: Simon Lydell
-
-> The MIT License (MIT)
->
-> Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Simon Lydell
->
-> 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.
-
-----------------------------------------
-
-## js-yaml@v5.1.0
-
-> YAML 1.2 parser and serializer
-
-License: MIT
-Author: Vladimir Zapparov
-Contributors:
- - Aleksey V Zapparov (http://www.ixti.net/)
- - Vitaly Puzrin (https://github.com/puzrin)
- - Martin Grenfell (http://got-ravings.blogspot.com)
-
-> (The MIT License)
->
-> Copyright (C) 2011-2015 by Vitaly Puzrin
->
-> 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.
-
-----------------------------------------
-
-## json-sorted-stringify@v1.0.2
-
-> Alternative JSON.stringify function with sorted keys, so the output is stable.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## json5@v2.2.3
-
-> JSON for Humans
-
-License: MIT
-Homepage:
-Repository:
-Author: Aseem Kishore
-Contributors:
- - Max Nanasy
- - Andrew Eisenberg
- - Jordan Tucker
-
-> MIT License
->
-> Copyright (c) 2012-2018 Aseem Kishore, and [others].
->
-> 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.
->
-> [others]: https://github.com/json5/json5/contributors
-
-----------------------------------------
-
-## kasi@v2.0.1
-
-> A collection of functions for working with different casings.
-
-License: MIT
-
-> The MIT License (MIT)
->
-> Copyright (c) 2023-present Fabio Spampinato
->
-> 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.
-
-----------------------------------------
-
-## katex@v0.16.47
-
-> Fast math typesetting for the web.
-
-License: MIT
-Homepage:
-Repository:
-
-> The MIT License (MIT)
->
-> Copyright (c) 2013-2020 Khan Academy 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.
-
-----------------------------------------
-
-## keyv@v5.6.0
-
-> Simple key-value storage with support for multiple backends
-
-License: MIT
-Homepage:
-Repository:
-Author: Jared Wray (http://jaredwray.com)
-
-> MIT License
->
-> Copyright (c) 2017-2021 Luke Childs
-> Copyright (c) 2021-2022 Jared Wray
->
-> 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.
-
-----------------------------------------
-
-## leven@v4.1.0
-
-> Measure the difference between two strings using the Levenshtein distance algorithm
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://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.
-
-----------------------------------------
-
-## lomemo@v1.0.1
-
-> Lodash's memoize function, but in a much smaller package than lodash.memoize's.
-
-License: MIT
-
-> The MIT License
->
-> Copyright JS Foundation and other contributors
->
-> Based on Underscore.js, copyright Jeremy Ashkenas,
-> DocumentCloud and Investigative Reporters & Editors
->
-> This software consists of voluntary contributions made by many
-> individuals. For exact contribution history, see the revision history
-> available at https://github.com/lodash/lodash
->
-> The following license applies to all parts of this software except as
-> documented below:
->
-> ====
->
-> 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.
->
-> ====
->
-> Copyright and related rights for sample code are waived via CC0. Sample
-> code is defined as all source code displayed within the prose of the
-> documentation.
->
-> CC0: http://creativecommons.org/publicdomain/zero/1.0/
->
-> ====
->
-> Files located in the node_modules and vendor directories are externally
-> maintained libraries used by this software which have their own
-> licenses; we recommend you read them, as their terms may differ from the
-> terms above.
-
-----------------------------------------
-
-## longest-streak@v3.1.0
-
-> Count the longest repeating streak of a substring
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2015 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## markdown-escapes@v1.0.4
-
-> List of escapable characters in markdown
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) 2016 Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## markdown-table@v3.0.4
-
-> Generate a markdown (GFM) table
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## mdast-util-find-and-replace@v3.0.2
-
-> mdast utility to find and replace text in a tree
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## mdast-util-from-markdown@v2.0.3
-
-> mdast utility to parse markdown
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer
->
-> 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.
-
-----------------------------------------
-
-## mdast-util-gfm@v3.1.0
-
-> mdast extension to parse and serialize GFM (GitHub Flavored Markdown)
-
-License: MIT
-Author: Titus Wormer (https://wooorm.com)
-Contributors:
- - Titus Wormer (https://wooorm.com)
-
-> (The MIT License)
->
-> Copyright (c) Titus Wormer