generated from nhcarrigan/template
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 856fb1172f | |||
|
a84ef3e2de
|
|||
|
73057def0a
|
|||
| feb30845f0 | |||
| 689dbbb76f | |||
|
4bd168585f
|
|||
|
b52f67df8e
|
|||
| ba2f300755 | |||
| a362e67051 | |||
| 58d4a26afe | |||
| 9f5f83b32b | |||
| 0ca8b41f25 | |||
| 531aeaa703 | |||
| bc99b44e38 | |||
| 43cbdfc820 | |||
|
ccf3db91cd
|
|||
|
7f8bcb31f0
|
|||
|
7a5032c112
|
|||
|
f77c890e8e
|
|||
| 923c44e634 | |||
| 9124ba2faa | |||
| 11786260d8 | |||
| aec68b86bb | |||
| 791a0fab4f | |||
| a7540edb8f | |||
| eee2fb7de3 | |||
| ee00ff835a | |||
| 58773fc193 | |||
| 5d0660c003 | |||
| ab663e9f4b | |||
| 2bd410631b | |||
| 25ec9f8e2a | |||
| 1f450156c8 | |||
| 5e9d0dd11e | |||
| 4f05dbafbb | |||
| 934de19c1e | |||
| 4a76b22119 | |||
| 542aef157a | |||
| 2e72c34c2d | |||
| c9ae8804eb | |||
| a5f17bb2eb | |||
| 06e58752b9 | |||
| db4dcc3090 | |||
| 53aa95c9c2 | |||
| 93a2339c92 | |||
| 3e3213c554 | |||
| 2e7d5d26e4 | |||
| 52a7b5b812 | |||
| 6be8026024 | |||
| c10089c351 | |||
| 5b8b597d7d | |||
| dd7d4042ea |
+14
-5
@@ -8,22 +8,31 @@ on:
|
|||||||
- main
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
ci:
|
||||||
name: Lint and Test
|
name: CI
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Source Files
|
- name: Checkout Source Files
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use Node.js v22
|
- name: Use Node.js v24
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 24
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@v2
|
uses: pnpm/action-setup@v2
|
||||||
with:
|
with:
|
||||||
version: 9
|
version: 10
|
||||||
|
|
||||||
|
- name: Ensure Dependencies are Pinned
|
||||||
|
uses: naomi-lgbt/dependency-pin-check@main
|
||||||
|
with:
|
||||||
|
language: javascript
|
||||||
|
dev-dependencies: true
|
||||||
|
peer-dependencies: true
|
||||||
|
optional-dependencies: true
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|||||||
@@ -0,0 +1,177 @@
|
|||||||
|
name: Security Scan and Upload
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * 1'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
security-audit:
|
||||||
|
name: Security & DefectDojo Upload
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# --- AUTO-SETUP PROJECT ---
|
||||||
|
- name: Ensure DefectDojo Product Exists
|
||||||
|
env:
|
||||||
|
DD_URL: ${{ secrets.DD_URL }}
|
||||||
|
DD_TOKEN: ${{ secrets.DD_TOKEN }}
|
||||||
|
PRODUCT_NAME: ${{ github.repository }}
|
||||||
|
PRODUCT_TYPE_ID: 1
|
||||||
|
run: |
|
||||||
|
sudo apt-get install jq -y > /dev/null
|
||||||
|
|
||||||
|
echo "Checking connection to $DD_URL..."
|
||||||
|
|
||||||
|
# Check if product exists - capture HTTP code to debug connection issues
|
||||||
|
RESPONSE=$(curl --write-out "%{http_code}" --silent --output /tmp/response.json \
|
||||||
|
-H "Authorization: Token $DD_TOKEN" \
|
||||||
|
"$DD_URL/api/v2/products/?name=$PRODUCT_NAME")
|
||||||
|
|
||||||
|
# If response is not 200, print error
|
||||||
|
if [ "$RESPONSE" != "200" ]; then
|
||||||
|
echo "::error::Failed to query DefectDojo. HTTP Code: $RESPONSE"
|
||||||
|
cat /tmp/response.json
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
COUNT=$(cat /tmp/response.json | jq -r '.count')
|
||||||
|
|
||||||
|
if [ "$COUNT" = "0" ]; then
|
||||||
|
echo "Creating product '$PRODUCT_NAME'..."
|
||||||
|
curl -s -X POST "$DD_URL/api/v2/products/" \
|
||||||
|
-H "Authorization: Token $DD_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{ "name": "'"$PRODUCT_NAME"'", "description": "Auto-created by Gitea Actions", "prod_type": '$PRODUCT_TYPE_ID' }'
|
||||||
|
else
|
||||||
|
echo "Product '$PRODUCT_NAME' already exists."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 1. TRIVY (Dependencies & Misconfig) ---
|
||||||
|
- name: Install Trivy
|
||||||
|
run: |
|
||||||
|
sudo apt-get install wget apt-transport-https gnupg lsb-release -y
|
||||||
|
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
|
||||||
|
echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
|
||||||
|
sudo apt-get update && sudo apt-get install trivy -y
|
||||||
|
|
||||||
|
- name: Run Trivy (FS Scan)
|
||||||
|
run: |
|
||||||
|
trivy fs . --scanners vuln,misconfig --format json --output trivy-results.json --exit-code 0
|
||||||
|
|
||||||
|
- name: Upload Trivy to DefectDojo
|
||||||
|
env:
|
||||||
|
DD_URL: ${{ secrets.DD_URL }}
|
||||||
|
DD_TOKEN: ${{ secrets.DD_TOKEN }}
|
||||||
|
run: |
|
||||||
|
echo "Uploading Trivy results..."
|
||||||
|
# Generate today's date in YYYY-MM-DD format
|
||||||
|
TODAY=$(date +%Y-%m-%d)
|
||||||
|
|
||||||
|
HTTP_CODE=$(curl --write-out "%{http_code}" --output response.txt --silent -X POST "$DD_URL/api/v2/import-scan/" \
|
||||||
|
-H "Authorization: Token $DD_TOKEN" \
|
||||||
|
-F "active=true" \
|
||||||
|
-F "verified=true" \
|
||||||
|
-F "scan_type=Trivy Scan" \
|
||||||
|
-F "engagement_name=CI/CD Pipeline" \
|
||||||
|
-F "product_name=${{ github.repository }}" \
|
||||||
|
-F "scan_date=$TODAY" \
|
||||||
|
-F "auto_create_context=true" \
|
||||||
|
-F "file=@trivy-results.json")
|
||||||
|
|
||||||
|
if [[ "$HTTP_CODE" != "200" && "$HTTP_CODE" != "201" ]]; then
|
||||||
|
echo "::error::Upload Failed with HTTP $HTTP_CODE"
|
||||||
|
echo "--- SERVER RESPONSE ---"
|
||||||
|
cat response.txt
|
||||||
|
echo "-----------------------"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Upload Success!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 2. GITLEAKS (Secrets) ---
|
||||||
|
- name: Install Gitleaks
|
||||||
|
run: |
|
||||||
|
wget -qO gitleaks.tar.gz https://github.com/gitleaks/gitleaks/releases/download/v8.18.0/gitleaks_8.18.0_linux_x64.tar.gz
|
||||||
|
tar -xzf gitleaks.tar.gz
|
||||||
|
sudo mv gitleaks /usr/local/bin/ && chmod +x /usr/local/bin/gitleaks
|
||||||
|
|
||||||
|
- name: Run Gitleaks
|
||||||
|
run: gitleaks detect --source . -v --report-path gitleaks-results.json --report-format json --no-git || true
|
||||||
|
|
||||||
|
- name: Upload Gitleaks to DefectDojo
|
||||||
|
env:
|
||||||
|
DD_URL: ${{ secrets.DD_URL }}
|
||||||
|
DD_TOKEN: ${{ secrets.DD_TOKEN }}
|
||||||
|
run: |
|
||||||
|
echo "Uploading Gitleaks results..."
|
||||||
|
TODAY=$(date +%Y-%m-%d)
|
||||||
|
|
||||||
|
HTTP_CODE=$(curl --write-out "%{http_code}" --output response.txt --silent -X POST "$DD_URL/api/v2/import-scan/" \
|
||||||
|
-H "Authorization: Token $DD_TOKEN" \
|
||||||
|
-F "active=true" \
|
||||||
|
-F "verified=true" \
|
||||||
|
-F "scan_type=Gitleaks Scan" \
|
||||||
|
-F "engagement_name=CI/CD Pipeline" \
|
||||||
|
-F "product_name=${{ github.repository }}" \
|
||||||
|
-F "scan_date=$TODAY" \
|
||||||
|
-F "auto_create_context=true" \
|
||||||
|
-F "file=@gitleaks-results.json")
|
||||||
|
|
||||||
|
if [[ "$HTTP_CODE" != "200" && "$HTTP_CODE" != "201" ]]; then
|
||||||
|
echo "::error::Upload Failed with HTTP $HTTP_CODE"
|
||||||
|
echo "--- SERVER RESPONSE ---"
|
||||||
|
cat response.txt
|
||||||
|
echo "-----------------------"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Upload Success!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 3. SEMGREP (SAST) ---
|
||||||
|
- name: Install Semgrep (via pipx)
|
||||||
|
run: |
|
||||||
|
sudo apt-get install pipx -y
|
||||||
|
pipx install semgrep
|
||||||
|
# Add pipx binary path to GITHUB_PATH so next steps can see 'semgrep'
|
||||||
|
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
- name: Run Semgrep
|
||||||
|
run: semgrep scan --config=p/security-audit --config=p/owasp-top-ten --json --output semgrep-results.json . || true
|
||||||
|
|
||||||
|
- name: Upload Semgrep to DefectDojo
|
||||||
|
env:
|
||||||
|
DD_URL: ${{ secrets.DD_URL }}
|
||||||
|
DD_TOKEN: ${{ secrets.DD_TOKEN }}
|
||||||
|
run: |
|
||||||
|
echo "Uploading Semgrep results..."
|
||||||
|
TODAY=$(date +%Y-%m-%d)
|
||||||
|
|
||||||
|
HTTP_CODE=$(curl --write-out "%{http_code}" --output response.txt --silent -X POST "$DD_URL/api/v2/import-scan/" \
|
||||||
|
-H "Authorization: Token $DD_TOKEN" \
|
||||||
|
-F "active=true" \
|
||||||
|
-F "verified=true" \
|
||||||
|
-F "scan_type=Semgrep JSON Report" \
|
||||||
|
-F "engagement_name=CI/CD Pipeline" \
|
||||||
|
-F "product_name=${{ github.repository }}" \
|
||||||
|
-F "scan_date=$TODAY" \
|
||||||
|
-F "auto_create_context=true" \
|
||||||
|
-F "file=@semgrep-results.json")
|
||||||
|
|
||||||
|
if [[ "$HTTP_CODE" != "200" && "$HTTP_CODE" != "201" ]]; then
|
||||||
|
echo "::error::Upload Failed with HTTP $HTTP_CODE"
|
||||||
|
echo "--- SERVER RESPONSE ---"
|
||||||
|
cat response.txt
|
||||||
|
echo "-----------------------"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Upload Success!"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Package Manager Configuration
|
||||||
|
# Force pnpm usage - breaks npm/yarn intentionally
|
||||||
|
node-linker=pnpm
|
||||||
|
|
||||||
|
# Security: Disable all lifecycle scripts
|
||||||
|
ignore-scripts=true
|
||||||
|
enable-pre-post-scripts=false
|
||||||
|
|
||||||
|
# Security: Require packages to be 10+ days old before installation
|
||||||
|
minimum-release-age=14400
|
||||||
|
|
||||||
|
# Security: Verify package integrity hashes
|
||||||
|
verify-store-integrity=true
|
||||||
|
|
||||||
|
# Security: Enforce strict trust policies
|
||||||
|
trust-policy=strict
|
||||||
|
|
||||||
|
# Security: Strict peer dependency resolution
|
||||||
|
strict-peer-dependencies=true
|
||||||
|
|
||||||
|
# Performance: Use symlinks for node_modules
|
||||||
|
symlink=true
|
||||||
|
|
||||||
|
# Lockfile: Ensure lockfile is not modified during install
|
||||||
|
frozen-lockfile=false
|
||||||
Vendored
+6
-1
@@ -8,5 +8,10 @@
|
|||||||
"sonarlint.connectedMode.project": {
|
"sonarlint.connectedMode.project": {
|
||||||
"connectionId": "nhcarrigan",
|
"connectionId": "nhcarrigan",
|
||||||
"projectKey": "nhcarrigan_website-headers"
|
"projectKey": "nhcarrigan_website-headers"
|
||||||
}
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"Adsense",
|
||||||
|
"nhcarrigan",
|
||||||
|
"noreferrer"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ This page is currently deployed. [View the live website.]
|
|||||||
|
|
||||||
## Feedback and Bugs
|
## Feedback and Bugs
|
||||||
|
|
||||||
If you have feedback or a bug report, please feel free to open a GitHub issue!
|
If you have feedback or a bug report, please [log a ticket on our forum](https://support.nhcarrigan.com).
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
+19
@@ -5,6 +5,25 @@
|
|||||||
<main>
|
<main>
|
||||||
<h1>Test</h1>
|
<h1>Test</h1>
|
||||||
<p>Just a demo page.</p>
|
<p>Just a demo page.</p>
|
||||||
|
<div>
|
||||||
|
Pokem ipsum dolor sit amet Red Natu Misdreavus Marowak Kyogre Deoxys. Glitch City Rampardos Giovanni Heatran Turtwig Scratch Lileep. Sunt in culpa Regirock Deerling Togekiss Shaymin Serperior Reshiram. Normal Gurdurr Probopass Ampharos The Power Of One Vigoroth Pichu. Mirror Move Delibird Slowking Nurse Joy Cherrim Vanillish Hippowdon.
|
||||||
|
|
||||||
|
Gold Maractus Feebas Thunder Badge blast off at the speed of light Mareep Ice. Rock Ditto Pachirisu Glaceon Vulpix Teleport Qwilfish. Fuchsia City Pidgeot Leaf Green Stantler Electric Hidden Machine Goldeen. Bulbasaur Swadloon Sandslash Beldum Serperior Burmy Deoxys. Charmander Pokemon The Movie 2000 excepteur sint occaecat cupidatat non proident Pokemon The Movie 2000 Cubchoo Magnemite Pansage.
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet S.S. Anne Haxorus Lapras Dark Baltoy Kingler. Fog Badge Jolteon Accelgor Purugly Chikorita Probopass Glalie. Poison Sting Braviary Alakazam Darkrai Kricketune Toxicroak Cofagrigus. Razor Leaf Mew Pokemon 4Ever a wild Pokemon appeared Staravia Timburr Beheeyem. Teleport Dusclops Timburr Houndour Nidorino Haxorus Pignite.
|
||||||
|
|
||||||
|
Thundershock Porygon lorem ipsum dolor sit amet Roserade Wobbuffet Moltres Venonat. Splash Parasect Piplup Rotom Razor Leaf Rotom Persian. Viridian City Ghost Tail Whip Smoochum Gurdurr Giratina Tyranitar. Misty Slowking Cubchoo Ciccino Flaaffy Crustle Dratini. Celadon Department Store Purugly Clamperl Kricketot Lanturn Wurmple Cyndaquil.
|
||||||
|
|
||||||
|
Glacier Badge Magikarp used Splash Nidoran Smoochum Bidoof Regirock Mewtwo. Sed do eiusmod tempor incididunt Volcarona Yanmega Probopass Weepinbell Marowak Hitmonchan. Charmeleon Johto Garbodor Octillery Soda Pop Liepard Mantine. Plain Badge Watchog Baltoy Zephyr Badge Cleffa Pokemon The Movie 2000 Whiscash. Mewtwo Strikes Back Ice Virizion prepare for trouble Azumarill Darumaka Snorlax.
|
||||||
|
|
||||||
|
Electric Golurk Alakazam lorem ipsum dolor sit amet Plain Badge Lotad Poliwhirl. Dragon Rage Kabuto Rotom Ponyta Golurk Vigoroth Seadra. Mewtwo Strikes Back Braviary Patrat Poison Kakuna Tropius Technical Machine. Thundershock Jigglypuff Pikachu Ampharos Ambipom Ditto Elgyem. Fire Red Lillipup Breloom Cranidos Squirtle Skiploom I wanna be the very best.
|
||||||
|
|
||||||
|
Vermilion City Minccino Prinplup Gothitelle Thundurus searching far and wide Golbat. Blue Magcargo Honchkrow Delcatty Mawile Gigalith Nidorina. Fuchsia City Youngster wants to fight Patrat Pidgeot Conkeldurr Pokemon Fan Club Chairman Magneton. Teleport Ditto Woobat Mandibuzz Eelektross Burnt Berry Rhydon. Dark Ash Mr. Mime Musharna Mew Bidoof Volcano Badge.
|
||||||
|
|
||||||
|
Brock Ash's mother Kricketot Hariyama Metagross Crawdaunt Marshtomp. Charizard Breloom Maractus Servine Burnt Berry Gothita Treecko. Leaf Green Squirtle Drilbur Tynamo Remoraid Trapinch Scolipede. Team Rocket Leech Seed Torchic Foongus Mirror Move Grovyle Clefable. Velit esse cillum dolore eu fugiat nulla pariatur Cloyster Feebas Carvanha Leech Life Pidgeot Venomoth.
|
||||||
|
|
||||||
|
Yellow Purrloin Nurse Joy Voltorb Mienfoo Voltorb Tail Whip. Sed do eiusmod tempor incididunt Bidoof Oddish Spheal Jirachi Garchomp Liepard. Storm Badge Shelgon Musharna Flareon Terrakion Shedinja Marowak. Charmeleon Bonsly Wigglytuff Regice Mantyke Ash Ketchum Marsh Badge. Silver Forretress Tynamo Masquerain Tangrowth Igglybuff Clamperl.
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
||||||
</body>
|
</body>
|
||||||
<script src="./prod/index.js"></script>
|
<script src="./prod/index.js"></script>
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "website-headers",
|
"name": "website-headers",
|
||||||
"version": "1.2.1",
|
"version": "4.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"concurrently": "9.1.0",
|
"concurrently": "9.1.0",
|
||||||
"eslint": "9.17.0",
|
"eslint": "9.17.0",
|
||||||
"globals": "15.14.0",
|
"globals": "15.14.0",
|
||||||
"terser": "5.37.0",
|
"terser": "5.46.0",
|
||||||
"tsx": "4.19.2",
|
"tsx": "4.19.2",
|
||||||
"typescript": "5.7.2"
|
"typescript": "5.7.2"
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+39
-22
@@ -10,7 +10,7 @@ importers:
|
|||||||
devDependencies:
|
devDependencies:
|
||||||
'@nhcarrigan/eslint-config':
|
'@nhcarrigan/eslint-config':
|
||||||
specifier: 5.0.0
|
specifier: 5.0.0
|
||||||
version: 5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))
|
version: 5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.46.0))
|
||||||
'@nhcarrigan/typescript-config':
|
'@nhcarrigan/typescript-config':
|
||||||
specifier: 4.0.0
|
specifier: 4.0.0
|
||||||
version: 4.0.0(typescript@5.7.2)
|
version: 4.0.0(typescript@5.7.2)
|
||||||
@@ -27,8 +27,8 @@ importers:
|
|||||||
specifier: 15.14.0
|
specifier: 15.14.0
|
||||||
version: 15.14.0
|
version: 15.14.0
|
||||||
terser:
|
terser:
|
||||||
specifier: 5.37.0
|
specifier: 5.46.0
|
||||||
version: 5.37.0
|
version: 5.46.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: 4.19.2
|
specifier: 4.19.2
|
||||||
version: 4.19.2
|
version: 4.19.2
|
||||||
@@ -486,51 +486,61 @@ packages:
|
|||||||
resolution: {integrity: sha512-IPSCTzP8GRYzY+siSnggIKrckC2U+kVXoen6eSHRDgU9a4EZCHHWWOiKio1EkieOOk2j6EvZaaHfQUCmt8UJBg==}
|
resolution: {integrity: sha512-IPSCTzP8GRYzY+siSnggIKrckC2U+kVXoen6eSHRDgU9a4EZCHHWWOiKio1EkieOOk2j6EvZaaHfQUCmt8UJBg==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm-musleabihf@4.29.0':
|
'@rollup/rollup-linux-arm-musleabihf@4.29.0':
|
||||||
resolution: {integrity: sha512-GvHPu0UIDx+ohyS8vTYnwoSVMM5BH3NO+JwQs6GWNCuQVlC5rKxnH2WClTGu3NxiIfhKLai08IKUwn3QbzX1UQ==}
|
resolution: {integrity: sha512-GvHPu0UIDx+ohyS8vTYnwoSVMM5BH3NO+JwQs6GWNCuQVlC5rKxnH2WClTGu3NxiIfhKLai08IKUwn3QbzX1UQ==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-gnu@4.29.0':
|
'@rollup/rollup-linux-arm64-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-Pnnn/2CAZWcH9GQoj1nnr85Ejh7aNDe5MsEV0xhuFNUPF0SdnutJ7b2muOI5Kx12T0/i2ol5B/tlhMviZQDL3g==}
|
resolution: {integrity: sha512-Pnnn/2CAZWcH9GQoj1nnr85Ejh7aNDe5MsEV0xhuFNUPF0SdnutJ7b2muOI5Kx12T0/i2ol5B/tlhMviZQDL3g==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-musl@4.29.0':
|
'@rollup/rollup-linux-arm64-musl@4.29.0':
|
||||||
resolution: {integrity: sha512-AP+DLj4q9FT22ZL43ssA3gizEn7/MfJcZ1BOuyEPqoriuH3a8VRuDddN0MtpUwEtiZL6jc1GY5/eL99hkloQ1Q==}
|
resolution: {integrity: sha512-AP+DLj4q9FT22ZL43ssA3gizEn7/MfJcZ1BOuyEPqoriuH3a8VRuDddN0MtpUwEtiZL6jc1GY5/eL99hkloQ1Q==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-loongarch64-gnu@4.29.0':
|
'@rollup/rollup-linux-loongarch64-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-1+jPFClHmDATqbk0Cwi74KEOymVcs09Vbqe/CTKqLwCP0TeP2CACfnMnjYBs5CJgO20e/4bxFtmbR/9fKE1gug==}
|
resolution: {integrity: sha512-1+jPFClHmDATqbk0Cwi74KEOymVcs09Vbqe/CTKqLwCP0TeP2CACfnMnjYBs5CJgO20e/4bxFtmbR/9fKE1gug==}
|
||||||
cpu: [loong64]
|
cpu: [loong64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-powerpc64le-gnu@4.29.0':
|
'@rollup/rollup-linux-powerpc64le-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-Nmt5Us5w2dL8eh7QVyAIDVVwBv4wk8ljrBQe7lWkLaOcwABDaFQ3K4sAAC6IsOdJwaXXW+d85zVaMN+Xl8Co2w==}
|
resolution: {integrity: sha512-Nmt5Us5w2dL8eh7QVyAIDVVwBv4wk8ljrBQe7lWkLaOcwABDaFQ3K4sAAC6IsOdJwaXXW+d85zVaMN+Xl8Co2w==}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-riscv64-gnu@4.29.0':
|
'@rollup/rollup-linux-riscv64-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-KGuQ8WGhnq09LR7eOru7P9jfBSYXTMhq6TyavWfmEo+TxvkvuRwOCee5lPIa6HYjblOuFr4GeOxSE0c8iyw2Fg==}
|
resolution: {integrity: sha512-KGuQ8WGhnq09LR7eOru7P9jfBSYXTMhq6TyavWfmEo+TxvkvuRwOCee5lPIa6HYjblOuFr4GeOxSE0c8iyw2Fg==}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-s390x-gnu@4.29.0':
|
'@rollup/rollup-linux-s390x-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-lSQtvrYIONme7a4gbf4O9d3zbZat3/5covIeoqk27ZIkTgBeL/67x+wq2bZfpLjkqQQp5SjBPQ/n0sg8iArzTg==}
|
resolution: {integrity: sha512-lSQtvrYIONme7a4gbf4O9d3zbZat3/5covIeoqk27ZIkTgBeL/67x+wq2bZfpLjkqQQp5SjBPQ/n0sg8iArzTg==}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-gnu@4.29.0':
|
'@rollup/rollup-linux-x64-gnu@4.29.0':
|
||||||
resolution: {integrity: sha512-qh0ussrXBwnF4L07M9t1+jpHRhiGSae+wpNQDbmlXHXciT7pqpZ5zpk4dyGZPtDGB2l2clDiufE16BufXPGRWQ==}
|
resolution: {integrity: sha512-qh0ussrXBwnF4L07M9t1+jpHRhiGSae+wpNQDbmlXHXciT7pqpZ5zpk4dyGZPtDGB2l2clDiufE16BufXPGRWQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-musl@4.29.0':
|
'@rollup/rollup-linux-x64-musl@4.29.0':
|
||||||
resolution: {integrity: sha512-YEABzSaRS7+v14yw6MVBZoMqLoUyTX1/sJoGeC0euvgMrzvw0i+jHo4keDZgYeOblfwdseVAf6ylxWSvcBAKTA==}
|
resolution: {integrity: sha512-YEABzSaRS7+v14yw6MVBZoMqLoUyTX1/sJoGeC0euvgMrzvw0i+jHo4keDZgYeOblfwdseVAf6ylxWSvcBAKTA==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-win32-arm64-msvc@4.29.0':
|
'@rollup/rollup-win32-arm64-msvc@4.29.0':
|
||||||
resolution: {integrity: sha512-jA4+oxG7QTTtSQxwSHzFVwShcppHO2DpkbAM59pfD5WMG/da79yQaeBtXAfGTI+ciUx8hqK3RF3H2KWByITXtQ==}
|
resolution: {integrity: sha512-jA4+oxG7QTTtSQxwSHzFVwShcppHO2DpkbAM59pfD5WMG/da79yQaeBtXAfGTI+ciUx8hqK3RF3H2KWByITXtQ==}
|
||||||
@@ -742,6 +752,11 @@ packages:
|
|||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
acorn@8.15.0:
|
||||||
|
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
|
||||||
|
engines: {node: '>=0.4.0'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
ajv@6.12.6:
|
ajv@6.12.6:
|
||||||
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
||||||
|
|
||||||
@@ -1916,8 +1931,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
|
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
terser@5.37.0:
|
terser@5.46.0:
|
||||||
resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==}
|
resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -2370,7 +2385,7 @@ snapshots:
|
|||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.0
|
||||||
|
|
||||||
'@nhcarrigan/eslint-config@5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))':
|
'@nhcarrigan/eslint-config@5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint/compat': 1.2.4(eslint@9.17.0)
|
'@eslint/compat': 1.2.4(eslint@9.17.0)
|
||||||
'@eslint/eslintrc': 3.2.0
|
'@eslint/eslintrc': 3.2.0
|
||||||
@@ -2378,7 +2393,7 @@ snapshots:
|
|||||||
'@stylistic/eslint-plugin': 2.12.0(eslint@9.17.0)(typescript@5.7.2)
|
'@stylistic/eslint-plugin': 2.12.0(eslint@9.17.0)(typescript@5.7.2)
|
||||||
'@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)
|
'@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)
|
||||||
'@typescript-eslint/parser': 8.17.0(eslint@9.17.0)(typescript@5.7.2)
|
'@typescript-eslint/parser': 8.17.0(eslint@9.17.0)(typescript@5.7.2)
|
||||||
'@vitest/eslint-plugin': 1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))
|
'@vitest/eslint-plugin': 1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.46.0))
|
||||||
eslint: 9.17.0
|
eslint: 9.17.0
|
||||||
eslint-plugin-deprecation: 3.0.0(eslint@9.17.0)(typescript@5.7.2)
|
eslint-plugin-deprecation: 3.0.0(eslint@9.17.0)(typescript@5.7.2)
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)
|
||||||
@@ -2391,7 +2406,7 @@ snapshots:
|
|||||||
playwright: 1.49.1
|
playwright: 1.49.1
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
vitest: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
|
vitest: 2.1.8(@types/node@22.10.2)(terser@5.46.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@typescript-eslint/utils'
|
- '@typescript-eslint/utils'
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
@@ -2656,13 +2671,13 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.18.1
|
'@typescript-eslint/types': 8.18.1
|
||||||
eslint-visitor-keys: 4.2.0
|
eslint-visitor-keys: 4.2.0
|
||||||
|
|
||||||
'@vitest/eslint-plugin@1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))':
|
'@vitest/eslint-plugin@1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2)
|
'@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2)
|
||||||
eslint: 9.17.0
|
eslint: 9.17.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
vitest: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
|
vitest: 2.1.8(@types/node@22.10.2)(terser@5.46.0)
|
||||||
|
|
||||||
'@vitest/expect@2.1.8':
|
'@vitest/expect@2.1.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2671,13 +2686,13 @@ snapshots:
|
|||||||
chai: 5.1.2
|
chai: 5.1.2
|
||||||
tinyrainbow: 1.2.0
|
tinyrainbow: 1.2.0
|
||||||
|
|
||||||
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))':
|
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/spy': 2.1.8
|
'@vitest/spy': 2.1.8
|
||||||
estree-walker: 3.0.3
|
estree-walker: 3.0.3
|
||||||
magic-string: 0.30.17
|
magic-string: 0.30.17
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
|
vite: 5.4.11(@types/node@22.10.2)(terser@5.46.0)
|
||||||
|
|
||||||
'@vitest/pretty-format@2.1.8':
|
'@vitest/pretty-format@2.1.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2716,6 +2731,8 @@ snapshots:
|
|||||||
|
|
||||||
acorn@8.14.0: {}
|
acorn@8.14.0: {}
|
||||||
|
|
||||||
|
acorn@8.15.0: {}
|
||||||
|
|
||||||
ajv@6.12.6:
|
ajv@6.12.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-deep-equal: 3.1.3
|
fast-deep-equal: 3.1.3
|
||||||
@@ -4144,10 +4161,10 @@ snapshots:
|
|||||||
'@pkgr/core': 0.1.1
|
'@pkgr/core': 0.1.1
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
terser@5.37.0:
|
terser@5.46.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/source-map': 0.3.6
|
'@jridgewell/source-map': 0.3.6
|
||||||
acorn: 8.14.0
|
acorn: 8.15.0
|
||||||
commander: 2.20.3
|
commander: 2.20.3
|
||||||
source-map-support: 0.5.21
|
source-map-support: 0.5.21
|
||||||
|
|
||||||
@@ -4256,13 +4273,13 @@ snapshots:
|
|||||||
spdx-correct: 3.2.0
|
spdx-correct: 3.2.0
|
||||||
spdx-expression-parse: 3.0.1
|
spdx-expression-parse: 3.0.1
|
||||||
|
|
||||||
vite-node@2.1.8(@types/node@22.10.2)(terser@5.37.0):
|
vite-node@2.1.8(@types/node@22.10.2)(terser@5.46.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
debug: 4.4.0
|
debug: 4.4.0
|
||||||
es-module-lexer: 1.5.4
|
es-module-lexer: 1.5.4
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
|
vite: 5.4.11(@types/node@22.10.2)(terser@5.46.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- less
|
- less
|
||||||
@@ -4274,7 +4291,7 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- terser
|
- terser
|
||||||
|
|
||||||
vite@5.4.11(@types/node@22.10.2)(terser@5.37.0):
|
vite@5.4.11(@types/node@22.10.2)(terser@5.46.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.21.5
|
esbuild: 0.21.5
|
||||||
postcss: 8.4.49
|
postcss: 8.4.49
|
||||||
@@ -4282,12 +4299,12 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 22.10.2
|
'@types/node': 22.10.2
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
terser: 5.37.0
|
terser: 5.46.0
|
||||||
|
|
||||||
vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0):
|
vitest@2.1.8(@types/node@22.10.2)(terser@5.46.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/expect': 2.1.8
|
'@vitest/expect': 2.1.8
|
||||||
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))
|
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.46.0))
|
||||||
'@vitest/pretty-format': 2.1.8
|
'@vitest/pretty-format': 2.1.8
|
||||||
'@vitest/runner': 2.1.8
|
'@vitest/runner': 2.1.8
|
||||||
'@vitest/snapshot': 2.1.8
|
'@vitest/snapshot': 2.1.8
|
||||||
@@ -4303,8 +4320,8 @@ snapshots:
|
|||||||
tinyexec: 0.3.1
|
tinyexec: 0.3.1
|
||||||
tinypool: 1.0.2
|
tinypool: 1.0.2
|
||||||
tinyrainbow: 1.2.0
|
tinyrainbow: 1.2.0
|
||||||
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
|
vite: 5.4.11(@types/node@22.10.2)(terser@5.46.0)
|
||||||
vite-node: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
|
vite-node: 2.1.8(@types/node@22.10.2)(terser@5.46.0)
|
||||||
why-is-node-running: 2.3.0
|
why-is-node-running: 2.3.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 22.10.2
|
'@types/node': 22.10.2
|
||||||
|
|||||||
+912
-228
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user