From a5200c3621fccc0f03ddc243a9a8bbcae19ca1ba Mon Sep 17 00:00:00 2001 From: Franklin Chen Date: Sun, 8 Feb 2026 23:55:52 -0500 Subject: [PATCH] Migrate from Spago 0.21.0 (Dhall) to Spago 1.0.3 (YAML + Registry) Replace Dhall configuration (spago.dhall, packages.dhall, .solution.dhall) with spago.yaml using registry-based package set 73.0.0 across all 32 exercises and the template. Key changes: - All exercises: spago.yaml replaces dhall files, invalidators updated - CI workflow: spago 1.0.3, removed psa - scripts/ci: pre-compile shared deps, copy example solutions to src/ (replaces .solution.dhall approach since Spago 1.0 has no custom sources) - scripts/ci-check: compare spago.yaml (stripping name field) - bin/update-exercises.sh: propagate template spago.yaml to exercises Companion PR needed in exercism/purescript-test-runner. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 5 +- bin/update-exercises.sh | 10 +- config.json | 3 +- .../concept/annalyns-infiltration/.gitignore | 11 +- .../annalyns-infiltration/.meta/config.json | 3 +- .../annalyns-infiltration/.solution.dhall | 5 - .../annalyns-infiltration/packages.dhall | 5 - .../concept/annalyns-infiltration/spago.dhall | 27 - .../concept/annalyns-infiltration/spago.yaml | 31 + .../src/AnnalynsInfiltration.purs | 8 +- exercises/practice/accumulate/.gitignore | 11 +- .../practice/accumulate/.meta/config.json | 3 +- exercises/practice/accumulate/.solution.dhall | 5 - exercises/practice/accumulate/packages.dhall | 5 - exercises/practice/accumulate/spago.dhall | 27 - exercises/practice/accumulate/spago.yaml | 31 + .../practice/accumulate/src/Accumulate.purs | 14 +- exercises/practice/acronym/.gitignore | 11 +- exercises/practice/acronym/.meta/config.json | 3 +- exercises/practice/acronym/.solution.dhall | 5 - exercises/practice/acronym/packages.dhall | 5 - exercises/practice/acronym/spago.dhall | 27 - exercises/practice/acronym/spago.yaml | 31 + exercises/practice/acronym/src/Acronym.purs | 44 +- exercises/practice/all-your-base/.gitignore | 11 +- .../practice/all-your-base/.meta/config.json | 3 +- .../practice/all-your-base/.solution.dhall | 5 - .../practice/all-your-base/packages.dhall | 5 - exercises/practice/all-your-base/spago.dhall | 27 - exercises/practice/all-your-base/spago.yaml | 31 + .../all-your-base/src/AllYourBase.purs | 25 +- exercises/practice/allergies/.gitignore | 11 +- .../practice/allergies/.meta/config.json | 3 +- exercises/practice/allergies/.solution.dhall | 5 - exercises/practice/allergies/packages.dhall | 5 - exercises/practice/allergies/spago.dhall | 27 - exercises/practice/allergies/spago.yaml | 31 + .../practice/allergies/src/Allergies.purs | 25 +- exercises/practice/anagram/.gitignore | 11 +- exercises/practice/anagram/.meta/config.json | 3 +- exercises/practice/anagram/.solution.dhall | 5 - exercises/practice/anagram/packages.dhall | 5 - exercises/practice/anagram/spago.dhall | 27 - exercises/practice/anagram/spago.yaml | 31 + exercises/practice/anagram/src/Anagram.purs | 15 +- exercises/practice/atbash-cipher/.gitignore | 11 +- .../practice/atbash-cipher/.meta/config.json | 3 +- .../practice/atbash-cipher/.solution.dhall | 5 - .../practice/atbash-cipher/packages.dhall | 5 - exercises/practice/atbash-cipher/spago.dhall | 27 - exercises/practice/atbash-cipher/spago.yaml | 31 + .../atbash-cipher/src/AtbashCipher.purs | 37 +- exercises/practice/binary-search/.gitignore | 11 +- .../practice/binary-search/.meta/config.json | 3 +- .../practice/binary-search/.solution.dhall | 5 - .../practice/binary-search/packages.dhall | 5 - exercises/practice/binary-search/spago.dhall | 27 - exercises/practice/binary-search/spago.yaml | 31 + .../binary-search/src/BinarySearch.purs | 17 +- exercises/practice/bob/.gitignore | 11 +- exercises/practice/bob/.meta/config.json | 3 +- exercises/practice/bob/.solution.dhall | 5 - exercises/practice/bob/packages.dhall | 5 - exercises/practice/bob/spago.dhall | 27 - exercises/practice/bob/spago.yaml | 31 + exercises/practice/bob/src/Bob.purs | 44 +- .../practice/collatz-conjecture/.gitignore | 11 +- .../collatz-conjecture/.meta/config.json | 3 +- .../collatz-conjecture/.solution.dhall | 5 - .../collatz-conjecture/packages.dhall | 5 - .../practice/collatz-conjecture/spago.dhall | 27 - .../practice/collatz-conjecture/spago.yaml | 31 + .../src/CollatzConjecture.purs | 12 +- exercises/practice/crypto-square/.gitignore | 11 +- .../practice/crypto-square/.meta/config.json | 3 +- .../practice/crypto-square/.solution.dhall | 5 - .../practice/crypto-square/packages.dhall | 5 - exercises/practice/crypto-square/spago.dhall | 27 - exercises/practice/crypto-square/spago.yaml | 31 + .../crypto-square/src/CryptoSquare.purs | 55 +- exercises/practice/diamond/.gitignore | 11 +- exercises/practice/diamond/.meta/config.json | 3 +- exercises/practice/diamond/.solution.dhall | 5 - exercises/practice/diamond/packages.dhall | 5 - exercises/practice/diamond/spago.dhall | 27 - exercises/practice/diamond/spago.yaml | 31 + exercises/practice/diamond/src/Diamond.purs | 31 +- .../practice/difference-of-squares/.gitignore | 11 +- .../difference-of-squares/.meta/config.json | 3 +- .../difference-of-squares/.solution.dhall | 5 - .../difference-of-squares/packages.dhall | 5 - .../difference-of-squares/spago.dhall | 27 - .../practice/difference-of-squares/spago.yaml | 31 + .../src/DifferenceOfSquares.purs | 15 +- exercises/practice/etl/.gitignore | 11 +- exercises/practice/etl/.meta/config.json | 3 +- exercises/practice/etl/.solution.dhall | 5 - exercises/practice/etl/packages.dhall | 5 - exercises/practice/etl/spago.dhall | 27 - exercises/practice/etl/spago.yaml | 31 + exercises/practice/etl/src/Etl.purs | 20 +- exercises/practice/hamming/.gitignore | 11 +- exercises/practice/hamming/.meta/config.json | 3 +- exercises/practice/hamming/.solution.dhall | 5 - exercises/practice/hamming/packages.dhall | 5 - exercises/practice/hamming/spago.dhall | 27 - exercises/practice/hamming/spago.yaml | 31 + exercises/practice/hamming/src/Hamming.purs | 14 +- exercises/practice/hello-world/.gitignore | 11 +- .../practice/hello-world/.meta/config.json | 3 +- .../practice/hello-world/.solution.dhall | 5 - exercises/practice/hello-world/packages.dhall | 5 - exercises/practice/hello-world/spago.dhall | 27 - exercises/practice/hello-world/spago.yaml | 31 + .../practice/hello-world/src/HelloWorld.purs | 2 +- exercises/practice/isogram/.gitignore | 11 +- exercises/practice/isogram/.meta/config.json | 3 +- exercises/practice/isogram/.solution.dhall | 5 - exercises/practice/isogram/packages.dhall | 5 - exercises/practice/isogram/spago.dhall | 27 - exercises/practice/isogram/spago.yaml | 31 + exercises/practice/isogram/src/Isogram.purs | 19 +- exercises/practice/knapsack/.gitignore | 11 +- exercises/practice/knapsack/.meta/config.json | 3 +- exercises/practice/knapsack/.solution.dhall | 5 - exercises/practice/knapsack/packages.dhall | 5 - exercises/practice/knapsack/spago.dhall | 27 - exercises/practice/knapsack/spago.yaml | 31 + exercises/practice/knapsack/src/Knapsack.purs | 40 +- .../largest-series-product/.gitignore | 11 +- .../largest-series-product/.meta/config.json | 3 +- .../largest-series-product/.solution.dhall | 5 - .../largest-series-product/packages.dhall | 5 - .../largest-series-product/spago.dhall | 27 - .../largest-series-product/spago.yaml | 31 + .../src/LargestSeriesProduct.purs | 30 +- exercises/practice/leap/.gitignore | 11 +- exercises/practice/leap/.meta/config.json | 3 +- exercises/practice/leap/.solution.dhall | 5 - exercises/practice/leap/packages.dhall | 5 - exercises/practice/leap/spago.dhall | 27 - exercises/practice/leap/spago.yaml | 31 + exercises/practice/leap/src/Leap.purs | 11 +- .../practice/matching-brackets/.gitignore | 11 +- .../matching-brackets/.meta/config.json | 3 +- .../matching-brackets/.solution.dhall | 5 - .../practice/matching-brackets/packages.dhall | 5 - .../practice/matching-brackets/spago.dhall | 27 - .../practice/matching-brackets/spago.yaml | 31 + .../src/MatchingBrackets.purs | 39 +- exercises/practice/meetup/.gitignore | 11 +- exercises/practice/meetup/.meta/config.json | 3 +- exercises/practice/meetup/.solution.dhall | 5 - exercises/practice/meetup/packages.dhall | 5 - exercises/practice/meetup/spago.dhall | 27 - exercises/practice/meetup/spago.yaml | 31 + exercises/practice/meetup/src/Meetup.purs | 40 +- exercises/practice/pangram/.gitignore | 11 +- exercises/practice/pangram/.meta/config.json | 3 +- exercises/practice/pangram/.solution.dhall | 5 - exercises/practice/pangram/packages.dhall | 5 - exercises/practice/pangram/spago.dhall | 27 - exercises/practice/pangram/spago.yaml | 31 + exercises/practice/pangram/src/Pangram.purs | 22 +- .../practice/pascals-triangle/.gitignore | 11 +- .../pascals-triangle/.meta/config.json | 3 +- .../practice/pascals-triangle/.solution.dhall | 5 - .../practice/pascals-triangle/packages.dhall | 5 - .../practice/pascals-triangle/spago.dhall | 27 - .../practice/pascals-triangle/spago.yaml | 31 + .../pascals-triangle/src/PascalsTriangle.purs | 27 +- exercises/practice/phone-number/.gitignore | 11 +- .../practice/phone-number/.meta/config.json | 3 +- .../practice/phone-number/.solution.dhall | 5 - .../practice/phone-number/packages.dhall | 5 - exercises/practice/phone-number/spago.dhall | 27 - exercises/practice/phone-number/spago.yaml | 31 + .../phone-number/src/PhoneNumber.purs | 31 +- exercises/practice/raindrops/.gitignore | 11 +- .../practice/raindrops/.meta/config.json | 3 +- exercises/practice/raindrops/.solution.dhall | 5 - exercises/practice/raindrops/packages.dhall | 5 - exercises/practice/raindrops/spago.dhall | 27 - exercises/practice/raindrops/spago.yaml | 31 + .../practice/raindrops/src/Raindrops.purs | 19 +- .../practice/rna-transcription/.gitignore | 11 +- .../rna-transcription/.meta/config.json | 3 +- .../rna-transcription/.solution.dhall | 5 - .../practice/rna-transcription/packages.dhall | 5 - .../practice/rna-transcription/spago.dhall | 27 - .../practice/rna-transcription/spago.yaml | 31 + .../src/RnaTranscription.purs | 15 +- exercises/practice/scrabble-score/.gitignore | 11 +- .../practice/scrabble-score/.meta/config.json | 3 +- .../practice/scrabble-score/.solution.dhall | 5 - .../practice/scrabble-score/packages.dhall | 5 - exercises/practice/scrabble-score/spago.dhall | 27 - exercises/practice/scrabble-score/spago.yaml | 31 + .../scrabble-score/src/ScrabbleScore.purs | 43 +- exercises/practice/spiral-matrix/.gitignore | 11 +- .../practice/spiral-matrix/.meta/config.json | 3 +- .../practice/spiral-matrix/.solution.dhall | 5 - .../practice/spiral-matrix/packages.dhall | 5 - exercises/practice/spiral-matrix/spago.dhall | 27 - exercises/practice/spiral-matrix/spago.yaml | 31 + .../spiral-matrix/src/SpiralMatrix.purs | 27 +- .../practice/sum-of-multiples/.gitignore | 11 +- .../sum-of-multiples/.meta/config.json | 3 +- .../practice/sum-of-multiples/.solution.dhall | 5 - .../practice/sum-of-multiples/packages.dhall | 5 - .../practice/sum-of-multiples/spago.dhall | 27 - .../practice/sum-of-multiples/spago.yaml | 31 + .../sum-of-multiples/src/SumOfMultiples.purs | 12 +- exercises/practice/triangle/.gitignore | 11 +- exercises/practice/triangle/.meta/config.json | 3 +- exercises/practice/triangle/.solution.dhall | 5 - exercises/practice/triangle/packages.dhall | 5 - exercises/practice/triangle/spago.dhall | 27 - exercises/practice/triangle/spago.yaml | 31 + exercises/practice/triangle/src/Triangle.purs | 27 +- exercises/practice/word-count/.gitignore | 11 +- .../practice/word-count/.meta/config.json | 3 +- exercises/practice/word-count/.solution.dhall | 5 - exercises/practice/word-count/packages.dhall | 5 - exercises/practice/word-count/spago.dhall | 27 - exercises/practice/word-count/spago.yaml | 31 + .../practice/word-count/src/WordCount.purs | 29 +- scripts/ci | 70 +- scripts/ci-check | 25 +- template/.gitignore | 11 +- template/package-lock.json | 4635 ++++++----------- template/package.json | 2 +- template/packages.dhall | 5 - template/spago.dhall | 27 - template/spago.yaml | 31 + 235 files changed, 3419 insertions(+), 4838 deletions(-) delete mode 100644 exercises/concept/annalyns-infiltration/.solution.dhall delete mode 100644 exercises/concept/annalyns-infiltration/packages.dhall delete mode 100644 exercises/concept/annalyns-infiltration/spago.dhall create mode 100644 exercises/concept/annalyns-infiltration/spago.yaml delete mode 100644 exercises/practice/accumulate/.solution.dhall delete mode 100644 exercises/practice/accumulate/packages.dhall delete mode 100644 exercises/practice/accumulate/spago.dhall create mode 100644 exercises/practice/accumulate/spago.yaml delete mode 100644 exercises/practice/acronym/.solution.dhall delete mode 100644 exercises/practice/acronym/packages.dhall delete mode 100644 exercises/practice/acronym/spago.dhall create mode 100644 exercises/practice/acronym/spago.yaml delete mode 100644 exercises/practice/all-your-base/.solution.dhall delete mode 100644 exercises/practice/all-your-base/packages.dhall delete mode 100644 exercises/practice/all-your-base/spago.dhall create mode 100644 exercises/practice/all-your-base/spago.yaml delete mode 100644 exercises/practice/allergies/.solution.dhall delete mode 100644 exercises/practice/allergies/packages.dhall delete mode 100644 exercises/practice/allergies/spago.dhall create mode 100644 exercises/practice/allergies/spago.yaml delete mode 100644 exercises/practice/anagram/.solution.dhall delete mode 100644 exercises/practice/anagram/packages.dhall delete mode 100644 exercises/practice/anagram/spago.dhall create mode 100644 exercises/practice/anagram/spago.yaml delete mode 100644 exercises/practice/atbash-cipher/.solution.dhall delete mode 100644 exercises/practice/atbash-cipher/packages.dhall delete mode 100644 exercises/practice/atbash-cipher/spago.dhall create mode 100644 exercises/practice/atbash-cipher/spago.yaml delete mode 100644 exercises/practice/binary-search/.solution.dhall delete mode 100644 exercises/practice/binary-search/packages.dhall delete mode 100644 exercises/practice/binary-search/spago.dhall create mode 100644 exercises/practice/binary-search/spago.yaml delete mode 100644 exercises/practice/bob/.solution.dhall delete mode 100644 exercises/practice/bob/packages.dhall delete mode 100644 exercises/practice/bob/spago.dhall create mode 100644 exercises/practice/bob/spago.yaml delete mode 100644 exercises/practice/collatz-conjecture/.solution.dhall delete mode 100644 exercises/practice/collatz-conjecture/packages.dhall delete mode 100644 exercises/practice/collatz-conjecture/spago.dhall create mode 100644 exercises/practice/collatz-conjecture/spago.yaml delete mode 100644 exercises/practice/crypto-square/.solution.dhall delete mode 100644 exercises/practice/crypto-square/packages.dhall delete mode 100644 exercises/practice/crypto-square/spago.dhall create mode 100644 exercises/practice/crypto-square/spago.yaml delete mode 100644 exercises/practice/diamond/.solution.dhall delete mode 100644 exercises/practice/diamond/packages.dhall delete mode 100644 exercises/practice/diamond/spago.dhall create mode 100644 exercises/practice/diamond/spago.yaml delete mode 100644 exercises/practice/difference-of-squares/.solution.dhall delete mode 100644 exercises/practice/difference-of-squares/packages.dhall delete mode 100644 exercises/practice/difference-of-squares/spago.dhall create mode 100644 exercises/practice/difference-of-squares/spago.yaml delete mode 100644 exercises/practice/etl/.solution.dhall delete mode 100644 exercises/practice/etl/packages.dhall delete mode 100644 exercises/practice/etl/spago.dhall create mode 100644 exercises/practice/etl/spago.yaml delete mode 100644 exercises/practice/hamming/.solution.dhall delete mode 100644 exercises/practice/hamming/packages.dhall delete mode 100644 exercises/practice/hamming/spago.dhall create mode 100644 exercises/practice/hamming/spago.yaml delete mode 100644 exercises/practice/hello-world/.solution.dhall delete mode 100644 exercises/practice/hello-world/packages.dhall delete mode 100644 exercises/practice/hello-world/spago.dhall create mode 100644 exercises/practice/hello-world/spago.yaml delete mode 100644 exercises/practice/isogram/.solution.dhall delete mode 100644 exercises/practice/isogram/packages.dhall delete mode 100644 exercises/practice/isogram/spago.dhall create mode 100644 exercises/practice/isogram/spago.yaml delete mode 100644 exercises/practice/knapsack/.solution.dhall delete mode 100644 exercises/practice/knapsack/packages.dhall delete mode 100644 exercises/practice/knapsack/spago.dhall create mode 100644 exercises/practice/knapsack/spago.yaml delete mode 100644 exercises/practice/largest-series-product/.solution.dhall delete mode 100644 exercises/practice/largest-series-product/packages.dhall delete mode 100644 exercises/practice/largest-series-product/spago.dhall create mode 100644 exercises/practice/largest-series-product/spago.yaml delete mode 100644 exercises/practice/leap/.solution.dhall delete mode 100644 exercises/practice/leap/packages.dhall delete mode 100644 exercises/practice/leap/spago.dhall create mode 100644 exercises/practice/leap/spago.yaml delete mode 100644 exercises/practice/matching-brackets/.solution.dhall delete mode 100644 exercises/practice/matching-brackets/packages.dhall delete mode 100644 exercises/practice/matching-brackets/spago.dhall create mode 100644 exercises/practice/matching-brackets/spago.yaml delete mode 100644 exercises/practice/meetup/.solution.dhall delete mode 100644 exercises/practice/meetup/packages.dhall delete mode 100644 exercises/practice/meetup/spago.dhall create mode 100644 exercises/practice/meetup/spago.yaml delete mode 100644 exercises/practice/pangram/.solution.dhall delete mode 100644 exercises/practice/pangram/packages.dhall delete mode 100644 exercises/practice/pangram/spago.dhall create mode 100644 exercises/practice/pangram/spago.yaml delete mode 100644 exercises/practice/pascals-triangle/.solution.dhall delete mode 100644 exercises/practice/pascals-triangle/packages.dhall delete mode 100644 exercises/practice/pascals-triangle/spago.dhall create mode 100644 exercises/practice/pascals-triangle/spago.yaml delete mode 100644 exercises/practice/phone-number/.solution.dhall delete mode 100644 exercises/practice/phone-number/packages.dhall delete mode 100644 exercises/practice/phone-number/spago.dhall create mode 100644 exercises/practice/phone-number/spago.yaml delete mode 100644 exercises/practice/raindrops/.solution.dhall delete mode 100644 exercises/practice/raindrops/packages.dhall delete mode 100644 exercises/practice/raindrops/spago.dhall create mode 100644 exercises/practice/raindrops/spago.yaml delete mode 100644 exercises/practice/rna-transcription/.solution.dhall delete mode 100644 exercises/practice/rna-transcription/packages.dhall delete mode 100644 exercises/practice/rna-transcription/spago.dhall create mode 100644 exercises/practice/rna-transcription/spago.yaml delete mode 100644 exercises/practice/scrabble-score/.solution.dhall delete mode 100644 exercises/practice/scrabble-score/packages.dhall delete mode 100644 exercises/practice/scrabble-score/spago.dhall create mode 100644 exercises/practice/scrabble-score/spago.yaml delete mode 100644 exercises/practice/spiral-matrix/.solution.dhall delete mode 100644 exercises/practice/spiral-matrix/packages.dhall delete mode 100644 exercises/practice/spiral-matrix/spago.dhall create mode 100644 exercises/practice/spiral-matrix/spago.yaml delete mode 100644 exercises/practice/sum-of-multiples/.solution.dhall delete mode 100644 exercises/practice/sum-of-multiples/packages.dhall delete mode 100644 exercises/practice/sum-of-multiples/spago.dhall create mode 100644 exercises/practice/sum-of-multiples/spago.yaml delete mode 100644 exercises/practice/triangle/.solution.dhall delete mode 100644 exercises/practice/triangle/packages.dhall delete mode 100644 exercises/practice/triangle/spago.dhall create mode 100644 exercises/practice/triangle/spago.yaml delete mode 100644 exercises/practice/word-count/.solution.dhall delete mode 100644 exercises/practice/word-count/packages.dhall delete mode 100644 exercises/practice/word-count/spago.dhall create mode 100644 exercises/practice/word-count/spago.yaml delete mode 100644 template/packages.dhall delete mode 100644 template/spago.dhall create mode 100644 template/spago.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 492f5e63..0a6e821d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,12 +28,11 @@ jobs: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - - name: Fetch the PureScript compiler + - name: Set up PureScript toolchain uses: purescript-contrib/setup-purescript@2330ad9736aba56d65964a3335fe9368c9674db8 with: - psa: "0.9.0" purescript: "0.15.15" - spago: "0.21.0" + spago: "1.0.3" - name: Run exercism/purescript ci (runs tests) for all exercises run: scripts/ci diff --git a/bin/update-exercises.sh b/bin/update-exercises.sh index 104ecabb..e728b615 100755 --- a/bin/update-exercises.sh +++ b/bin/update-exercises.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# This script will update spago.dhall and package.dhall of all exercises +# This script will update spago.yaml and .gitignore of all exercises # using the master files from the project template (template/). set -e @@ -8,16 +8,14 @@ set -o pipefail set -u base_dir=$(builtin cd "${BASH_SOURCE%/*}/.." || exit; pwd) -exercises_dir="${base_dir}/exercises" template_dir="${base_dir}/template" -for config in "$exercises_dir"/*/*/spago.dhall; do - exercise_dir=$(dirname "${config}") +for exercise_dir in "$base_dir"/exercises/*/*; do + [ -d "${exercise_dir}" ] || continue slug=$(basename "${exercise_dir}") echo "Working in ${exercise_dir}..." - sed -e "s/exercise-template/${slug}/" < "${template_dir}/spago.dhall" > "${exercise_dir}/spago.dhall" - cp "${template_dir}/packages.dhall" "${exercise_dir}/packages.dhall" + sed -e "s/exercise-template/${slug}/" < "${template_dir}/spago.yaml" > "${exercise_dir}/spago.yaml" cp "${template_dir}/.gitignore" "${exercise_dir}/.gitignore" done diff --git a/config.json b/config.json index 3ee5fc81..e053bb1f 100644 --- a/config.json +++ b/config.json @@ -32,8 +32,7 @@ ".meta/Exemplar.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "exercises": { diff --git a/exercises/concept/annalyns-infiltration/.gitignore b/exercises/concept/annalyns-infiltration/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/concept/annalyns-infiltration/.gitignore +++ b/exercises/concept/annalyns-infiltration/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/concept/annalyns-infiltration/.meta/config.json b/exercises/concept/annalyns-infiltration/.meta/config.json index f527b0f7..23d75940 100644 --- a/exercises/concept/annalyns-infiltration/.meta/config.json +++ b/exercises/concept/annalyns-infiltration/.meta/config.json @@ -13,8 +13,7 @@ ".meta/Exemplar.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "forked_from": [ diff --git a/exercises/concept/annalyns-infiltration/.solution.dhall b/exercises/concept/annalyns-infiltration/.solution.dhall deleted file mode 100644 index 29d43144..00000000 --- a/exercises/concept/annalyns-infiltration/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ ".meta/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/concept/annalyns-infiltration/packages.dhall b/exercises/concept/annalyns-infiltration/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/concept/annalyns-infiltration/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/concept/annalyns-infiltration/spago.dhall b/exercises/concept/annalyns-infiltration/spago.dhall deleted file mode 100644 index 32c0b27c..00000000 --- a/exercises/concept/annalyns-infiltration/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "annalyns-infiltration" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/concept/annalyns-infiltration/spago.yaml b/exercises/concept/annalyns-infiltration/spago.yaml new file mode 100644 index 00000000..ef0145af --- /dev/null +++ b/exercises/concept/annalyns-infiltration/spago.yaml @@ -0,0 +1,31 @@ +package: + name: annalyns-infiltration + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/concept/annalyns-infiltration/src/AnnalynsInfiltration.purs b/exercises/concept/annalyns-infiltration/src/AnnalynsInfiltration.purs index 50b2fa7b..7d7ef988 100644 --- a/exercises/concept/annalyns-infiltration/src/AnnalynsInfiltration.purs +++ b/exercises/concept/annalyns-infiltration/src/AnnalynsInfiltration.purs @@ -3,13 +3,13 @@ module AnnalynsInfiltration where import Prelude canExecuteFastAttack :: Boolean -> Boolean -canExecuteFastAttack knightIsAwake = -- You need to implement this function! +canExecuteFastAttack knightIsAwake = not knightIsAwake canSpy :: Boolean -> Boolean -> Boolean -> Boolean -canSpy knightIsAwake archerIsAwake prisonerIsAwake = -- You need to implement this function! +canSpy knightIsAwake archerIsAwake prisonerIsAwake = knightIsAwake || archerIsAwake || prisonerIsAwake canSignalPrisoner :: Boolean -> Boolean -> Boolean -canSignalPrisoner archerIsAwake prisonerIsAwake = -- You need to implement this function! +canSignalPrisoner archerIsAwake prisonerIsAwake = not archerIsAwake && prisonerIsAwake canFreePrisoner :: Boolean -> Boolean -> Boolean -> Boolean -> Boolean -canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent = -- You need to implement this function! +canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent = not knightIsAwake && not archerIsAwake && prisonerIsAwake || petDogIsPresent && not archerIsAwake diff --git a/exercises/practice/accumulate/.gitignore b/exercises/practice/accumulate/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/accumulate/.gitignore +++ b/exercises/practice/accumulate/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/accumulate/.meta/config.json b/exercises/practice/accumulate/.meta/config.json index 816be860..84bb0af7 100644 --- a/exercises/practice/accumulate/.meta/config.json +++ b/exercises/practice/accumulate/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Accumulate.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Implement the `accumulate` operation, which, given a collection and an operation to perform on each element of the collection, returns a new collection containing the result of applying that operation to each element of the input collection.", diff --git a/exercises/practice/accumulate/.solution.dhall b/exercises/practice/accumulate/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/accumulate/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/accumulate/packages.dhall b/exercises/practice/accumulate/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/accumulate/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/accumulate/spago.dhall b/exercises/practice/accumulate/spago.dhall deleted file mode 100644 index 9ce1b3ba..00000000 --- a/exercises/practice/accumulate/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "accumulate" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/accumulate/spago.yaml b/exercises/practice/accumulate/spago.yaml new file mode 100644 index 00000000..bb45bcb9 --- /dev/null +++ b/exercises/practice/accumulate/spago.yaml @@ -0,0 +1,31 @@ +package: + name: accumulate + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/accumulate/src/Accumulate.purs b/exercises/practice/accumulate/src/Accumulate.purs index e465e649..b7131603 100644 --- a/exercises/practice/accumulate/src/Accumulate.purs +++ b/exercises/practice/accumulate/src/Accumulate.purs @@ -2,8 +2,14 @@ module Accumulate ( accumulate ) where -import Data.List (List) -import Effect.Exception.Unsafe (unsafeThrow) -accumulate :: forall a b. (a -> b) -> List a -> List b -accumulate = unsafeThrow "You need to implement this function." +import Data.List (List(Nil), (:), reverse) + + +accumulate :: forall a b . (a -> b) -> List a -> List b +accumulate = + let + accumulate' acc f Nil = reverse acc + accumulate' acc f (v:vs) = accumulate' (f v:acc) f vs + in + accumulate' Nil diff --git a/exercises/practice/acronym/.gitignore b/exercises/practice/acronym/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/acronym/.gitignore +++ b/exercises/practice/acronym/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/acronym/.meta/config.json b/exercises/practice/acronym/.meta/config.json index b4eac3c6..97d68d61 100644 --- a/exercises/practice/acronym/.meta/config.json +++ b/exercises/practice/acronym/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Acronym.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Convert a long phrase to its acronym.", diff --git a/exercises/practice/acronym/.solution.dhall b/exercises/practice/acronym/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/acronym/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/acronym/packages.dhall b/exercises/practice/acronym/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/acronym/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/acronym/spago.dhall b/exercises/practice/acronym/spago.dhall deleted file mode 100644 index 87077a00..00000000 --- a/exercises/practice/acronym/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "acronym" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/acronym/spago.yaml b/exercises/practice/acronym/spago.yaml new file mode 100644 index 00000000..b6f54f7c --- /dev/null +++ b/exercises/practice/acronym/spago.yaml @@ -0,0 +1,31 @@ +package: + name: acronym + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/acronym/src/Acronym.purs b/exercises/practice/acronym/src/Acronym.purs index 4c69e619..37dc6ca8 100644 --- a/exercises/practice/acronym/src/Acronym.purs +++ b/exercises/practice/acronym/src/Acronym.purs @@ -2,7 +2,47 @@ module Acronym ( abbreviate ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.CodePoint.Unicode as UChar +import Data.Foldable (foldl) +import Data.List (List) +import Data.List as List +import Data.String (codePointFromChar) +import Data.String as String +import Data.String.CodeUnits (toCharArray) abbreviate :: String -> String -abbreviate = unsafeThrow "You need to implement this function." +abbreviate = + initials <<< List.fromFoldable <<< toCharArray + +data CharType + = Upper + | Lower + | Space + | Other + + +classify :: Char -> CharType +classify '-' = Space +classify ' ' = Space +classify c + | UChar.isUpper (codePointFromChar c) = Upper + | UChar.isLower (codePointFromChar c) = Lower + | otherwise = Other + + +initials :: List Char -> String +initials = + let + next Lower Upper = String.singleton <<< codePointFromChar + next Space _ = String.toUpper <<< String.singleton <<< codePointFromChar + next _ _ = const "" + + step { acc, last } c = + let charClass = classify c + in { acc: acc <> next last charClass c + , last: charClass + } + in + _.acc <<< foldl step { acc: "", last: Space } diff --git a/exercises/practice/all-your-base/.gitignore b/exercises/practice/all-your-base/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/all-your-base/.gitignore +++ b/exercises/practice/all-your-base/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/all-your-base/.meta/config.json b/exercises/practice/all-your-base/.meta/config.json index 1f1966db..6097aaca 100644 --- a/exercises/practice/all-your-base/.meta/config.json +++ b/exercises/practice/all-your-base/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/AllYourBase.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Convert a number, represented as a sequence of digits in one base, to any other base." diff --git a/exercises/practice/all-your-base/.solution.dhall b/exercises/practice/all-your-base/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/all-your-base/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/all-your-base/packages.dhall b/exercises/practice/all-your-base/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/all-your-base/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/all-your-base/spago.dhall b/exercises/practice/all-your-base/spago.dhall deleted file mode 100644 index 004a630a..00000000 --- a/exercises/practice/all-your-base/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "all-your-base" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/all-your-base/spago.yaml b/exercises/practice/all-your-base/spago.yaml new file mode 100644 index 00000000..3ec7af49 --- /dev/null +++ b/exercises/practice/all-your-base/spago.yaml @@ -0,0 +1,31 @@ +package: + name: all-your-base + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/all-your-base/src/AllYourBase.purs b/exercises/practice/all-your-base/src/AllYourBase.purs index 16bd3f55..f8855aad 100644 --- a/exercises/practice/all-your-base/src/AllYourBase.purs +++ b/exercises/practice/all-your-base/src/AllYourBase.purs @@ -2,8 +2,27 @@ module AllYourBase ( rebase ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (all, any, length, range, reverse, take, zipWith) +import Data.Foldable (sum) +import Data.Int (pow) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Tuple (Tuple(..)) +import Data.Unfoldable (unfoldr) + +rebase' :: Int -> Int -> Array Int -> Array Int +rebase' inb oub ind = + zipWith (*) ind pows + # sum + # unfoldr fromDec + # reverse + where pows = map (pow inb) (range (length ind - 1) 0) + fromDec 0 = Nothing + fromDec n = Just $ Tuple (n `mod` oub) (n / oub) rebase :: Int -> Int -> Array Int -> Maybe (Array Int) -rebase = unsafeThrow "You need to implement this function." +rebase inb oub ind + | all (_ == 0) (take 1 ind) = Nothing + | any ((_ < 0) || (inb <= _)) ind = Nothing + | inb < 2 || oub < 2 = Nothing + | otherwise = Just $ rebase' inb oub ind diff --git a/exercises/practice/allergies/.gitignore b/exercises/practice/allergies/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/allergies/.gitignore +++ b/exercises/practice/allergies/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/allergies/.meta/config.json b/exercises/practice/allergies/.meta/config.json index 4009b02a..1a9aa7ee 100644 --- a/exercises/practice/allergies/.meta/config.json +++ b/exercises/practice/allergies/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Allergies.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.", diff --git a/exercises/practice/allergies/.solution.dhall b/exercises/practice/allergies/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/allergies/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/allergies/packages.dhall b/exercises/practice/allergies/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/allergies/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/allergies/spago.dhall b/exercises/practice/allergies/spago.dhall deleted file mode 100644 index a212f6f0..00000000 --- a/exercises/practice/allergies/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "allergies" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/allergies/spago.yaml b/exercises/practice/allergies/spago.yaml new file mode 100644 index 00000000..19f1d144 --- /dev/null +++ b/exercises/practice/allergies/spago.yaml @@ -0,0 +1,31 @@ +package: + name: allergies + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/allergies/src/Allergies.purs b/exercises/practice/allergies/src/Allergies.purs index e3ce030d..f1cb6de3 100644 --- a/exercises/practice/allergies/src/Allergies.purs +++ b/exercises/practice/allergies/src/Allergies.purs @@ -3,10 +3,29 @@ module Allergies , list ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (filter) +import Data.Int.Bits ((.&.)) +import Data.Map (fromFoldable, lookup) +import Data.Maybe (fromMaybe) +import Data.Tuple (Tuple(Tuple), fst) + +weights :: Array (Tuple String Int) +weights = + [ Tuple "eggs" 1 + , Tuple "peanuts" 2 + , Tuple "shellfish" 4 + , Tuple "strawberries" 8 + , Tuple "tomatoes" 16 + , Tuple "chocolate" 32 + , Tuple "pollen" 64 + , Tuple "cats" 128 + ] allergicTo :: Int -> String -> Boolean -allergicTo = unsafeThrow "You need to implement `allergicTo`." +allergicTo score substance = fromMaybe false $ do + weight <- lookup substance (fromFoldable weights) + pure $ score .&. weight == weight list :: Int -> Array String -list = unsafeThrow "You need to implement `list`." +list score = filter (allergicTo score) (map fst weights) diff --git a/exercises/practice/anagram/.gitignore b/exercises/practice/anagram/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/anagram/.gitignore +++ b/exercises/practice/anagram/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/anagram/.meta/config.json b/exercises/practice/anagram/.meta/config.json index c0f5bb31..491890e2 100644 --- a/exercises/practice/anagram/.meta/config.json +++ b/exercises/practice/anagram/.meta/config.json @@ -13,8 +13,7 @@ "examples/src/Anagram.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a word and a list of possible anagrams, select the correct sublist.", diff --git a/exercises/practice/anagram/.solution.dhall b/exercises/practice/anagram/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/anagram/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/anagram/packages.dhall b/exercises/practice/anagram/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/anagram/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/anagram/spago.dhall b/exercises/practice/anagram/spago.dhall deleted file mode 100644 index 2c9db80c..00000000 --- a/exercises/practice/anagram/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "anagram" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/anagram/spago.yaml b/exercises/practice/anagram/spago.yaml new file mode 100644 index 00000000..f710b28d --- /dev/null +++ b/exercises/practice/anagram/spago.yaml @@ -0,0 +1,31 @@ +package: + name: anagram + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/anagram/src/Anagram.purs b/exercises/practice/anagram/src/Anagram.purs index 4f38283f..d49a635c 100644 --- a/exercises/practice/anagram/src/Anagram.purs +++ b/exercises/practice/anagram/src/Anagram.purs @@ -2,7 +2,18 @@ module Anagram ( anagramsFor ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (filter, sort) +import Data.String.Common (toLower) +import Data.String.CodeUnits (toCharArray) anagramsFor :: String -> Array String -> Array String -anagramsFor word candidates = unsafeThrow "You need to implement this function." +anagramsFor word candidates = filter (isAnagram word) candidates + +isAnagram :: String -> String -> Boolean +isAnagram word candidate = lowerWord /= lowerCandidate && sortedWord == sortedCandidate + where + lowerWord = toLower word + lowerCandidate = toLower candidate + sortedWord = sort $ toCharArray lowerWord + sortedCandidate = sort $ toCharArray lowerCandidate diff --git a/exercises/practice/atbash-cipher/.gitignore b/exercises/practice/atbash-cipher/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/atbash-cipher/.gitignore +++ b/exercises/practice/atbash-cipher/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/atbash-cipher/.meta/config.json b/exercises/practice/atbash-cipher/.meta/config.json index 79aa8834..04dcec18 100644 --- a/exercises/practice/atbash-cipher/.meta/config.json +++ b/exercises/practice/atbash-cipher/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/AtbashCipher.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.", diff --git a/exercises/practice/atbash-cipher/.solution.dhall b/exercises/practice/atbash-cipher/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/atbash-cipher/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/atbash-cipher/packages.dhall b/exercises/practice/atbash-cipher/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/atbash-cipher/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/atbash-cipher/spago.dhall b/exercises/practice/atbash-cipher/spago.dhall deleted file mode 100644 index dbcf6023..00000000 --- a/exercises/practice/atbash-cipher/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "atbash-cipher" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/atbash-cipher/spago.yaml b/exercises/practice/atbash-cipher/spago.yaml new file mode 100644 index 00000000..83b9e8ba --- /dev/null +++ b/exercises/practice/atbash-cipher/spago.yaml @@ -0,0 +1,31 @@ +package: + name: atbash-cipher + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/atbash-cipher/src/AtbashCipher.purs b/exercises/practice/atbash-cipher/src/AtbashCipher.purs index 4faed9ba..2721247f 100644 --- a/exercises/practice/atbash-cipher/src/AtbashCipher.purs +++ b/exercises/practice/atbash-cipher/src/AtbashCipher.purs @@ -3,11 +3,42 @@ module AtbashCipher , encode ) where +import Prelude + +import Data.Array (drop, filter, take, zip, (:)) +import Data.CodePoint.Unicode (isPunctuation, isSpace) +import Data.Map (Map, fromFoldable, lookup) import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Data.String (codePointFromChar, joinWith) +import Data.String.CodeUnits (fromCharArray, toCharArray) +import Data.String.Common (toLower) +import Data.Traversable (traverse) + +plain :: Array Char +plain = toCharArray "abcdefghijklmnopqrstuvwxyz0123456789" + +cipher :: Array Char +cipher = toCharArray "zyxwvutsrqponmlkjihgfedcba0123456789" + +decMap :: Map Char Char +decMap = fromFoldable (zip cipher plain) + +encMap :: Map Char Char +encMap = fromFoldable (zip plain cipher) decode :: String -> Maybe String -decode = unsafeThrow "You need to implement `decode`." +decode s = fromCharArray <$> dec (toCharArray s) + where dec = filter ((/=) ' ') + >>> traverse (_ `lookup` decMap) + +chunks :: forall a. Int -> Array a -> Array (Array a) +chunks _ [] = [] +chunks n a = take n a : chunks n (drop n a) encode :: String -> Maybe String -encode = unsafeThrow "You need to implement `encode`." +encode s = group <$> enc (toLower s # toCharArray) + where enc = filter (not (isPunctuation || isSpace) <<< codePointFromChar) + >>> traverse (_ `lookup` encMap) + group = chunks 5 + >>> map fromCharArray + >>> joinWith " " diff --git a/exercises/practice/binary-search/.gitignore b/exercises/practice/binary-search/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/binary-search/.gitignore +++ b/exercises/practice/binary-search/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/binary-search/.meta/config.json b/exercises/practice/binary-search/.meta/config.json index 7a425808..9d7f1409 100644 --- a/exercises/practice/binary-search/.meta/config.json +++ b/exercises/practice/binary-search/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/BinarySearch.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Implement a binary search algorithm.", diff --git a/exercises/practice/binary-search/.solution.dhall b/exercises/practice/binary-search/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/binary-search/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/binary-search/packages.dhall b/exercises/practice/binary-search/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/binary-search/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/binary-search/spago.dhall b/exercises/practice/binary-search/spago.dhall deleted file mode 100644 index baa16b78..00000000 --- a/exercises/practice/binary-search/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "binary-search" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/binary-search/spago.yaml b/exercises/practice/binary-search/spago.yaml new file mode 100644 index 00000000..fbd8c0d5 --- /dev/null +++ b/exercises/practice/binary-search/spago.yaml @@ -0,0 +1,31 @@ +package: + name: binary-search + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/binary-search/src/BinarySearch.purs b/exercises/practice/binary-search/src/BinarySearch.purs index 42991370..327248ff 100644 --- a/exercises/practice/binary-search/src/BinarySearch.purs +++ b/exercises/practice/binary-search/src/BinarySearch.purs @@ -3,8 +3,17 @@ module BinarySearch ) where import Prelude -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Data.Array (length, (!!)) +import Data.Maybe (Maybe(Just, Nothing)) + +find :: Int -> Array Int -> Maybe Int +find i a = go 0 (length a - 1) + where go l h | l > h = Nothing + go l h = + let m = l + (h - l) / 2 + in case a !! m of + Nothing -> Nothing + Just j | j == i -> Just m + | j < i -> go (m + 1) h + | otherwise -> go l (m - 1) -find :: forall a. Ord a => a -> Array a -> Maybe Int -find = unsafeThrow "You need to implement this function." diff --git a/exercises/practice/bob/.gitignore b/exercises/practice/bob/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/bob/.gitignore +++ b/exercises/practice/bob/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/bob/.meta/config.json b/exercises/practice/bob/.meta/config.json index 99ba1e20..1153f7f3 100644 --- a/exercises/practice/bob/.meta/config.json +++ b/exercises/practice/bob/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Bob.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.", diff --git a/exercises/practice/bob/.solution.dhall b/exercises/practice/bob/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/bob/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/bob/packages.dhall b/exercises/practice/bob/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/bob/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/bob/spago.dhall b/exercises/practice/bob/spago.dhall deleted file mode 100644 index 4f8c81c4..00000000 --- a/exercises/practice/bob/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "bob" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/bob/spago.yaml b/exercises/practice/bob/spago.yaml new file mode 100644 index 00000000..d27f2df2 --- /dev/null +++ b/exercises/practice/bob/spago.yaml @@ -0,0 +1,31 @@ +package: + name: bob + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/bob/src/Bob.purs b/exercises/practice/bob/src/Bob.purs index bdd19b1c..c344a3cf 100644 --- a/exercises/practice/bob/src/Bob.purs +++ b/exercises/practice/bob/src/Bob.purs @@ -1,8 +1,42 @@ -module Bob - ( hey - ) where +module Bob where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.Either as Either +import Data.String.Common as String +import Data.String.Regex as Regex +import Data.String.Regex.Flags (noFlags) +import Partial.Unsafe (unsafeCrashWith) hey :: String -> String -hey = unsafeThrow "You need to implement this function." +hey msg = + if isYell msg && isQuestion msg then + "Calm down, I know what I'm doing!" + else if isQuestion msg then + "Sure." + else if isYell msg then + "Whoa, chill out!" + else if isSilence msg then + "Fine. Be that way!" + else + "Whatever." + +isQuestion :: String -> Boolean +isQuestion = + testRegex "\\?$" + +isYell :: String -> Boolean +isYell str = hasLetter str && allUpper str + where + hasLetter = testRegex "[a-zA-Z]" + allUpper s = String.toUpper s == s + +isSilence :: String -> Boolean +isSilence = + testRegex "^[\\s\\t\\n]*$" + +testRegex :: String -> String -> Boolean +testRegex patternStr = + Regex.test + $ Either.either (\_ -> unsafeCrashWith "Invalid regex pattern") identity + $ Regex.regex patternStr noFlags diff --git a/exercises/practice/collatz-conjecture/.gitignore b/exercises/practice/collatz-conjecture/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/collatz-conjecture/.gitignore +++ b/exercises/practice/collatz-conjecture/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/collatz-conjecture/.meta/config.json b/exercises/practice/collatz-conjecture/.meta/config.json index f1d3b3c9..752f18f4 100644 --- a/exercises/practice/collatz-conjecture/.meta/config.json +++ b/exercises/practice/collatz-conjecture/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/CollatzConjecture.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Calculate the number of steps to reach 1 using the Collatz conjecture.", diff --git a/exercises/practice/collatz-conjecture/.solution.dhall b/exercises/practice/collatz-conjecture/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/collatz-conjecture/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/collatz-conjecture/packages.dhall b/exercises/practice/collatz-conjecture/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/collatz-conjecture/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/collatz-conjecture/spago.dhall b/exercises/practice/collatz-conjecture/spago.dhall deleted file mode 100644 index 801d3e12..00000000 --- a/exercises/practice/collatz-conjecture/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "collatz-conjecture" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/collatz-conjecture/spago.yaml b/exercises/practice/collatz-conjecture/spago.yaml new file mode 100644 index 00000000..220cfe96 --- /dev/null +++ b/exercises/practice/collatz-conjecture/spago.yaml @@ -0,0 +1,31 @@ +package: + name: collatz-conjecture + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/collatz-conjecture/src/CollatzConjecture.purs b/exercises/practice/collatz-conjecture/src/CollatzConjecture.purs index 53e416c4..0bbf09c9 100644 --- a/exercises/practice/collatz-conjecture/src/CollatzConjecture.purs +++ b/exercises/practice/collatz-conjecture/src/CollatzConjecture.purs @@ -2,8 +2,14 @@ module CollatzConjecture ( collatz ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Int (even) +import Data.Maybe (Maybe(..)) + +collatzHelper :: Int -> Int -> Int +collatzHelper acc x | x == 1 = acc + | even x = collatzHelper (acc + 1) (x / 2) + | otherwise = collatzHelper (acc + 1) (x * 3 + 1) collatz :: Int -> Maybe Int -collatz = unsafeThrow "You need to implement this function." +collatz x = if x <= 0 then Nothing else Just $ collatzHelper 0 x diff --git a/exercises/practice/crypto-square/.gitignore b/exercises/practice/crypto-square/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/crypto-square/.gitignore +++ b/exercises/practice/crypto-square/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/crypto-square/.meta/config.json b/exercises/practice/crypto-square/.meta/config.json index 3dcdbfaa..43abb0ac 100644 --- a/exercises/practice/crypto-square/.meta/config.json +++ b/exercises/practice/crypto-square/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/CryptoSquare.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Implement the classic method for composing secret messages called a square code.", diff --git a/exercises/practice/crypto-square/.solution.dhall b/exercises/practice/crypto-square/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/crypto-square/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/crypto-square/packages.dhall b/exercises/practice/crypto-square/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/crypto-square/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/crypto-square/spago.dhall b/exercises/practice/crypto-square/spago.dhall deleted file mode 100644 index c67707d1..00000000 --- a/exercises/practice/crypto-square/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "crypto-square" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/crypto-square/spago.yaml b/exercises/practice/crypto-square/spago.yaml new file mode 100644 index 00000000..651800d2 --- /dev/null +++ b/exercises/practice/crypto-square/spago.yaml @@ -0,0 +1,31 @@ +package: + name: crypto-square + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/crypto-square/src/CryptoSquare.purs b/exercises/practice/crypto-square/src/CryptoSquare.purs index decd50b9..84dd58ee 100644 --- a/exercises/practice/crypto-square/src/CryptoSquare.purs +++ b/exercises/practice/crypto-square/src/CryptoSquare.purs @@ -5,16 +5,61 @@ module CryptoSquare , ciphertext ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array as A +import Data.Array (filter, fromFoldable, replicate, toUnfoldable, (:)) +import Data.CodePoint.Unicode (isAlphaNum) +import Data.Foldable (maximum) +import Data.Int (ceil, toNumber) +import Data.List (transpose) +import Data.Maybe (fromMaybe) +import Data.String (codePointFromChar, drop, joinWith, length, take) +import Data.String.Common (toLower) +import Data.String.CodeUnits (fromCharArray, toCharArray) +import Data.Number (sqrt) normalizedPlaintext :: String -> String -normalizedPlaintext = unsafeThrow "You need to implement `normalizedPlaintext`." +normalizedPlaintext + = toCharArray + >>> filter (isAlphaNum <<< codePointFromChar) + >>> fromCharArray + >>> toLower plaintextSegments :: String -> Array String -plaintextSegments = unsafeThrow "You need to implement `plaintextSegments`." +plaintextSegments str = toSquare norm + where norm = normalizedPlaintext str + cols = sqrt (length norm # toNumber) # ceil + toSquare "" = [] + toSquare s = take cols s : toSquare (drop cols s) + +transposeArray :: forall a. Array (Array a) -> Array (Array a) +transposeArray + = toUnfoldable + >>> map toUnfoldable + >>> transpose + >>> map fromFoldable + >>> fromFoldable encoded :: String -> String -encoded = unsafeThrow "You need to implement `encoded`." +encoded = plaintextSegments + >>> map toCharArray + >>> transposeArray + >>> map fromCharArray + >>> joinWith "" + +spaces :: Int -> Array Char +spaces n = replicate n ' ' + +equalPad :: Array (Array Char) -> Array (Array Char) +equalPad arr = map pad arr + where width = fromMaybe 0 (maximum $ map A.length arr) + pad el = el <> spaces (width - A.length el) ciphertext :: String -> String -ciphertext = unsafeThrow "You need to implement `ciphertext`." +ciphertext = plaintextSegments + >>> map toCharArray + >>> transposeArray + >>> equalPad + >>> map fromCharArray + >>> joinWith " " + diff --git a/exercises/practice/diamond/.gitignore b/exercises/practice/diamond/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/diamond/.gitignore +++ b/exercises/practice/diamond/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/diamond/.meta/config.json b/exercises/practice/diamond/.meta/config.json index 02ebd917..2e021f88 100644 --- a/exercises/practice/diamond/.meta/config.json +++ b/exercises/practice/diamond/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/Diamond.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.", diff --git a/exercises/practice/diamond/.solution.dhall b/exercises/practice/diamond/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/diamond/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/diamond/packages.dhall b/exercises/practice/diamond/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/diamond/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/diamond/spago.dhall b/exercises/practice/diamond/spago.dhall deleted file mode 100644 index a6d6cb4e..00000000 --- a/exercises/practice/diamond/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "diamond" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/diamond/spago.yaml b/exercises/practice/diamond/spago.yaml new file mode 100644 index 00000000..58a36c0a --- /dev/null +++ b/exercises/practice/diamond/spago.yaml @@ -0,0 +1,31 @@ +package: + name: diamond + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/diamond/src/Diamond.purs b/exercises/practice/diamond/src/Diamond.purs index 00054174..1b1a2d41 100644 --- a/exercises/practice/diamond/src/Diamond.purs +++ b/exercises/practice/diamond/src/Diamond.purs @@ -1,8 +1,31 @@ module Diamond - ( rows - ) where + (rows + ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.Array (drop, replicate, reverse) +import Data.Char (toCharCode) +import Data.Enum (enumFromTo) +import Data.String (codePointFromChar, singleton) +import Data.String.CodeUnits (fromCharArray) + +spaces :: Int -> String +spaces width = fromCharArray $ replicate width ' ' + +mkRow :: Int -> Char -> String +mkRow width 'A' = spaces width <> "A" <> spaces width +mkRow width ch = spaces side + <> singleton (codePointFromChar ch) + <> spaces mid + <> singleton (codePointFromChar ch) + <> spaces side + where depth = toCharCode ch - toCharCode 'A' + side = width - depth + mid = 2 * depth - 1 rows :: Char -> Array String -rows = unsafeThrow "You need to implement this function." +rows end = map (mkRow width) chars + where width = toCharCode end - toCharCode 'A' + top = enumFromTo 'A' end + chars = top <> (reverse top # drop 1) diff --git a/exercises/practice/difference-of-squares/.gitignore b/exercises/practice/difference-of-squares/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/difference-of-squares/.gitignore +++ b/exercises/practice/difference-of-squares/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/difference-of-squares/.meta/config.json b/exercises/practice/difference-of-squares/.meta/config.json index dd62b0f3..fec58d98 100644 --- a/exercises/practice/difference-of-squares/.meta/config.json +++ b/exercises/practice/difference-of-squares/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/DifferenceOfSquares.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.", diff --git a/exercises/practice/difference-of-squares/.solution.dhall b/exercises/practice/difference-of-squares/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/difference-of-squares/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/difference-of-squares/packages.dhall b/exercises/practice/difference-of-squares/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/difference-of-squares/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/difference-of-squares/spago.dhall b/exercises/practice/difference-of-squares/spago.dhall deleted file mode 100644 index 634b2499..00000000 --- a/exercises/practice/difference-of-squares/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "difference-of-squares" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/difference-of-squares/spago.yaml b/exercises/practice/difference-of-squares/spago.yaml new file mode 100644 index 00000000..42692609 --- /dev/null +++ b/exercises/practice/difference-of-squares/spago.yaml @@ -0,0 +1,31 @@ +package: + name: difference-of-squares + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/difference-of-squares/src/DifferenceOfSquares.purs b/exercises/practice/difference-of-squares/src/DifferenceOfSquares.purs index ff9b8dba..7237fb33 100644 --- a/exercises/practice/difference-of-squares/src/DifferenceOfSquares.purs +++ b/exercises/practice/difference-of-squares/src/DifferenceOfSquares.purs @@ -4,13 +4,16 @@ module DifferenceOfSquares , sumOfSquares ) where -import Effect.Exception.Unsafe (unsafeThrow) - -differenceOfSquares :: Int -> Int -differenceOfSquares = unsafeThrow "You need to implement `differenceOfSquares`." +import Prelude +import Data.Array (range) +import Data.Foldable (sum) +import Data.Int (pow) squareOfSum :: Int -> Int -squareOfSum = unsafeThrow "You need to implement `squareOfSum`." +squareOfSum n = sum (range 1 n) `pow` 2 sumOfSquares :: Int -> Int -sumOfSquares = unsafeThrow "You need to implement `sumOfSquares`." +sumOfSquares n = map (_ `pow` 2) (range 1 n) # sum + +differenceOfSquares :: Int -> Int +differenceOfSquares n = squareOfSum n - sumOfSquares n diff --git a/exercises/practice/etl/.gitignore b/exercises/practice/etl/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/etl/.gitignore +++ b/exercises/practice/etl/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/etl/.meta/config.json b/exercises/practice/etl/.meta/config.json index c3c0e9d2..3f34cef7 100644 --- a/exercises/practice/etl/.meta/config.json +++ b/exercises/practice/etl/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/Etl.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Change the data format for scoring a game to more easily add other languages.", diff --git a/exercises/practice/etl/.solution.dhall b/exercises/practice/etl/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/etl/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/etl/packages.dhall b/exercises/practice/etl/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/etl/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/etl/spago.dhall b/exercises/practice/etl/spago.dhall deleted file mode 100644 index 3c786424..00000000 --- a/exercises/practice/etl/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "etl" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/etl/spago.yaml b/exercises/practice/etl/spago.yaml new file mode 100644 index 00000000..1e04f874 --- /dev/null +++ b/exercises/practice/etl/spago.yaml @@ -0,0 +1,31 @@ +package: + name: etl + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/etl/src/Etl.purs b/exercises/practice/etl/src/Etl.purs index 80951ec6..34607d09 100644 --- a/exercises/practice/etl/src/Etl.purs +++ b/exercises/practice/etl/src/Etl.purs @@ -2,8 +2,22 @@ module Etl ( transform ) where -import Data.Map (Map) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.Array (foldl, head) +import Data.Map (Map, insert, empty, toUnfoldable) +import Data.Maybe (fromMaybe) +import Data.String (codePointFromChar, singleton, toLower) +import Data.String.CodeUnits (toCharArray) +import Data.Tuple (Tuple(..)) transform :: Map Int (Array Char) -> Map Char Int -transform = unsafeThrow "You need to implement this function." +transform = toUnfoldable + >>> expand + >>> foldl add empty + where expand xs = do + Tuple k ys <- xs + y <- ys + pure $ Tuple k y + add m (Tuple k v) = insert (fromMaybe v $ head $ toCharArray $ toLower $ singleton $ codePointFromChar v) k m + diff --git a/exercises/practice/hamming/.gitignore b/exercises/practice/hamming/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/hamming/.gitignore +++ b/exercises/practice/hamming/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/hamming/.meta/config.json b/exercises/practice/hamming/.meta/config.json index adc63187..84603b78 100644 --- a/exercises/practice/hamming/.meta/config.json +++ b/exercises/practice/hamming/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Hamming.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Calculate the Hamming distance between two DNA strands.", diff --git a/exercises/practice/hamming/.solution.dhall b/exercises/practice/hamming/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/hamming/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/hamming/packages.dhall b/exercises/practice/hamming/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/hamming/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/hamming/spago.dhall b/exercises/practice/hamming/spago.dhall deleted file mode 100644 index 85e715c4..00000000 --- a/exercises/practice/hamming/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "hamming" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/hamming/spago.yaml b/exercises/practice/hamming/spago.yaml new file mode 100644 index 00000000..b83653dc --- /dev/null +++ b/exercises/practice/hamming/spago.yaml @@ -0,0 +1,31 @@ +package: + name: hamming + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/hamming/src/Hamming.purs b/exercises/practice/hamming/src/Hamming.purs index c84767b3..5b174074 100644 --- a/exercises/practice/hamming/src/Hamming.purs +++ b/exercises/practice/hamming/src/Hamming.purs @@ -2,8 +2,16 @@ module Hamming ( distance ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Maybe (Maybe(Just, Nothing)) +import Data.String (uncons) distance :: String -> String -> Maybe Int -distance = unsafeThrow "You need to implement this function." +distance dna1 dna2 = + case uncons dna1, uncons dna2 of + Just {head: h1, tail: t1}, Just {head: h2, tail: t2} -> + (if h1 /= h2 then ((+) 1) else identity) <$> distance t1 t2 + Nothing, Nothing -> + Just 0 + _, _ -> + Nothing diff --git a/exercises/practice/hello-world/.gitignore b/exercises/practice/hello-world/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/hello-world/.gitignore +++ b/exercises/practice/hello-world/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/hello-world/.meta/config.json b/exercises/practice/hello-world/.meta/config.json index 624ee030..7055a0de 100644 --- a/exercises/practice/hello-world/.meta/config.json +++ b/exercises/practice/hello-world/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/HelloWorld.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Exercism's classic introductory exercise. Just say \"Hello, World!\".", diff --git a/exercises/practice/hello-world/.solution.dhall b/exercises/practice/hello-world/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/hello-world/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/hello-world/packages.dhall b/exercises/practice/hello-world/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/hello-world/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/hello-world/spago.dhall b/exercises/practice/hello-world/spago.dhall deleted file mode 100644 index 35b8c8b7..00000000 --- a/exercises/practice/hello-world/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "hello-world" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/hello-world/spago.yaml b/exercises/practice/hello-world/spago.yaml new file mode 100644 index 00000000..691d7dea --- /dev/null +++ b/exercises/practice/hello-world/spago.yaml @@ -0,0 +1,31 @@ +package: + name: hello-world + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/hello-world/src/HelloWorld.purs b/exercises/practice/hello-world/src/HelloWorld.purs index 6e662ece..b38ae221 100644 --- a/exercises/practice/hello-world/src/HelloWorld.purs +++ b/exercises/practice/hello-world/src/HelloWorld.purs @@ -1,4 +1,4 @@ module HelloWorld where helloWorld :: String -helloWorld = "Goodbye, Mars!" +helloWorld = "Hello, World!" diff --git a/exercises/practice/isogram/.gitignore b/exercises/practice/isogram/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/isogram/.gitignore +++ b/exercises/practice/isogram/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/isogram/.meta/config.json b/exercises/practice/isogram/.meta/config.json index 36ce694e..617c5036 100644 --- a/exercises/practice/isogram/.meta/config.json +++ b/exercises/practice/isogram/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/Isogram.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Determine if a word or phrase is an isogram.", diff --git a/exercises/practice/isogram/.solution.dhall b/exercises/practice/isogram/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/isogram/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/isogram/packages.dhall b/exercises/practice/isogram/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/isogram/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/isogram/spago.dhall b/exercises/practice/isogram/spago.dhall deleted file mode 100644 index c975be41..00000000 --- a/exercises/practice/isogram/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "isogram" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/isogram/spago.yaml b/exercises/practice/isogram/spago.yaml new file mode 100644 index 00000000..616845e7 --- /dev/null +++ b/exercises/practice/isogram/spago.yaml @@ -0,0 +1,31 @@ +package: + name: isogram + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/isogram/src/Isogram.purs b/exercises/practice/isogram/src/Isogram.purs index ce943703..a3b231d1 100644 --- a/exercises/practice/isogram/src/Isogram.purs +++ b/exercises/practice/isogram/src/Isogram.purs @@ -2,7 +2,22 @@ module Isogram ( isIsogram ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (filter, foldl) +import Data.Map (alter, empty, values) +import Data.Maybe (Maybe(..)) +import Data.String.CodeUnits (toCharArray) +import Data.String.Common (toLower) +import Data.Traversable (all) isIsogram :: String -> Boolean -isIsogram = unsafeThrow "You need to implement this function." +isIsogram = toLower + >>> toCharArray + >>> filter letter + >>> foldl toMap empty + >>> values + >>> all (_ <= 1) + where letter c = 'a' <= c && c <= 'z' + toMap m c = alter addChar c m + addChar Nothing = Just 1 + addChar (Just c) = Just $ c + 1 diff --git a/exercises/practice/knapsack/.gitignore b/exercises/practice/knapsack/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/knapsack/.gitignore +++ b/exercises/practice/knapsack/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/knapsack/.meta/config.json b/exercises/practice/knapsack/.meta/config.json index 85a67373..1200c293 100644 --- a/exercises/practice/knapsack/.meta/config.json +++ b/exercises/practice/knapsack/.meta/config.json @@ -13,8 +13,7 @@ "examples/src/Knapsack.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a knapsack that can only carry a certain weight, determine which items to put in the knapsack in order to maximize their combined value.", diff --git a/exercises/practice/knapsack/.solution.dhall b/exercises/practice/knapsack/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/knapsack/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/knapsack/packages.dhall b/exercises/practice/knapsack/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/knapsack/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/knapsack/spago.dhall b/exercises/practice/knapsack/spago.dhall deleted file mode 100644 index fbffea57..00000000 --- a/exercises/practice/knapsack/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "knapsack" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/knapsack/spago.yaml b/exercises/practice/knapsack/spago.yaml new file mode 100644 index 00000000..f1a446a3 --- /dev/null +++ b/exercises/practice/knapsack/spago.yaml @@ -0,0 +1,31 @@ +package: + name: knapsack + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/knapsack/src/Knapsack.purs b/exercises/practice/knapsack/src/Knapsack.purs index de3956f5..9cc0dda2 100644 --- a/exercises/practice/knapsack/src/Knapsack.purs +++ b/exercises/practice/knapsack/src/Knapsack.purs @@ -4,6 +4,9 @@ module Knapsack ) where import Prelude +import Data.Array as Array +import Data.Array(replicate) +import Data.Maybe (Maybe(..)) import Effect.Exception.Unsafe (unsafeThrow) type Item = @@ -11,5 +14,40 @@ type Item = , weight :: Int } +orThrow :: Maybe Int -> Int +orThrow v = case v of + Nothing -> unsafeThrow "no value" + (Just v) -> v + +findMaxValue :: Item -> Int -> Array Int -> Int +findMaxValue { value: v, weight: w} cap prevRow + | w > cap = orThrow $ Array.index prevRow cap + | otherwise = let + valueWithout = orThrow $ Array.index prevRow cap + valueWith = v + (orThrow $ Array.index prevRow (cap - w)) + in + if valueWith > valueWithout then + valueWith + else + valueWithout + +findMaxValues :: Array Item -> Int -> Array Int -> Int +findMaxValues items index prevRow + | (Array.length items) <= index = orThrow $ Array.last prevRow + | otherwise = let + item = case Array.index items index of + Nothing -> unsafeThrow "no item" + (Just i) -> i + in + let + nextRow = Array.mapWithIndex (\i _v -> findMaxValue item i prevRow) prevRow + in + findMaxValues items (index + 1) nextRow + maximumValue :: Array Item -> Int -> Int -maximumValue _items _capacity = unsafeThrow "You need to implement this function." +maximumValue [] _capacity = 0 +maximumValue items capacity = + let + initial = replicate (capacity + 1) 0 + in + findMaxValues items 0 initial diff --git a/exercises/practice/largest-series-product/.gitignore b/exercises/practice/largest-series-product/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/largest-series-product/.gitignore +++ b/exercises/practice/largest-series-product/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/largest-series-product/.meta/config.json b/exercises/practice/largest-series-product/.meta/config.json index 35808112..9b4d763d 100644 --- a/exercises/practice/largest-series-product/.meta/config.json +++ b/exercises/practice/largest-series-product/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/LargestSeriesProduct.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.", diff --git a/exercises/practice/largest-series-product/.solution.dhall b/exercises/practice/largest-series-product/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/largest-series-product/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/largest-series-product/packages.dhall b/exercises/practice/largest-series-product/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/largest-series-product/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/largest-series-product/spago.dhall b/exercises/practice/largest-series-product/spago.dhall deleted file mode 100644 index d649b56e..00000000 --- a/exercises/practice/largest-series-product/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "largest-series-product" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/largest-series-product/spago.yaml b/exercises/practice/largest-series-product/spago.yaml new file mode 100644 index 00000000..d757f407 --- /dev/null +++ b/exercises/practice/largest-series-product/spago.yaml @@ -0,0 +1,31 @@ +package: + name: largest-series-product + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/largest-series-product/src/LargestSeriesProduct.purs b/exercises/practice/largest-series-product/src/LargestSeriesProduct.purs index d6a32e0d..0892bcd0 100644 --- a/exercises/practice/largest-series-product/src/LargestSeriesProduct.purs +++ b/exercises/practice/largest-series-product/src/LargestSeriesProduct.purs @@ -2,8 +2,32 @@ module LargestSeriesProduct ( largestProduct ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.Array (drop, length, take, (:)) +import Data.Foldable (maximum, product) +import Data.Int (fromString) +import Data.Maybe (Maybe(..)) +import Data.String (codePointFromChar, singleton) +import Data.String.CodeUnits (toCharArray) +import Data.Traversable (sequence) + +spans :: forall a. Int -> Array a -> Array (Array a) +spans n a + | length a < n = [] + | otherwise = take n a : spans n (drop 1 a) + +toIntArray :: String -> Maybe (Array Int) +toIntArray = toCharArray + >>> map (codePointFromChar >>> singleton >>> fromString) + >>> sequence largestProduct :: String -> Int -> Maybe Int -largestProduct = unsafeThrow "You need to implement this function." +largestProduct digits span + | span == 0 = Just 1 + | span < 0 = Nothing + | otherwise = do + is <- toIntArray digits + spans span is + # map product + # maximum diff --git a/exercises/practice/leap/.gitignore b/exercises/practice/leap/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/leap/.gitignore +++ b/exercises/practice/leap/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/leap/.meta/config.json b/exercises/practice/leap/.meta/config.json index 26eac183..46c3199f 100644 --- a/exercises/practice/leap/.meta/config.json +++ b/exercises/practice/leap/.meta/config.json @@ -18,8 +18,7 @@ "examples/src/Leap.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Determine whether a given year is a leap year.", diff --git a/exercises/practice/leap/.solution.dhall b/exercises/practice/leap/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/leap/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/leap/packages.dhall b/exercises/practice/leap/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/leap/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/leap/spago.dhall b/exercises/practice/leap/spago.dhall deleted file mode 100644 index d770bc98..00000000 --- a/exercises/practice/leap/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "leap" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/leap/spago.yaml b/exercises/practice/leap/spago.yaml new file mode 100644 index 00000000..5cdf29b6 --- /dev/null +++ b/exercises/practice/leap/spago.yaml @@ -0,0 +1,31 @@ +package: + name: leap + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/leap/src/Leap.purs b/exercises/practice/leap/src/Leap.purs index 65b66575..ccb87366 100644 --- a/exercises/practice/leap/src/Leap.purs +++ b/exercises/practice/leap/src/Leap.purs @@ -1,8 +1,9 @@ -module Leap - ( isLeapYear - ) where +module Leap where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude isLeapYear :: Int -> Boolean -isLeapYear = unsafeThrow "You need to implement this function." +isLeapYear year = + mod year 4 == 0 && + mod year 100 /= 0 || + mod year 400 == 0 diff --git a/exercises/practice/matching-brackets/.gitignore b/exercises/practice/matching-brackets/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/matching-brackets/.gitignore +++ b/exercises/practice/matching-brackets/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/matching-brackets/.meta/config.json b/exercises/practice/matching-brackets/.meta/config.json index 76617ded..85c37657 100644 --- a/exercises/practice/matching-brackets/.meta/config.json +++ b/exercises/practice/matching-brackets/.meta/config.json @@ -11,8 +11,7 @@ "examples/src/MatchingBrackets.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Make sure the brackets and braces all match.", diff --git a/exercises/practice/matching-brackets/.solution.dhall b/exercises/practice/matching-brackets/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/matching-brackets/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/matching-brackets/packages.dhall b/exercises/practice/matching-brackets/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/matching-brackets/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/matching-brackets/spago.dhall b/exercises/practice/matching-brackets/spago.dhall deleted file mode 100644 index 53e7fc97..00000000 --- a/exercises/practice/matching-brackets/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "matching-brackets" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/matching-brackets/spago.yaml b/exercises/practice/matching-brackets/spago.yaml new file mode 100644 index 00000000..a15b5ec0 --- /dev/null +++ b/exercises/practice/matching-brackets/spago.yaml @@ -0,0 +1,31 @@ +package: + name: matching-brackets + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/matching-brackets/src/MatchingBrackets.purs b/exercises/practice/matching-brackets/src/MatchingBrackets.purs index b509c267..818420c5 100644 --- a/exercises/practice/matching-brackets/src/MatchingBrackets.purs +++ b/exercises/practice/matching-brackets/src/MatchingBrackets.purs @@ -2,7 +2,42 @@ module MatchingBrackets ( isPaired ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (toUnfoldable) +import Data.List (List(..), filter, (:)) +import Data.String.CodeUnits (toCharArray) + +data Bracket = Round | Square | Curly + +derive instance eqBracket :: Eq Bracket + +data Token = Open Bracket + | Close Bracket + | Other + +derive instance eqToken :: Eq Token + +token :: Char -> Token +token c + | c == '(' = Open Round + | c == '[' = Open Square + | c == '{' = Open Curly + | c == ')' = Close Round + | c == ']' = Close Square + | c == '}' = Close Curly +token _ = Other + +walk :: List Token -> List Token -> Boolean +walk Nil Nil = true +walk xs (y@(Open c):ys) = walk (y:xs) ys +walk (Open x:xs) (Close y:ys) + | x == y = walk xs ys + | otherwise = false +walk _ _ = false isPaired :: String -> Boolean -isPaired = unsafeThrow "You need to implement this function." +isPaired = toCharArray + >>> toUnfoldable + >>> map token + >>> filter ((/=) Other) + >>> walk Nil diff --git a/exercises/practice/meetup/.gitignore b/exercises/practice/meetup/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/meetup/.gitignore +++ b/exercises/practice/meetup/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/meetup/.meta/config.json b/exercises/practice/meetup/.meta/config.json index 8805bdd5..2c155b39 100644 --- a/exercises/practice/meetup/.meta/config.json +++ b/exercises/practice/meetup/.meta/config.json @@ -18,8 +18,7 @@ "examples/src/Meetup.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Calculate the date of meetups.", diff --git a/exercises/practice/meetup/.solution.dhall b/exercises/practice/meetup/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/meetup/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/meetup/packages.dhall b/exercises/practice/meetup/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/meetup/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/meetup/spago.dhall b/exercises/practice/meetup/spago.dhall deleted file mode 100644 index 829b660e..00000000 --- a/exercises/practice/meetup/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "meetup" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/meetup/spago.yaml b/exercises/practice/meetup/spago.yaml new file mode 100644 index 00000000..d94b2380 --- /dev/null +++ b/exercises/practice/meetup/spago.yaml @@ -0,0 +1,31 @@ +package: + name: meetup + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/meetup/src/Meetup.purs b/exercises/practice/meetup/src/Meetup.purs index ceb6b338..16078bfb 100644 --- a/exercises/practice/meetup/src/Meetup.purs +++ b/exercises/practice/meetup/src/Meetup.purs @@ -3,17 +3,35 @@ module Meetup , Week(..) ) where -import Data.Date (Date, Month, Weekday, Year) -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (catMaybes, filter, last, (!!)) +import Data.Date (Date, Month, Weekday, Year, day, exactDate, weekday) +import Data.Enum (enumFromTo, toEnum) +import Data.Maybe (Maybe(..)) -data Week - = First - | Second - | Third - | Fourth - | Last - | Teenth +data Week = First + | Second + | Third + | Fourth + | Last + | Teenth + +sat :: Week -> Array Date -> Maybe Date +sat First ds = ds !! 0 +sat Second ds = ds !! 1 +sat Third ds = ds !! 2 +sat Fourth ds = ds !! 3 +sat Last ds = last ds +sat Teenth ds = do + lot <- toEnum 13 + hit <- toEnum 19 + case filter (day >>> between lot hit) ds of + [e] -> pure e + _ -> Nothing meetup :: Year -> Month -> Week -> Weekday -> Maybe Date -meetup = unsafeThrow "You need to implement this function." +meetup y m w wd = enumFromTo bottom top + # map (exactDate y m) + # catMaybes + # filter (\d -> weekday d == wd) + # sat w diff --git a/exercises/practice/pangram/.gitignore b/exercises/practice/pangram/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/pangram/.gitignore +++ b/exercises/practice/pangram/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/pangram/.meta/config.json b/exercises/practice/pangram/.meta/config.json index 725301b4..a61583c7 100644 --- a/exercises/practice/pangram/.meta/config.json +++ b/exercises/practice/pangram/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Pangram.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Determine if a sentence is a pangram.", diff --git a/exercises/practice/pangram/.solution.dhall b/exercises/practice/pangram/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/pangram/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/pangram/packages.dhall b/exercises/practice/pangram/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/pangram/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/pangram/spago.dhall b/exercises/practice/pangram/spago.dhall deleted file mode 100644 index f4b3c2df..00000000 --- a/exercises/practice/pangram/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "pangram" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/pangram/spago.yaml b/exercises/practice/pangram/spago.yaml new file mode 100644 index 00000000..784c9df1 --- /dev/null +++ b/exercises/practice/pangram/spago.yaml @@ -0,0 +1,31 @@ +package: + name: pangram + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/pangram/src/Pangram.purs b/exercises/practice/pangram/src/Pangram.purs index daf62aba..91678c62 100644 --- a/exercises/practice/pangram/src/Pangram.purs +++ b/exercises/practice/pangram/src/Pangram.purs @@ -2,7 +2,25 @@ module Pangram ( isPangram ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Set as Set +import Data.String.Common as String +import Data.String.CodeUnits (toCharArray) isPangram :: String -> Boolean -isPangram = unsafeThrow "You need to implement this function." +isPangram str = + let + letters = + charSet $ String.toLower str + in + Set.subset alphabet letters + + +alphabet :: Set.Set Char +alphabet = + charSet "abcdefghijklmnopqrstuvwxyz" + + +charSet :: String -> Set.Set Char +charSet = + toCharArray >>> Set.fromFoldable diff --git a/exercises/practice/pascals-triangle/.gitignore b/exercises/practice/pascals-triangle/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/pascals-triangle/.gitignore +++ b/exercises/practice/pascals-triangle/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/pascals-triangle/.meta/config.json b/exercises/practice/pascals-triangle/.meta/config.json index 14a429dd..cb57c1e9 100644 --- a/exercises/practice/pascals-triangle/.meta/config.json +++ b/exercises/practice/pascals-triangle/.meta/config.json @@ -18,8 +18,7 @@ "examples/src/PascalsTriangle.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Compute Pascal's triangle up to a given number of rows.", diff --git a/exercises/practice/pascals-triangle/.solution.dhall b/exercises/practice/pascals-triangle/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/pascals-triangle/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/pascals-triangle/packages.dhall b/exercises/practice/pascals-triangle/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/pascals-triangle/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/pascals-triangle/spago.dhall b/exercises/practice/pascals-triangle/spago.dhall deleted file mode 100644 index b2c70eba..00000000 --- a/exercises/practice/pascals-triangle/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "pascals-triangle" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/pascals-triangle/spago.yaml b/exercises/practice/pascals-triangle/spago.yaml new file mode 100644 index 00000000..0b6d7ea7 --- /dev/null +++ b/exercises/practice/pascals-triangle/spago.yaml @@ -0,0 +1,31 @@ +package: + name: pascals-triangle + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/pascals-triangle/src/PascalsTriangle.purs b/exercises/practice/pascals-triangle/src/PascalsTriangle.purs index 16043fe9..8ae97f0e 100644 --- a/exercises/practice/pascals-triangle/src/PascalsTriangle.purs +++ b/exercises/practice/pascals-triangle/src/PascalsTriangle.purs @@ -1,7 +1,24 @@ -module PascalsTriangle (rows) where +module PascalsTriangle + (rows + ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (drop, zip, (:)) +import Data.Maybe (Maybe(..)) +import Data.Tuple (uncurry) -rows :: Maybe Int -> Maybe (Array (Array Int)) -rows = unsafeThrow "You need to implement this function." +type Row = Array Int +type Mat = Array (Array Int) + +rows' :: Row -> Int -> Mat +rows' row 1 = [row] +rows' row n = row : rows' next (n - 1) + where next = pairSum $ [0] <> row <> [0] + pairSum r = map (uncurry (+)) (zip r (drop 1 r)) + +rows :: Maybe Int -> Maybe Mat +rows Nothing = Nothing +rows (Just n) + | n < 0 = Nothing + | n == 0 = Just [] + | otherwise = Just $ rows' [1] n diff --git a/exercises/practice/phone-number/.gitignore b/exercises/practice/phone-number/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/phone-number/.gitignore +++ b/exercises/practice/phone-number/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/phone-number/.meta/config.json b/exercises/practice/phone-number/.meta/config.json index 8826593f..45d960a8 100644 --- a/exercises/practice/phone-number/.meta/config.json +++ b/exercises/practice/phone-number/.meta/config.json @@ -18,8 +18,7 @@ "examples/src/PhoneNumber.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Clean up user-entered phone numbers so that they can be sent SMS messages.", diff --git a/exercises/practice/phone-number/.solution.dhall b/exercises/practice/phone-number/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/phone-number/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/phone-number/packages.dhall b/exercises/practice/phone-number/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/phone-number/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/phone-number/spago.dhall b/exercises/practice/phone-number/spago.dhall deleted file mode 100644 index 584a2cf5..00000000 --- a/exercises/practice/phone-number/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "phone-number" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/phone-number/spago.yaml b/exercises/practice/phone-number/spago.yaml new file mode 100644 index 00000000..59ad5f8a --- /dev/null +++ b/exercises/practice/phone-number/spago.yaml @@ -0,0 +1,31 @@ +package: + name: phone-number + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/phone-number/src/PhoneNumber.purs b/exercises/practice/phone-number/src/PhoneNumber.purs index 0ee33ece..a1b9a5c5 100644 --- a/exercises/practice/phone-number/src/PhoneNumber.purs +++ b/exercises/practice/phone-number/src/PhoneNumber.purs @@ -1,9 +1,30 @@ module PhoneNumber - ( phoneNumber - ) where + ( phoneNumber + ) + where + +import Data.Array (filter, head, tail, length, (!!)) +import Data.CodePoint.Unicode (isDecDigit) +import Data.Maybe (Maybe(..)) +import Data.String (codePointFromChar) +import Data.String.CodeUnits (toCharArray, fromCharArray) +import Prelude (otherwise, ($), (&&), (<), (<<<), (==), (>>=)) + +clean :: String -> Maybe (Array Char) +clean input = go where + go + | len == 10 = Just digits + | len == 11 && head digits == Just '1' = tail digits + | otherwise = Nothing + digits = filter (isDecDigit <<< codePointFromChar) $ toCharArray input + len = length digits + +check:: Array Char -> Maybe String +check input + | input !! 0 < Just '2' = Nothing + | input !! 3 < Just '2' = Nothing + | otherwise = Just $ fromCharArray input -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) phoneNumber :: String -> Maybe String -phoneNumber = unsafeThrow "You need to implement this function." +phoneNumber input = clean input >>= check diff --git a/exercises/practice/raindrops/.gitignore b/exercises/practice/raindrops/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/raindrops/.gitignore +++ b/exercises/practice/raindrops/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/raindrops/.meta/config.json b/exercises/practice/raindrops/.meta/config.json index 15d78754..46bfa119 100644 --- a/exercises/practice/raindrops/.meta/config.json +++ b/exercises/practice/raindrops/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/Raindrops.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.", diff --git a/exercises/practice/raindrops/.solution.dhall b/exercises/practice/raindrops/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/raindrops/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/raindrops/packages.dhall b/exercises/practice/raindrops/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/raindrops/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/raindrops/spago.dhall b/exercises/practice/raindrops/spago.dhall deleted file mode 100644 index dd8a635a..00000000 --- a/exercises/practice/raindrops/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "raindrops" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/raindrops/spago.yaml b/exercises/practice/raindrops/spago.yaml new file mode 100644 index 00000000..38e08233 --- /dev/null +++ b/exercises/practice/raindrops/spago.yaml @@ -0,0 +1,31 @@ +package: + name: raindrops + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/raindrops/src/Raindrops.purs b/exercises/practice/raindrops/src/Raindrops.purs index 4c74225a..bc042871 100644 --- a/exercises/practice/raindrops/src/Raindrops.purs +++ b/exercises/practice/raindrops/src/Raindrops.purs @@ -2,7 +2,22 @@ module Raindrops ( raindrops ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude raindrops :: Int -> String -raindrops = unsafeThrow "You need to implement this function." +raindrops n = + let + fn = toNoise n + noises = + fn 3 "Pling" <> + fn 5 "Plang" <> + fn 7 "Plong" + in + case noises of + "" -> show n + other -> other + +toNoise :: Int -> Int -> String -> String +toNoise n factor noise + | mod n factor == 0 = noise + | otherwise = "" diff --git a/exercises/practice/rna-transcription/.gitignore b/exercises/practice/rna-transcription/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/rna-transcription/.gitignore +++ b/exercises/practice/rna-transcription/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/rna-transcription/.meta/config.json b/exercises/practice/rna-transcription/.meta/config.json index 91ecd188..837112c0 100644 --- a/exercises/practice/rna-transcription/.meta/config.json +++ b/exercises/practice/rna-transcription/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/RnaTranscription.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a DNA strand, return its RNA complement.", diff --git a/exercises/practice/rna-transcription/.solution.dhall b/exercises/practice/rna-transcription/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/rna-transcription/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/rna-transcription/packages.dhall b/exercises/practice/rna-transcription/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/rna-transcription/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/rna-transcription/spago.dhall b/exercises/practice/rna-transcription/spago.dhall deleted file mode 100644 index 3a2d40b0..00000000 --- a/exercises/practice/rna-transcription/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "rna-transcription" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/rna-transcription/spago.yaml b/exercises/practice/rna-transcription/spago.yaml new file mode 100644 index 00000000..5fa4d1bd --- /dev/null +++ b/exercises/practice/rna-transcription/spago.yaml @@ -0,0 +1,31 @@ +package: + name: rna-transcription + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/rna-transcription/src/RnaTranscription.purs b/exercises/practice/rna-transcription/src/RnaTranscription.purs index 6cea8724..e10fe8e9 100644 --- a/exercises/practice/rna-transcription/src/RnaTranscription.purs +++ b/exercises/practice/rna-transcription/src/RnaTranscription.purs @@ -2,8 +2,17 @@ module RnaTranscription ( toRNA ) where -import Data.Maybe (Maybe) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Maybe (Maybe(..)) +import Data.String.CodeUnits (fromCharArray, toCharArray) +import Data.Traversable (traverse) toRNA :: String -> Maybe String -toRNA = unsafeThrow "You need to implement this function." +toRNA dna = fromCharArray <$> traverse complement (toCharArray dna) + +complement :: Char -> Maybe Char +complement 'C' = Just 'G' +complement 'G' = Just 'C' +complement 'A' = Just 'U' +complement 'T' = Just 'A' +complement _ = Nothing diff --git a/exercises/practice/scrabble-score/.gitignore b/exercises/practice/scrabble-score/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/scrabble-score/.gitignore +++ b/exercises/practice/scrabble-score/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/scrabble-score/.meta/config.json b/exercises/practice/scrabble-score/.meta/config.json index 08a668c7..802210ec 100644 --- a/exercises/practice/scrabble-score/.meta/config.json +++ b/exercises/practice/scrabble-score/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/ScrabbleScore.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a word, compute the Scrabble score for that word.", diff --git a/exercises/practice/scrabble-score/.solution.dhall b/exercises/practice/scrabble-score/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/scrabble-score/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/scrabble-score/packages.dhall b/exercises/practice/scrabble-score/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/scrabble-score/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/scrabble-score/spago.dhall b/exercises/practice/scrabble-score/spago.dhall deleted file mode 100644 index e8e2412c..00000000 --- a/exercises/practice/scrabble-score/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "scrabble-score" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/scrabble-score/spago.yaml b/exercises/practice/scrabble-score/spago.yaml new file mode 100644 index 00000000..47583f64 --- /dev/null +++ b/exercises/practice/scrabble-score/spago.yaml @@ -0,0 +1,31 @@ +package: + name: scrabble-score + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/scrabble-score/src/ScrabbleScore.purs b/exercises/practice/scrabble-score/src/ScrabbleScore.purs index 85d85ac9..e38fd478 100644 --- a/exercises/practice/scrabble-score/src/ScrabbleScore.purs +++ b/exercises/practice/scrabble-score/src/ScrabbleScore.purs @@ -2,7 +2,46 @@ module ScrabbleScore ( scoreWord ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.String.CodeUnits (toCharArray) +import Data.String.Common (toLower) +import Data.Foldable (foldl) + scoreWord :: String -> Int -scoreWord = unsafeThrow "You need to implement this function." +scoreWord = + let + addLetterScore acc = + add acc <<< scoreChar + in + foldl addLetterScore 0 <<< toCharArray <<< toLower + + +scoreChar :: Char -> Int +scoreChar 'a' = 1 +scoreChar 'e' = 1 +scoreChar 'i' = 1 +scoreChar 'o' = 1 +scoreChar 'u' = 1 +scoreChar 'l' = 1 +scoreChar 'n' = 1 +scoreChar 'r' = 1 +scoreChar 's' = 1 +scoreChar 't' = 1 +scoreChar 'd' = 2 +scoreChar 'g' = 2 +scoreChar 'b' = 3 +scoreChar 'c' = 3 +scoreChar 'm' = 3 +scoreChar 'p' = 3 +scoreChar 'f' = 4 +scoreChar 'h' = 4 +scoreChar 'v' = 4 +scoreChar 'w' = 4 +scoreChar 'y' = 4 +scoreChar 'k' = 5 +scoreChar 'j' = 8 +scoreChar 'x' = 8 +scoreChar 'q' = 10 +scoreChar 'z' = 10 +scoreChar _ = 0 diff --git a/exercises/practice/spiral-matrix/.gitignore b/exercises/practice/spiral-matrix/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/spiral-matrix/.gitignore +++ b/exercises/practice/spiral-matrix/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/spiral-matrix/.meta/config.json b/exercises/practice/spiral-matrix/.meta/config.json index 437c49ec..3048d2e5 100644 --- a/exercises/practice/spiral-matrix/.meta/config.json +++ b/exercises/practice/spiral-matrix/.meta/config.json @@ -13,8 +13,7 @@ "examples/src/SpiralMatrix.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given the size, return a square matrix of numbers in spiral order.", diff --git a/exercises/practice/spiral-matrix/.solution.dhall b/exercises/practice/spiral-matrix/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/spiral-matrix/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/spiral-matrix/packages.dhall b/exercises/practice/spiral-matrix/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/spiral-matrix/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/spiral-matrix/spago.dhall b/exercises/practice/spiral-matrix/spago.dhall deleted file mode 100644 index 7208fcfa..00000000 --- a/exercises/practice/spiral-matrix/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "spiral-matrix" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/spiral-matrix/spago.yaml b/exercises/practice/spiral-matrix/spago.yaml new file mode 100644 index 00000000..3e4a9214 --- /dev/null +++ b/exercises/practice/spiral-matrix/spago.yaml @@ -0,0 +1,31 @@ +package: + name: spiral-matrix + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/spiral-matrix/src/SpiralMatrix.purs b/exercises/practice/spiral-matrix/src/SpiralMatrix.purs index deb9ea59..1727a646 100644 --- a/exercises/practice/spiral-matrix/src/SpiralMatrix.purs +++ b/exercises/practice/spiral-matrix/src/SpiralMatrix.purs @@ -2,8 +2,29 @@ module Spiral ( spiral ) where -import Data.List (List) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude + +import Data.List ( List(Nil) + , fromFoldable + , take + , drop + , transpose + , reverse + , range + , (:) + ) +import Data.Tuple (Tuple(Tuple)) spiral :: Int -> List (List Int) -spiral = unsafeThrow "You need to implement this function." +spiral n = generateSpiral (range 1 (n * n)) n n + +generateSpiral :: forall a. List a -> Int -> Int -> List (List a) +generateSpiral _ _ 0 = Nil +generateSpiral xs m n = ys : rotateRight (generateSpiral zs n $ m - 1) + where Tuple ys zs = splitAt n xs + +rotateRight :: forall a. List (List a) -> List (List a) +rotateRight = transpose <<< reverse + +splitAt :: forall a. Int -> List a -> Tuple (List a) (List a) +splitAt n xs = Tuple (take n xs) (drop n xs) diff --git a/exercises/practice/sum-of-multiples/.gitignore b/exercises/practice/sum-of-multiples/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/sum-of-multiples/.gitignore +++ b/exercises/practice/sum-of-multiples/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/sum-of-multiples/.meta/config.json b/exercises/practice/sum-of-multiples/.meta/config.json index 15bd81f3..7b63661b 100644 --- a/exercises/practice/sum-of-multiples/.meta/config.json +++ b/exercises/practice/sum-of-multiples/.meta/config.json @@ -17,8 +17,7 @@ "examples/src/SumOfMultiples.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a number, find the sum of all the multiples of particular numbers up to but not including that number.", diff --git a/exercises/practice/sum-of-multiples/.solution.dhall b/exercises/practice/sum-of-multiples/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/sum-of-multiples/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/sum-of-multiples/packages.dhall b/exercises/practice/sum-of-multiples/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/sum-of-multiples/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/sum-of-multiples/spago.dhall b/exercises/practice/sum-of-multiples/spago.dhall deleted file mode 100644 index 80dcbe6f..00000000 --- a/exercises/practice/sum-of-multiples/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "sum-of-multiples" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/sum-of-multiples/spago.yaml b/exercises/practice/sum-of-multiples/spago.yaml new file mode 100644 index 00000000..332ca2d1 --- /dev/null +++ b/exercises/practice/sum-of-multiples/spago.yaml @@ -0,0 +1,31 @@ +package: + name: sum-of-multiples + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/sum-of-multiples/src/SumOfMultiples.purs b/exercises/practice/sum-of-multiples/src/SumOfMultiples.purs index f6441b6b..582e0b80 100644 --- a/exercises/practice/sum-of-multiples/src/SumOfMultiples.purs +++ b/exercises/practice/sum-of-multiples/src/SumOfMultiples.purs @@ -2,7 +2,15 @@ module SumOfMultiples ( sumOfMultiples ) where -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array ((..), filter) +import Data.Foldable (any, sum) sumOfMultiples :: Array Int -> Int -> Int -sumOfMultiples = unsafeThrow "You need to implement this function." +sumOfMultiples factors limit = sum $ filter (any isMultiple factors) rangeToCheck + where + rangeToCheck :: Array Int + rangeToCheck = 1..(limit - 1) + + isMultiple :: Int -> Int -> Boolean + isMultiple factor x = x `mod` factor == 0 diff --git a/exercises/practice/triangle/.gitignore b/exercises/practice/triangle/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/triangle/.gitignore +++ b/exercises/practice/triangle/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/triangle/.meta/config.json b/exercises/practice/triangle/.meta/config.json index 39fc6017..8bf14d03 100644 --- a/exercises/practice/triangle/.meta/config.json +++ b/exercises/practice/triangle/.meta/config.json @@ -18,8 +18,7 @@ "examples/src/Triangle.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Determine if a triangle is equilateral, isosceles, or scalene.", diff --git a/exercises/practice/triangle/.solution.dhall b/exercises/practice/triangle/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/triangle/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/triangle/packages.dhall b/exercises/practice/triangle/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/triangle/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/triangle/spago.dhall b/exercises/practice/triangle/spago.dhall deleted file mode 100644 index a14f544c..00000000 --- a/exercises/practice/triangle/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "triangle" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/triangle/spago.yaml b/exercises/practice/triangle/spago.yaml new file mode 100644 index 00000000..d5693348 --- /dev/null +++ b/exercises/practice/triangle/spago.yaml @@ -0,0 +1,31 @@ +package: + name: triangle + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/triangle/src/Triangle.purs b/exercises/practice/triangle/src/Triangle.purs index 1a9c9f1c..4fe3d988 100644 --- a/exercises/practice/triangle/src/Triangle.purs +++ b/exercises/practice/triangle/src/Triangle.purs @@ -4,8 +4,9 @@ module Triangle ) where import Prelude -import Data.Either (Either) -import Effect.Exception.Unsafe (unsafeThrow) +import Data.Set as Set +import Data.Either (Either(Left, Right)) + data Triangle = Equilateral @@ -15,7 +16,23 @@ data Triangle derive instance eqTriangle :: Eq Triangle instance showTriangle :: Show Triangle where - show = unsafeThrow "You need to implement `show`." + show Equilateral = "Equilateral" + show Isosceles = "Isosceles" + show Scalene = "Scalene" + +type ErrorMsg = String + + +triangleKind :: Int -> Int -> Int -> Either ErrorMsg Triangle +triangleKind x y z + | x <= 0 || y <= 0 || z <= 0 = + Left "Invalid lengths" + + | x + y <= z || x + z <= y || y + z <= x = + Left "Violates inequality" -triangleKind :: Int -> Int -> Int -> Either String Triangle -triangleKind = unsafeThrow "You need to implement `triangleKind`." + | otherwise = + case Set.size $ Set.fromFoldable [x, y, z] of + 1 -> Right Equilateral + 2 -> Right Isosceles + _ -> Right Scalene diff --git a/exercises/practice/word-count/.gitignore b/exercises/practice/word-count/.gitignore index 30efe199..3b5b0d3b 100644 --- a/exercises/practice/word-count/.gitignore +++ b/exercises/practice/word-count/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/exercises/practice/word-count/.meta/config.json b/exercises/practice/word-count/.meta/config.json index 48118be5..29597d60 100644 --- a/exercises/practice/word-count/.meta/config.json +++ b/exercises/practice/word-count/.meta/config.json @@ -19,8 +19,7 @@ "examples/src/WordCount.purs" ], "invalidator": [ - "packages.dhall", - "spago.dhall" + "spago.yaml" ] }, "blurb": "Given a phrase, count the occurrences of each word in that phrase.", diff --git a/exercises/practice/word-count/.solution.dhall b/exercises/practice/word-count/.solution.dhall deleted file mode 100644 index 98f8aa09..00000000 --- a/exercises/practice/word-count/.solution.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let conf = ./spago.dhall - -in conf // { - sources = [ "examples/src/*.purs", "test/**/*.purs" ], -} diff --git a/exercises/practice/word-count/packages.dhall b/exercises/practice/word-count/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/exercises/practice/word-count/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/exercises/practice/word-count/spago.dhall b/exercises/practice/word-count/spago.dhall deleted file mode 100644 index 0aa67270..00000000 --- a/exercises/practice/word-count/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "word-count" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/exercises/practice/word-count/spago.yaml b/exercises/practice/word-count/spago.yaml new file mode 100644 index 00000000..91701752 --- /dev/null +++ b/exercises/practice/word-count/spago.yaml @@ -0,0 +1,31 @@ +package: + name: word-count + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {} diff --git a/exercises/practice/word-count/src/WordCount.purs b/exercises/practice/word-count/src/WordCount.purs index 2cdbe54c..be07ca76 100644 --- a/exercises/practice/word-count/src/WordCount.purs +++ b/exercises/practice/word-count/src/WordCount.purs @@ -2,8 +2,31 @@ module WordCount ( wordCount ) where -import Data.Map (Map) -import Effect.Exception.Unsafe (unsafeThrow) +import Prelude +import Data.Array (foldl) +import Data.Maybe (Maybe(Just), maybe) +import Data.Map (Map, alter, empty) +import Data.String.Common (split, toLower, trim) +import Data.String.Pattern (Pattern(..)) +import Data.String.Regex (replace) +import Data.String.Regex.Flags (global) +import Data.String.Regex.Unsafe (unsafeRegex) + +prepare :: String -> Array String +prepare = whitePunc + >>> remQuot + >>> aggWhite + >>> trim + >>> toLower + >>> split (Pattern " ") + where whitePunc = replace (unsafeRegex "[,\n:!&@$%^&.]" global) " " + remQuot = replace (unsafeRegex "'(\\w+)'" global) "$1" + aggWhite = replace (unsafeRegex " +" global) " " + +freq :: Array String -> Map String Int +freq = foldl mupd empty + where mupd acc word = alter cupd word acc + cupd = maybe 1 ((+) 1) >>> Just wordCount :: String -> Map String Int -wordCount = unsafeThrow "You need to implement this function." +wordCount = prepare >>> freq diff --git a/scripts/ci b/scripts/ci index d5dcc62e..d61de3d2 100755 --- a/scripts/ci +++ b/scripts/ci @@ -2,17 +2,9 @@ # Build and test all example solutions. # -# In an ideal world we would just invoke `spago test` in each exercise -# directory. Each exercise directory is its own project and will pull in the -# needed dependencies and build them. This works fine but we do a lot of -# duplicate work and makes this a lengthy operation. -# -# Here we optimize this process by downloading and pre-compiling a shared set -# of package dependencies. This does introduce some additional constraints: -# -# - We assume the exercise projects are using the same package-set. The -# source-of-truth is in `./template/packages.dhall`. We validate the same -# package set is used with `scripts/ci-check`. +# We optimize by downloading and pre-compiling a shared set of package +# dependencies once. This requires all exercises to use the same package set, +# validated by scripts/ci-check. set -e set -u @@ -22,54 +14,68 @@ base_dir=$(builtin cd "${BASH_SOURCE%/*}/.." || exit; pwd) build_dir=${base_dir}/_build # Pre-compile shared package dependencies -# -# Our first order of business is to pre-compile the dependencies. We can then -# copy the `output` directory to each exercise and spare us from rebuilding the -# dependencies for each exercise. - if [ -z "${CI+x}" ]; then - # When running locally we want start with a clean slate. + # When running locally we want to start with a clean slate. if [ -d "${build_dir}" ]; then echo "Found existing ${build_dir}; removing..." rm -rf "${build_dir}" fi fi -# We use the template exercise project as the source of truth for shared -# dependencies. +# We use the template exercise project as the source of truth for shared deps. cp -R ./template "${build_dir}" pushd "${build_dir}" > /dev/null || exit echo "Fetching and compiling shared dependencies..." -spago --no-psa build --deps-only +npm install +npx spago install popd > /dev/null || exit -# Iterate over each exercise solution and invoke `spago test`. -for config in ./exercises/*/*/.solution.dhall; do - exercise_dir=$(dirname "${config}") +# Iterate over each exercise and test its example/exemplar solution. +for exercise_dir in ./exercises/{concept,practice}/*/; do + exercise_dir="${exercise_dir%/}" + slug=$(basename "${exercise_dir}") + pushd "${exercise_dir}" > /dev/null || exit echo "" echo "Working in: ${exercise_dir}" echo "" + # Link/copy pre-compiled dependencies if [ -h .spago ] || [ -d .spago ]; then - echo "Removing existing spago local cache..." rm -rf .spago fi - ln -s "${build_dir}/.spago" .spago - if [ -e "output" ]; then - echo "Removing existing output..." + if [ -e output ]; then rm -rf output fi - - # We must preserve timestamps else `purs` will invalidate the cache and - # force a rebuild. + # Preserve timestamps so purs doesn't invalidate the cache. cp -R -p "${build_dir}/output" . - # Build and test the solution - spago --no-psa --config .solution.dhall test + # Copy node_modules symlink or directory + if [ ! -e node_modules ]; then + ln -s "${build_dir}/node_modules" node_modules + fi + + # Copy example solution over the student stub for testing. + # Practice exercises: copy examples/src/*.purs over src/*.purs + # Concept exercises: copy .meta/Exemplar.purs over the single src/*.purs file + if [ -d "examples/src" ] && ls examples/src/*.purs 1>/dev/null 2>&1; then + cp examples/src/*.purs src/ + elif [ -f ".meta/Exemplar.purs" ]; then + # Find the single .purs file in src/ and replace it with the exemplar + src_file=$(ls src/*.purs | head -1) + cp ".meta/Exemplar.purs" "${src_file}" + else + echo "ERROR: No example solution found for ${slug}" + exit 1 + fi + + # Build and test. We use --offline since packages are already cached + # in .spago/. We don't use --pure because the lockfile has the template + # package name, not this exercise's name. + npx spago test --offline popd > /dev/null || exit done diff --git a/scripts/ci-check b/scripts/ci-check index e6be64ef..a6c87613 100755 --- a/scripts/ci-check +++ b/scripts/ci-check @@ -1,29 +1,28 @@ #!/usr/bin/env bash -# Ensure all exercises make use of the same package set so that we can build -# and test the exercise example solutions using a shared `output` directory. -# Each exercise `packages.dhall` should match the one from the template -# project. - -# For now we just compare the sha256 digest of the `packages.dhall` file itself -# but this could be switched to compare the output of `spago ls packages` to -# allow for a bit more flexibility in `packages.dhall`. +# Ensure all exercises use the same spago.yaml configuration (except for the +# package name which differs per exercise). We compare the files after stripping +# the name line. set -e set -o pipefail set -u -# We use packages.dhall from the template project as source of truth. -template_digest=$(openssl dgst -sha256 < ./template/packages.dhall) +strip_name() { + sed '/^ name:/d' "$1" +} + +# We use spago.yaml from the template project as the source of truth. +template_digest=$(strip_name ./template/spago.yaml | openssl dgst -sha256) rc=0 -for packages_file in ./exercises/{concept,practice}/*/packages.dhall; do - exercise_digest=$(openssl dgst -sha256 < "${packages_file}") +for yaml_file in ./exercises/{concept,practice}/*/spago.yaml; do + exercise_digest=$(strip_name "${yaml_file}" | openssl dgst -sha256) if [ "$template_digest" != "$exercise_digest" ]; then rc=1 - echo "${packages_file} deviates from template" + echo "${yaml_file} deviates from template" fi done diff --git a/template/.gitignore b/template/.gitignore index 30efe199..3b5b0d3b 100644 --- a/template/.gitignore +++ b/template/.gitignore @@ -1,10 +1,5 @@ -/bower_components/ /node_modules/ -/.pulp-cache/ /output/ -/generated-docs/ -/.psc-package/ -/.psc* -/.purs* -/.psa* -/.spago +/.spago/ +/spago.lock +/.purs-repl diff --git a/template/package-lock.json b/template/package-lock.json index 3b5c5661..3d840078 100644 --- a/template/package-lock.json +++ b/template/package-lock.json @@ -1,7 +1,7 @@ { "name": "excercism-purescript", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -10,140 +10,167 @@ "license": "MIT", "devDependencies": { "purescript": "^0.15.15", - "spago": "^0.21.0" + "spago": "^1.0.3" } }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": "20 || >=22" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": "20 || >=22" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "MIT" + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@nodelib/fs.scandir": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-4.0.1.tgz", + "integrity": "sha512-vAkI715yhnmiPupY+dq+xenu5Tdf2TBQ66jLvBIcCddtz+5Q8LbMKaf9CIJJreez8fQ8fgaY+RaywQx8RJIWpw==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@nodelib/fs.stat": "4.0.0", + "run-parallel": "^1.2.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.18.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@nodelib/fs.stat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-4.0.0.tgz", + "integrity": "sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18.18.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@nodelib/fs.walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-3.0.1.tgz", + "integrity": "sha512-nIh/M6Kh3ZtOmlY00DaUYB4xeeV6F3/ts1l29iwl3/cfyY/OuCfUx+v08zgx8TKPTifXRcjjqVQ4KB2zOYSbyw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@nodelib/fs.scandir": "4.0.1", + "fastq": "^1.15.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18.18.0" } }, "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "license": "ISC", "dependencies": { + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@tootallnate/once": { @@ -161,6 +188,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -169,13 +197,12 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", "humanize-ms": "^1.2.1" }, "engines": { @@ -187,6 +214,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -200,6 +228,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -215,6 +244,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -224,6 +254,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -235,13 +266,32 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -250,35 +300,89 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/buildcheck": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.7.tgz", + "integrity": "sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -288,6 +392,7 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "dev": true, + "license": "ISC", "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -310,6 +415,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -323,13 +429,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -339,6 +447,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -351,6 +460,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -359,13 +469,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -375,6 +487,7 @@ "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -386,7 +499,9 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -400,13 +515,30 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/cpu-features": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.19.0" + }, + "engines": { + "node": ">=10.0.0" + } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -421,6 +553,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -435,15 +568,17 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -454,19 +589,47 @@ } } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/duplexify": { @@ -474,6 +637,7 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -481,43 +645,53 @@ "stream-shift": "^1.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -526,13 +700,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -542,6 +718,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -557,40 +734,66 @@ "node": "^8.12.0 || >=9.7.0" } }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "deprecated": "This module is no longer supported.", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/filesize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -618,16 +821,33 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" } }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -635,29 +855,13 @@ "node": ">= 8" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -668,14 +872,26 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -687,15 +903,17 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -710,22 +928,25 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "5.0.0", @@ -747,6 +968,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -760,6 +982,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -769,6 +992,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -781,13 +1005,15 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -797,6 +1023,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -805,13 +1032,16 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -821,34 +1051,87 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -858,6 +1141,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -865,32 +1149,73 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" }, "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "graceful-fs": "^4.1.6" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" } }, "node_modules/log-symbols": { @@ -898,6 +1223,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.4.2" }, @@ -910,6 +1236,7 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -928,41 +1255,43 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "ssri": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -970,93 +1299,66 @@ } }, "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", - "minipass": "^7.0.3", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", - "ssri": "^10.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/make-fetch-happen/node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" + "unique-filename": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/make-fetch-happen/node_modules/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/make-fetch-happen/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, "license": "ISC", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" } }, "node_modules/make-fetch-happen/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/make-fetch-happen/node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -1068,81 +1370,198 @@ } }, "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10" } }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "node_modules/make-fetch-happen/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { - "minipass": "^7.0.3" + "glob": "^7.1.3" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/make-fetch-happen/node_modules/ssri/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/make-fetch-happen/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/make-fetch-happen/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/make-fetch-happen/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" } }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1152,6 +1571,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1164,15 +1584,20 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } @@ -1182,6 +1607,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1189,57 +1615,30 @@ "node": ">= 8" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^7.0.3", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1247,29 +1646,12 @@ "node": ">= 8" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1277,29 +1659,12 @@ "node": ">=8" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1307,29 +1672,19 @@ "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/yallist": { + "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -1338,29 +1693,19 @@ "node": ">= 8" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -1382,6 +1727,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -1393,7 +1739,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -1407,13 +1755,23 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/nan": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", + "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", + "dev": true, + "license": "MIT", + "optional": true }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1423,6 +1781,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -1433,8 +1792,9 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -1444,6 +1804,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -1454,11 +1815,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1468,6 +1849,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -1490,6 +1872,7 @@ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, + "license": "MIT", "dependencies": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -1499,8 +1882,9 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1510,51 +1894,81 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -1564,10 +1978,11 @@ } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1578,6 +1993,7 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, + "license": "MIT", "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -1589,17 +2005,39 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/purescript": { "version": "0.15.15", "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.15.15.tgz", "integrity": "sha512-4gwLNJa4KRiV+Wl+lyMY4MUFM6cSnIqvz7MvSTdLdvXJN2P9CrABnNbSspaokkNRFd9soWHBFDlYsAtRchqHtg==", "dev": true, "hasInstallScript": true, + "license": "ISC", "dependencies": { "purescript-installer": "^0.3.5" }, @@ -1612,6 +2050,7 @@ "resolved": "https://registry.npmjs.org/purescript-installer/-/purescript-installer-0.3.5.tgz", "integrity": "sha512-w04BBvW4BSQlspLsZ9Bs5vtUBZqvC4bC+FizC5GUp2/rpmYvXJ0CTf79Q3MKo2A8p1ZjqbhCI+SqdTQ30UZUIQ==", "dev": true, + "license": "ISC", "dependencies": { "byline": "^5.0.0", "cacache": "^11.3.2", @@ -1639,2499 +2078,34 @@ "node": ">=12" } }, - "node_modules/purescript-installer/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/purescript-installer/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/@npmcli/move-file/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/purescript-installer/node_modules/@npmcli/move-file/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purescript-installer/node_modules/@npmcli/move-file/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/purescript-installer/node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purescript-installer/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/purescript-installer/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/purescript-installer/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purescript-installer/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purescript-installer/node_modules/make-fetch-happen/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purescript-installer/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/purescript-installer/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/purescript-installer/node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/purescript-installer/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/purescript-installer/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/purescript-installer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/spago": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/spago/-/spago-0.21.0.tgz", - "integrity": "sha512-1qTPaIhrsLCvneSJt1fyq3CpNMu01Xhcn+b09IMbyrpLcptMoGH5uOtyNL9eohTRMzPWBKUs6ksFLGdjJp7yxQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "make-fetch-happen": "^11.0.1", - "tar": "^6.1.11" - }, - "bin": { - "spago": "spago" - } - }, - "node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "dev": true - } - }, - "dependencies": { - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", - "dev": true - }, - "cacache": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cyclist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", - "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "execa": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", - "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^3.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "filesize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", - "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - } - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, - "fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "npm-run-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", - "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - } - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "purescript": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.15.15.tgz", - "integrity": "sha512-4gwLNJa4KRiV+Wl+lyMY4MUFM6cSnIqvz7MvSTdLdvXJN2P9CrABnNbSspaokkNRFd9soWHBFDlYsAtRchqHtg==", - "dev": true, - "requires": { - "purescript-installer": "^0.3.5" - } - }, - "purescript-installer": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/purescript-installer/-/purescript-installer-0.3.5.tgz", - "integrity": "sha512-w04BBvW4BSQlspLsZ9Bs5vtUBZqvC4bC+FizC5GUp2/rpmYvXJ0CTf79Q3MKo2A8p1ZjqbhCI+SqdTQ30UZUIQ==", - "dev": true, - "requires": { - "byline": "^5.0.0", - "cacache": "^11.3.2", - "chalk": "^2.4.2", - "env-paths": "^2.2.0", - "execa": "^2.0.3", - "filesize": "^4.1.2", - "is-plain-obj": "^2.0.0", - "log-symbols": "^3.0.0", - "log-update": "^4.0.0", - "make-fetch-happen": "^10.0.0", - "minimist": "^1.2.0", - "ms": "^2.1.2", - "once": "^1.4.0", - "rimraf": "^2.6.3", - "semver": "^7.3.7", - "tar": "^6.1.11", - "which": "^1.3.1", - "zen-observable": "^0.8.14" - }, - "dependencies": { - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - } - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "requires": { - "unique-slug": "^3.0.0" - } - }, - "unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -4141,269 +2115,565 @@ "util-deprecate": "~1.0.1" } }, - "restore-cursor": { + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "retry": { + "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "run-queue": { + "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "aproba": "^1.1.1" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "optional": true + "license": "MIT" }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "engines": { + "node": ">=10" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "slice-ansi": { + "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "smart-buffer": { + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } }, - "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, - "requires": { - "ip": "^2.0.0", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/spago": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/spago/-/spago-1.0.3.tgz", + "integrity": "sha512-3JR6ExwLwaKIMYdc77e6fKqiBKXNentyVkcfhaQx4tGDnWjfHS2Td+zxJZ/28QaBx8s6RXfgFD1VjbALGtM89g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@nodelib/fs.walk": "^3.0.1", + "env-paths": "^3.0.0", + "fs-extra": "^11.3.0", + "fuse.js": "^7.1.0", + "glob": "^11.0.1", + "markdown-it": "^14.1.0", + "micromatch": "^4.0.8", + "open": "^10.1.0", + "picomatch": "^4.0.2", + "punycode": "^2.3.1", + "readline-sync": "^1.4.10", + "semver": "^7.7.1", + "spdx-expression-parse": "^4.0.0", + "ssh2": "^1.16.0", + "supports-color": "^10.0.0", + "tar": "^7.4.3", + "tmp": "^0.2.3", + "xhr2": "^0.2.1", + "yaml": "^2.7.0" + }, + "bin": { + "spago": "bin/bundle.js" + }, + "engines": { + "node": ">=22.5.0" + } + }, + "node_modules/spago/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/spago/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/spago/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/spago/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/spago/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/spago/node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/spago/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/spago/node_modules/tar": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/spago/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } + "license": "CC0-1.0" }, - "spago": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/spago/-/spago-0.21.0.tgz", - "integrity": "sha512-1qTPaIhrsLCvneSJt1fyq3CpNMu01Xhcn+b09IMbyrpLcptMoGH5uOtyNL9eohTRMzPWBKUs6ksFLGdjJp7yxQ==", + "node_modules/ssh2": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.17.0.tgz", + "integrity": "sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==", "dev": true, - "requires": { - "make-fetch-happen": "^11.0.1", - "tar": "^6.1.11" + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.10", + "nan": "^2.23.0" } }, - "ssri": { + "node_modules/ssri": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "figgy-pudding": "^3.5.1" } }, - "stream-each": { + "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" } }, - "stream-shift": { + "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "string_decoder": { + "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "safe-buffer": "~5.1.0" } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-final-newline": { + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "tar": { + "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", @@ -4411,185 +2681,298 @@ "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "through2": { + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, - "type-fest": { + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "typedarray": { + "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" }, - "unique-filename": { + "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "unique-slug": "^2.0.0" } }, - "unique-slug": { + "node_modules/unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "imurmurhash": "^0.1.4" } }, - "util-deprecate": { + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, - "which": { + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "wrappy": { + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } }, - "xtend": { + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } }, - "y18n": { + "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } }, - "zen-observable": { + "node_modules/zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "dev": true + "dev": true, + "license": "MIT" } } } diff --git a/template/package.json b/template/package.json index dfa57d1f..b2cccc3e 100644 --- a/template/package.json +++ b/template/package.json @@ -5,6 +5,6 @@ "license": "MIT", "devDependencies": { "purescript": "^0.15.15", - "spago": "^0.21.0" + "spago": "^1.0.3" } } diff --git a/template/packages.dhall b/template/packages.dhall deleted file mode 100644 index 3202103e..00000000 --- a/template/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.15-20250421/packages.dhall - sha256:17a9c249023117e2efce524240c2b2adc955dccc686dbeb93f9e0e9797767fbf - -in upstream diff --git a/template/spago.dhall b/template/spago.dhall deleted file mode 100644 index 644ae325..00000000 --- a/template/spago.dhall +++ /dev/null @@ -1,27 +0,0 @@ -{ name = "exercise-template" -, dependencies = - [ "arrays" - , "console" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "foldable-traversable" - , "integers" - , "lists" - , "maybe" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "psci-support" - , "strings" - , "test-unit" - , "tuples" - , "unfoldable" - , "unicode" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/template/spago.yaml b/template/spago.yaml new file mode 100644 index 00000000..39b2fa90 --- /dev/null +++ b/template/spago.yaml @@ -0,0 +1,31 @@ +package: + name: exercise-template + dependencies: + - arrays + - console + - datetime + - effect + - either + - enums + - exceptions + - foldable-traversable + - integers + - lists + - maybe + - numbers + - ordered-collections + - partial + - prelude + - psci-support + - strings + - test-unit + - tuples + - unfoldable + - unicode + test: + main: Test.Main + dependencies: [] +workspace: + packageSet: + registry: 73.0.0 + extraPackages: {}