diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f65890d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,36 @@ +# EditorConfig is awesome: https://editorconfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,py}] +charset = utf-8 + +[.node-version] +trim_trailing_whitespace = false +insert_final_newline = false + +# 4 space indentation +[*.py] +indent_style = space +indent_size = 4 + +# Tab indentation (no size specified) +[Makefile] +indent_style = tab + +# Indentation override for all JS under lib directory +[lib/**.js] +indent_style = space +indent_size = 2 + diff --git a/.github/workflows/hugo-linter.yml b/.github/workflows/hugo-deploy.yml similarity index 74% rename from .github/workflows/hugo-linter.yml rename to .github/workflows/hugo-deploy.yml index 944a7a9..4602d44 100644 --- a/.github/workflows/hugo-linter.yml +++ b/.github/workflows/hugo-deploy.yml @@ -6,27 +6,24 @@ on: - main pull_request: -env: - IMAGE_NAME: hugoweb - jobs: - lint: + build: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 + uses: peaceiris/actions-hugo@v3 with: - hugo-version: '0.120.3' + hugo-version: '0.150.1' extended: true - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: '20' cache: 'npm' diff --git a/.github/workflows/hugo-docker.yml.tmp b/.github/workflows/hugo-docker.yml.tmp deleted file mode 100644 index 98cc27b..0000000 --- a/.github/workflows/hugo-docker.yml.tmp +++ /dev/null @@ -1,60 +0,0 @@ -name: Hugo CI -on: - push: - branches: - - main - pull_request: - -env: - IMAGE_NAME: hugoweb - -jobs: - - docker: - runs-on: ubuntu-latest - # needs: lint - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Read Version file - id: getversion - run: | - echo "IMAGE_VERSION=$(cat VERSION)" >> "$GITHUB_OUTPUT" - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - id: docker_build - uses: docker/build-push-action@v5 - env: - IMAGE_VERSION: ${{ steps.getversion.outputs.IMAGE_VERSION }} - with: - context: . - push: true - build-args: | - NGINX_PORT=5000 - HUGO_ENV=production - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION }} - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} - - - name: Inspect - env: - IMAGE_VERSION: ${{ steps.getversion.outputs.IMAGE_VERSION }} - run: | - docker image inspect ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 42d4ae1..0ed107b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,9 @@ resources/ *.lock node_modules/* -.vscode \ No newline at end of file +.vscode +.DS_Store +Thumbs.db +*.log +*.tmp +*.bak diff --git a/.node-version b/.node-version index 726a201..119f15a 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.11.1 \ No newline at end of file +20.15.1 \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index ada969e..0000000 --- a/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -SHELL:=/bin/bash -eu - -export PATH := $(PATH):/usr/local/bin - -# define standard colors -BLACK := $(shell tput -Txterm setaf 0) -RED := $(shell tput -Txterm setaf 1) -GREEN := $(shell tput -Txterm setaf 2) -YELLOW := $(shell tput -Txterm setaf 3) -LIGHTPURPLE := $(shell tput -Txterm setaf 4) -PURPLE := $(shell tput -Txterm setaf 5) -BLUE := $(shell tput -Txterm setaf 6) -WHITE := $(shell tput -Txterm setaf 7) -RESET := $(shell tput -Txterm sgr0) - -.PHONY: help -default: help - -########################################################################## -## This command manage hugoweb release -## Usage: -## make -## -## Available Commands: -## -## > help : Display help for this command (default) -## -help: - @cat $(MAKEFILE_LIST) | grep ^\#\# | grep -v ^\#\#\# |cut -c 4- - -clear: - @clear -## ---------------------------------------------------------------------- -## > dev : launch Hugo in development mode -dev: clear - @hugo -D server - -## > generate : Generate public code with Hugo -generate: - @hugo --environment production - -## > init : init hugo module theme -init: - @hugo mod init github.com/hugo-toha/toha/v4 - @hugo mod tidy - -## > update & install module -update: - @hugo mod tidy - @hugo mod npm pack - @npm install - @hugo server -w - -## > check requirements -check: - @go version - @hugo version - @node --version - @npm --version diff --git a/Taskfile.yaml b/Taskfile.yaml new file mode 100644 index 0000000..6c3f3c7 --- /dev/null +++ b/Taskfile.yaml @@ -0,0 +1,46 @@ +version: '3' + +tasks: + default: + silent: true + desc: Display all available tasks for this project + cmds: + - task --list-all + + dev: + desc: Launch Hugo in development mode + cmds: + - clear + - hugo -D server + + generate: + desc: Generate public code with Hugo + cmds: + - hugo --minify --printI18nWarnings --environment production + + init: + desc: Initialize hugo module theme + cmds: + - hugo mod init github.com/hugo-toha/toha/v4 + - hugo mod tidy + + update: + desc: Update & install module + cmds: + - hugo mod tidy + - hugo mod npm pack + - npm install + - hugo server -w + + check: + desc: Check requirements + cmds: + - go version + - hugo version + - node --version + - npm --version + + clean: + desc: Clean the go module cache + cmds: + - go clean -modcache diff --git a/assets/images/author/fred-transparent.png b/assets/images/author/fred-transparent.png deleted file mode 100755 index 3ea2fdf..0000000 Binary files a/assets/images/author/fred-transparent.png and /dev/null differ diff --git a/assets/images/author/fred.png b/assets/images/author/fred.png deleted file mode 100755 index 72032a4..0000000 Binary files a/assets/images/author/fred.png and /dev/null differ diff --git a/assets/images/sections/achievements/woman-winner.jpg b/assets/images/sections/achievements/woman-winner.jpg deleted file mode 100644 index a43ea0c..0000000 Binary files a/assets/images/sections/achievements/woman-winner.jpg and /dev/null differ diff --git a/assets/jsconfig.json b/assets/jsconfig.json index 3ddd094..3118527 100644 --- a/assets/jsconfig.json +++ b/assets/jsconfig.json @@ -3,7 +3,7 @@ "baseUrl": ".", "paths": { "*": [ - "../../../../.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/hugo-toha/toha/v4@v4.3.1/assets/*" + "../../../../Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/hugo-toha/toha/v4@v4.10.0/assets/*" ] } } diff --git a/config/_default/config.yaml b/config/_default/config.yaml index 0b89959..8277c3d 100644 --- a/config/_default/config.yaml +++ b/config/_default/config.yaml @@ -1,8 +1,7 @@ -baseURL: https://freuds.me +baseURL: https://freuds.fr languageCode: en-us -title: "Fred's Blog" -# theme: "toha" +title: "My Personal Blog" defaultContentLanguage: en # Use Hugo modules to add theme @@ -102,11 +101,11 @@ params: enable: true # Share post on different social media shareButtons: - facebook: true + facebook: false twitter: true linkedin: true reddit: false - whatsapp: true + whatsapp: false email: true # Enable & configure "Notes" features diff --git a/config/development/config.yaml b/config/development/config.yaml index ea05f85..b2dec2d 100644 --- a/config/development/config.yaml +++ b/config/development/config.yaml @@ -1,7 +1,7 @@ baseURL: http://localhost:1313 languageCode: en-us -title: "Fred's Blog" +title: "Mon blog Perso" # defaultContentLanguage: fr languages: diff --git a/config/production/config.yaml b/config/production/config.yaml index c1b3865..446defd 100644 --- a/config/production/config.yaml +++ b/config/production/config.yaml @@ -1,4 +1,4 @@ -baseURL: https://freuds.me +baseURL: https://freuds.fr params: features: diff --git a/content/notes/aws/ec2/index.md b/content/notes/aws/ec2/index.md index 6bfa2a7..1163146 100644 --- a/content/notes/aws/ec2/index.md +++ b/content/notes/aws/ec2/index.md @@ -11,7 +11,7 @@ menu: {{< note title="List of assigned IPs in subnet">}} EC2: List of assigned IPs in subnet -```shell +```bash aws ec2 describe-network-interfaces --filters "Name=subnet-id,Values=" --query 'NetworkInterfaces[*].PrivateIpAddress' @@ -20,7 +20,7 @@ aws ec2 describe-network-interfaces {{< note title="How to make EC2 user data script run again on startup?">}} How to make EC2 user data script run again on startup? -```shell +```bash rm /var/lib/cloud/instances/*/sem/config_scripts_user rm /var/lib/cloud/instance/sem/config_scripts_user ``` diff --git a/content/notes/databases/Elasticsearch/index.md b/content/notes/databases/Elasticsearch/index.md new file mode 100644 index 0000000..272f84f --- /dev/null +++ b/content/notes/databases/Elasticsearch/index.md @@ -0,0 +1,149 @@ +--- +title: ElasticSearch +weight: 10 +menu: + notes: + name: ElasticSearch + identifier: elasticsearch-notes + parent: databases-notes + weight: 20 +--- + +{{< note title="Get cluster allocation">}} + +```bash +GET _cluster/allocation/explain\?pretty +```` + +{{< /note >}} + +{{< note title="Get shards status">}} + +```bash +GET _cat/shards?v=true&h=index,shard,prirep,state,node,unassigned.reason&s=state +```` + +{{< /note >}} + +{{< note title="Get category health">}} + +```bash +GET _cat/health?v +```` + +{{< /note >}} + +{{< note title="Get indices">}} + +```bash +GET _cat/indices?v +```` + +{{< /note >}} + +{{< note title="ElasticSearch Backup/Restore">}} + +Create or update snapshot repository API +> PUT /_snapshot/my_repository + +```json +{ + "type": "fs", + "settings": { + "location": "my_backup_location" + } +} +``` + +{{< /note >}} + +{{< note title="Verify snapshot repository">}} + +```bash +POST /_snapshot/my_repository/_verify +```` + +{{< /note >}} + +{{< note title="Repository analysis">}} + +```bash +POST /_snapshot/my_repository/_analyze?blob_count=10&max_blob_size=1mb&timeout=120s +``` + +{{< /note >}} + +{{< note title="Get snapshot repository">}} + +```bash +GET /_snapshot/my_repository +``` + +{{< /note >}} + +{{< note title="Delete snapshot repo">}} + +```bash +DELETE /_snapshot/my_repository +``` + +{{< /note >}} + +{{< note title="Cleanup snapshot repo">}} + +```bash +POST /_snapshot/my_repository/_cleanup +``` + +{{< /note >}} + +{{< note title="Clone snapshot">}} +PUT /_snapshot/my_repository/source_snapshot/_clone/target_snapshot + +```json +{ + "indices": "index_a,index_b" +} +``` + +{{< /note >}} + +{{< note title="Create snapshot">}} + +```bash +PUT /_snapshot/my_repository/my_snapshot +``` + +{{< /note >}} + +{{< note title="Get snapshot">}} + +```bash +GET /_snapshot/my_repository/my_snapshot +``` + +{{< /note >}} + +{{< note title="Restore snapshot">}} + +```bash +POST /_snapshot/my_repository/my_snapshot/_restore +``` + +{{< /note >}} + +{{< note title="Delete snapshot">}} + +```bash +DELETE /_snapshot/my_repository/my_snapshot +``` + +{{< /note >}} + +{{< note title="List snapshots for one repo">}} + +```bash +GET /_cat/snapshots/repo1?v=true&s=id +``` + +{{< /note >}} diff --git a/content/notes/databases/LDAP/index.md b/content/notes/databases/LDAP/index.md new file mode 100644 index 0000000..bfbd474 --- /dev/null +++ b/content/notes/databases/LDAP/index.md @@ -0,0 +1,24 @@ +--- +title: LDAP +weight: 10 +menu: + notes: + name: LDAP + identifier: ldap-notes + parent: databases-notes + weight: 20 +--- + +{{< note title="LDAP search commands">}} + +```bash +# use with klist : +ldapsearch -Y GSSAPI -LLL -H ldap://ad1 -b 'dc=corp,dc=domain,dc=net' + +# with password +ldapsearch -LLL -H ldap://ad1 -b "dc=corp,dc=domain,dc=net" -D "cn=administrator,cn=users,dc=corp,dc=domain,dc=net" -w mypassword + +ldapsearch -LLL -H ldap://ad1 -b "dc=corp,dc=domain,dc=net" -D "CN=name,OU=users,OU=domain,DC=corp,dc=domain,dc=net" -w xxxxx +``` + +{{< /note >}} \ No newline at end of file diff --git a/content/notes/databases/MySQL/index.md b/content/notes/databases/MySQL/index.md new file mode 100644 index 0000000..55a6a34 --- /dev/null +++ b/content/notes/databases/MySQL/index.md @@ -0,0 +1,97 @@ +--- +title: MySQL commmands +menu: + notes: + name: MySQL + identifier: mysql-notes + parent: databases-notes + weight: 20 +--- + +{{< note title="MySQLdump with nohup">}} +Connect PostgreSQL database + +```bash +sh -c 'nohup mysqldump -h mydb.hostname -u admin --triggers --routines --events --compress --all-databases --pXXXXX > mydatabase.dmp &' +``` + +{{< /note >}} + +{{< note title="MySQL Size optimisation">}} + +Get table size order + +```sql +SELECT + TABLE_NAME AS `Table`, + ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` +FROM + information_schema.TABLES +WHERE + TABLE_SCHEMA = "bookstore" +ORDER BY + (DATA_LENGTH + INDEX_LENGTH) +DESC; +``` + +View optimized size by tables + +```sql +SELECT table_name, data_free/1024/1024 AS data_free_MB, table_rows FROM information_schema.tables + WHERE engine LIKE 'InnoDB'; + +SELECT table_schema AS "Database", +ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" +FROM information_schema.TABLES +GROUP BY table_schema; +``` + +{{< /note >}} + +{{< note title="SQL useful commmands">}} +For schema: + +```sql +SELECT default_character_set_name FROM information_schema.SCHEMATA +WHERE schema_name = "schemaname"; +``` + +For tables: + +```sql +SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, + information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA +WHERE CCSA.collation_name = T.table_collation + AND T.table_schema = "schemaname" + AND T.table_name = "tablename"; +``` + +For Columns: + +```sql +SELECT character_set_name FROM information_schema.`COLUMNS` +WHERE table_schema = "schemaname" + AND table_name = "tablename" + AND column_name = "columnname"; +``` + +{{< /note >}} + +{{< note title="MySQLdump with nohup">}} + +```bash +sh -c 'nohup mysqldump -h mydb.hostname -u admin --triggers --routines --events --compress --all-databases --pXXXXX > mydatabase.dmp &' +``` + +{{< /note >}} + +{{< note title="MySQL Grant">}} + +```sql +> create user 'root'@'%' IDENTIFIED BY 'password' +> grant all privileges on *.* to 'root'@'%' with grant option; +> flush privileges; +> show grants for current_user; +``` + +{{< /note >}} diff --git a/content/notes/databases/sql-useful-commands/index.md b/content/notes/databases/PosgresQL/index.md similarity index 77% rename from content/notes/databases/sql-useful-commands/index.md rename to content/notes/databases/PosgresQL/index.md index 1bf1b19..7642c58 100644 --- a/content/notes/databases/sql-useful-commands/index.md +++ b/content/notes/databases/PosgresQL/index.md @@ -1,49 +1,23 @@ --- -title: SQL useful commmands +title: pgSQL commmands menu: notes: - name: SQL useful commmands - identifier: sql-useful-commands-notes + name: pgSQL + identifier: pgsql-notes parent: databases-notes weight: 20 --- -{{< note title="SQL useful commmands">}} -SQL useful commmands (schema) - -```sql -SELECT default_character_set_name FROM information_schema.SCHEMATA -WHERE schema_name = "schemaname"; -``` - -For tables: -```sql -SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, - information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA -WHERE CCSA.collation_name = T.table_collation - AND T.table_schema = "schemaname" - AND T.table_name = "tablename"; -``` - -For Columns: -```sql -SELECT character_set_name FROM information_schema.`COLUMNS` -WHERE table_schema = "schemaname" - AND table_name = "tablename" - AND column_name = "columnname"; -``` -{{< /note >}} - - {{< note title="pgSQL useful commmands">}} Connect PostgreSQL database -```shell +```bash psql -d database -U yser -W psql -U user -h host "dbname=db sslmode=require" ``` Switch connection database + ```text \c dbname username \l : list all databases @@ -68,31 +42,44 @@ Switch connection database SELECT version(); ``` -{{< /note >}} - -{{< note title="MySQLdump with nohup">}} -Connect PostgreSQL database - -```shell -sh -c 'nohup mysqldump -h mydb.hostname -u admin --triggers --routines --events --compress --all-databases --pXXXXX > mydatabase.dmp &' -``` {{< /note >}} {{< note title="Create user pgSQL">}} -See ROLES: -```shell + +```bash +# See ROLES psql -U postgres -c "SELECT * FROM pg_roles;" ``` -```shell +```bash postgres=# create database mydb; postgres=# create user myuser with encrypted password 'mypass'; postgres=# grant all privileges on database mydb to myuser; ``` + +{{< /note >}} + +{{< note title="Check Database Size in PostgreSQL">}} + +```bash +postgres=# connect mydb; +postgres=# SELECT pg_size_pretty(pg_database_size('mydb')); +``` + +{{< /note >}} + +{{< note title="Check Tables Size in PostgreSQL">}} + +```bash +postgres=# connect mydb; +mydb=# SELECT pg_size_pretty( pg_total_relation_size('mytbl')); +``` + {{< /note >}} -{{< note title="PostgesQL locks errors">}} +{{< note title="PostgeSQL locks errors">}} + ```sql SELECT nom_base, @@ -164,4 +151,26 @@ WHERE a.pid = b.pid WHERE rang = 1 ORDER BY resultat.heure_debut_requete_bloquee,resultat.heure_debut_requete_bloquante ; ``` -{{< /note >}} \ No newline at end of file + +{{< /note >}} + +{{< note title="Backup/Restore for PostgreSQL">}} + +```bash +# Backup single database +pg_dump my_database > my_database.sql +# Restore single database +psql my_database < my_database.sql + +# Backup All databases +pg_dumpall > alldb.sql +# Restore All databases +psql < alldb.sql + +# Backup Compressed database +pg_dump mydb | gzip > mydb.sql.gz +# Restore compressed database +gunzip -c mydb.sql.gz | psql mydb +``` + +{{< /note >}} diff --git a/content/notes/databases/_index.md b/content/notes/databases/_index.md index 3e7c2c1..cacbfbb 100644 --- a/content/notes/databases/_index.md +++ b/content/notes/databases/_index.md @@ -6,4 +6,4 @@ menu: name: Databases identifier: databases-notes weight: 10 ---- \ No newline at end of file +--- diff --git a/content/notes/databases/export-dump-from-docker/index.md b/content/notes/databases/export-dump-from-docker/index.md deleted file mode 100644 index df49a60..0000000 --- a/content/notes/databases/export-dump-from-docker/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Export Dump from docker image -menu: - notes: - name: Export Dump from docker image - identifier: export-dump-from-docker-notes - parent: databases-notes - weight: 20 ---- - -{{< note title="Export DB dump of a particular database to your machine">}} -Export DB dump of a particular database to your machine -```bash -$ kubectl exec {{podName}} -n {{namespace}} -- mysqldump -u {{dbUser}} -p{{password}} {{DatabaseName}} > .sql - -# Example : -$ kubectl exec mysql-58 -n sql -- mysqldump -u root -proot USERS > dump.sql -``` -{{< /note >}} \ No newline at end of file diff --git a/content/notes/databases/sql-size-optimization/index.md b/content/notes/databases/sql-size-optimization/index.md deleted file mode 100644 index cf2444d..0000000 --- a/content/notes/databases/sql-size-optimization/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: MySQL size optimization -menu: - notes: - name: MySQL size optimization - identifier: mysql-size-optimization-notes - parent: databases-notes - weight: 20 ---- - -{{< note title="MySQL Size optimisation">}} -Get table size order - -```sql -SELECT - TABLE_NAME AS `Table`, - ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` -FROM - information_schema.TABLES -WHERE - TABLE_SCHEMA = "bookstore" -ORDER BY - (DATA_LENGTH + INDEX_LENGTH) -DESC; -``` - -View optimized size by tables -```sql -SELECT table_name, data_free/1024/1024 AS data_free_MB, table_rows FROM information_schema.tables - WHERE engine LIKE 'InnoDB'; - -SELECT table_schema AS "Database", -ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" -FROM information_schema.TABLES -GROUP BY table_schema; -``` -{{< /note >}} \ No newline at end of file diff --git a/content/notes/docker/index.md b/content/notes/docker/index.md index 9c37e72..d4e68c4 100644 --- a/content/notes/docker/index.md +++ b/content/notes/docker/index.md @@ -8,38 +8,44 @@ menu: --- {{< note title="Docker clean up">}} + ```bash docker system prune --all --volumes --force - docker volume rm $(docker volume ls -qf dangling=true) - docker rm -vf $(docker ps -aq) docker rmi -f $(docker images -aq) docker volume prune -f ``` + {{< /note >}} {{< note title="Stop all containers">}} + ```bash docker stop $(docker ps -qa) ``` + {{< /note >}} {{< note title="Remove containers">}} + ```bash docker rm $(docker ps -qa) ``` + {{< /note >}} {{< note title="Remove all images">}} + ```bash docker images -q |xargs docker rmi docker rmi -f $(docker images | grep "" | awk "{print \$3}") ``` -{{< /note >}} +{{< /note >}} {{< note title="Docker network change default">}} + ```bash systemctl stop docker iptables -t nat -F POSTROUTING @@ -47,8 +53,8 @@ ip link set dev docker0 down ip addr del 172.17.0.1/16 dev docker0 # delete old route ip addr add 172.18.32.1/24 dev docker0 # add new one ip link set dev docker0 up - ``` + Permanent options : **/etc/default/docker** DOCKER_OPTS : **/etc/docker/daemon.json** diff --git a/content/notes/kubernetes/Basic/index.md b/content/notes/kubernetes/Basic/index.md new file mode 100644 index 0000000..6b8dd20 --- /dev/null +++ b/content/notes/kubernetes/Basic/index.md @@ -0,0 +1,62 @@ +--- +title: Kube basic cmds +menu: + notes: + name: Basic + identifier: kube-basic-notes + parent: kubernetes-notes + weight: 20 +--- + +{{< note title="kubectl basic commands">}} + +```bash +# connect on Pods +kubectl exec -it --namespace=develop my-pod-id -- /bin/ash +# Show pod network on cluster +kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' +# Show Pods by +kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName= +# sorting pods +kubectl get pods -o wide --sort-by="{.spec.nodeName}" +``` + +{{< /note >}} + +{{< note title="kubernetes volume protected">}} +This happens when persistent volume is protected. You should be able to cross verify this: + +```bash +kubectl describe pvc PVC_NAME | grep Finalizers +Output: +Finalizers: [kubernetes.io/pvc-protection] +``` + +You can fix this by setting finalizers to null using kubectl patch: + +```bash +kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge +``` + +{{< /note >}} + +{{< note title="EKS CPUthrotting">}} + +```bash +docker run --cpus CPUS -it python python -m timeit -s 'import hashlib' -n 10000 -v 'haslib.sha512().update(b"foo")' +``` + +{{< /note >}} + +{{< note title="Export DB dump of a particular database to your machine">}} + +```bash +$ kubectl exec {{podName}} -n {{namespace}} -- mysqldump -u {{dbUser}} -p{{password}} {{DatabaseName}} > .sql + +# Example : +$ kubectl exec mysql-58 -n sql -- mysqldump -u root -proot USERS > dump.sql +``` + + + +{{< /note >}} \ No newline at end of file diff --git a/content/notes/kubernetes/index.md b/content/notes/kubernetes/Containers/index.md similarity index 72% rename from content/notes/kubernetes/index.md rename to content/notes/kubernetes/Containers/index.md index c769e5d..e623694 100644 --- a/content/notes/kubernetes/index.md +++ b/content/notes/kubernetes/Containers/index.md @@ -1,61 +1,52 @@ --- -title: Kubernetes Notes +title: Containers Notes menu: notes: - name: Kubernetes - identifier: kubernetes-notes - weight: 10 + name: Containers + identifier: containers-notes + parent: kubernetes-notes + weight: 20 --- {{< note title="Find all images inside containers">}} -Find all images inside containers + ```bash kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\ tr -s '[[:space:]]' '\n' |\ sort |\ uniq -c ``` + {{< /note >}} {{< note title="Get Limit Requests for all containers">}} -Get Limit Requests for all containers + ```bash kubectl get pod --all-namespaces --sort-by='.metadata.name' -o json | \ jq -r '[.items[] | {pod_name: .metadata.name, containers: .spec.containers[] | \ [ {container_name: .name, memory_requested: .resources.requests.memory, cpu_requested: .resources.requests.cpu} ] }]' | \ jq 'sort_by(.containers[0].cpu_requested)' ``` + {{< /note >}} {{< note title="K8S list all container's image from a cluster">}} -Kube (K8S) list all container's image from a cluster + ```bash kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\ tr -s '[[:space:]]' '\n' |\ sort |\ uniq -c ``` + {{< /note >}} {{< note title="kubectl check secrets certificates">}} -kubectl check secrets certificates + ```bash kubectl get secret CERTNAME -o "jsonpath={.data['tls\.crt']}" | base64 -D | openssl x509 -enddate -noout ``` -{{< /note >}} -{{< note title="kubectl basic commands">}} -kubectl basic commands -```bash -# connect on Pods -kubectl exec -it --namespace=develop my-pod-id -- /bin/ash -# Show pod network on cluster -kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' -# Show Pods by -kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName= -# sorting pods -kubectl get pods -o wide --sort-by="{.spec.nodeName}" -``` {{< /note >}} {{< note title="kubernetes volume protected">}} @@ -81,4 +72,17 @@ kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge ```bash docker run --cpus CPUS -it python python -m timeit -s 'import hashlib' -n 10000 -v 'haslib.sha512().update(b"foo")' ``` + +{{< note title="Export DB dump of a particular database to your machine">}} +Export DB dump of a particular database to your machine + +```bash +$ kubectl exec {{podName}} -n {{namespace}} -- mysqldump -u {{dbUser}} -p{{password}} {{DatabaseName}} > .sql + +# Example : +$ kubectl exec mysql-58 -n sql -- mysqldump -u root -proot USERS > dump.sql +``` + +{{< /note >}} + {{< /note >}} \ No newline at end of file diff --git a/content/notes/kubernetes/_index.md b/content/notes/kubernetes/_index.md new file mode 100644 index 0000000..ea72980 --- /dev/null +++ b/content/notes/kubernetes/_index.md @@ -0,0 +1,9 @@ +--- +title: Kubernetes +weight: 10 +menu: + notes: + name: kubernetes + identifier: kubernetes-notes + weight: 10 +--- \ No newline at end of file diff --git a/content/notes/networking/ip/index.md b/content/notes/networking/ip/index.md index 29d97ff..a70eb52 100644 --- a/content/notes/networking/ip/index.md +++ b/content/notes/networking/ip/index.md @@ -1,47 +1,64 @@ --- -title: Linux IP Command +title: IP Command menu: notes: - name: Linux IP Command + name: IP Command identifier: linux-ip-command-notes parent: networking-notes weight: 20 --- -{{< note title="Syntax of IP linux command">}} -```bash -ip OBJECT COMMAND -ip [options] OBJECT COMMAND -ip OBJECT help -``` +{{< note title="IP linux command">}} Understanding ip command OBJECTS syntax OBJECTS can be any one of the following and may be written in full or abbreviated form: -(image)[/posts/introduction/hero.svg] +- Link: Network device (l) +- address: Protocol (IP or IPv6) address on a device (a) +- addrlabel: Label configuration for protocol address selection (addrl) +- neighbour: ARP or NDISC cache entry (neigh) +- route: Routing table entry (r) +- rule: Rule in routing policy database (ru) +- maddress: Multicast address (maddr) +- mroute: Multicast routing cache entry (mr) +- tunnel: Tunnel over IP (t) +- xfrm: Framework for IPsec protocol (x) +```bash +ip OBJECT COMMAND +ip [options] OBJECT COMMAND +ip OBJECT help ``` You can select between IPv4 and IPv6 using the following syntax: -```shell -### Only show TCP/IP IPv4 ## +```bash +# Only show TCP/IP IPv4 ip -4 a -### Only show TCP/IP IPv6 ### +# Only show TCP/IP IPv6 ip -6 a ``` It is also possible to specify and list particular interface TCP/IP details: -```shell -### Only show eth0 interface ### +```bash +# Only show eth0 interface ip a show eth0 ip a list eth0 ip a show dev eth0 -### Only show running interfaces ### +# Only show running interfaces ip link show up ``` +IP route add network command examples + +```bash +ip route add {NETWORK/MASK} via {GATEWAYIP} +ip route add {NETWORK/MASK} dev {DEVICE} +ip route add default {NETWORK/MASK} dev {DEVICE} +ip route add default {NETWORK/MASK} via {GATEWAYIP} +``` + {{< /note >}} diff --git a/content/notes/networking/ip/ip-command.png b/content/notes/networking/ip/ip-command.png deleted file mode 100644 index ca2b375..0000000 Binary files a/content/notes/networking/ip/ip-command.png and /dev/null differ diff --git a/content/notes/others/PromQL/index.md b/content/notes/others/PromQL/index.md new file mode 100644 index 0000000..7c00479 --- /dev/null +++ b/content/notes/others/PromQL/index.md @@ -0,0 +1,95 @@ +--- +title: PromQL +weight: 10 +menu: + notes: + name: PromQL + identifier: promql-notes + parent: others-notes + weight: 20 +--- + +{{< note title="PromQL Expressions">}} + +List of operations and functions to your PromQL expressions. + +Arithmetic binary operators: + +```txt +\+ (addition) +\- (subtraction) +\* (multiplication) +/ (division) +% (modulo) +^ (power/exponentiation) +``` + +Comparison binary operators: + +```txt +== (equal) +!= (not-equal) +\> (greater-than) +< (less-than) +\>= (greater-or-equal) +<= (less-or-equal) +``` + +Logical/set binary operators: + +```txt +and (intersection) +or (union) +unless (complement) +Aggregation operators: + +sum (calculate sum over dimensions) +min (select minimum over dimensions) +max (select maximum over dimensions) +avg (calculate the average over dimensions) +stddev (calculate population standard deviation over dimensions) +stdvar (calculate population standard variance over dimensions) +count (count number of elements in the vector) +count_values (count number of elements with the same value) +bottomk (smallest k elements by sample value) +topk (largest k elements by sample value) +quantile (calculate ?-quantile (0 ? ? ? 1) over dimensions) +``` + +Get the total memory in bytes: + +```txt +node_memory_MemTotal_bytes +``` + +Get a sum of the total memory in bytes: + +```txt +sum(node_memory_MemTotal_bytes) +``` + +Get a percentage of total memory used: + +```txt +((sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes) - sum(node_memory_Buffers_bytes) - sum(node_memory_Cached_bytes)) / sum(node_memory_MemTotal_bytes)) * 100 +``` + +Using a function with your query: + +```txt +irate(node_cpu_seconds_total{job="node-exporter", mode="idle"}[5m]) +``` + +Using an operation and a function with your query: + +```txt +avg(irate(node_cpu_seconds_total{job="node-exporter", mode="idle"}[5m])) +``` + +Grouping your queries: + +```txt +avg(irate(node_cpu_seconds_total{job="node-exporter", mode="idle"}[5m])) by (instance) +``` + +{{< /note >}} diff --git a/content/notes/others/_index.md b/content/notes/others/_index.md new file mode 100644 index 0000000..1cded5c --- /dev/null +++ b/content/notes/others/_index.md @@ -0,0 +1,8 @@ +--- +title: Others Notes +menu: + notes: + name: Others + identifier: others-notes + weight: 10 +--- diff --git a/content/notes/system/git/index.md b/content/notes/others/git/index.md similarity index 95% rename from content/notes/system/git/index.md rename to content/notes/others/git/index.md index f943592..e200f1e 100644 --- a/content/notes/system/git/index.md +++ b/content/notes/others/git/index.md @@ -5,13 +5,13 @@ menu: notes: name: Git identifier: git-notes - parent: system-notes + parent: others-notes weight: 20 --- {{< note title="Init a git repository">}} -```shell +```bash # Git global setup git config --global user.name "myname" git config --global user.email "myemail@domain.local" @@ -39,15 +39,19 @@ git remote add origin git@gitlab.domain.net:it/diskusagereports.git git push -u origin --all git push -u origin --tags ``` + {{< /note >}} {{< note title="Retrieve just one file from a remote repository">}} -```shell + +```bash git archive --format=tar --remote=git_url HEAD -- | tar xf - ``` + {{< /note >}} {{< note title="Git: make hotfix">}} + ```bash # display branch info git branch -v @@ -71,9 +75,11 @@ git submodule update --init --remote # init submodule with branch git submodule add -b branchname git@bitbucket.org:dir/repo.git path_to_submodule ``` + {{< /note >}} {{< note title="Annuler un commit après un push">}} + ```bash # Annuler un commit, c'est finalement appliquer l'inverse de son diff ! # On peut rediriger le diff des commits à annuler vers la commande patch --reverse :) @@ -87,9 +93,11 @@ git revert HEAD~3..HEAD git revert 444b1cff # Il suffit alors de pousser proprement le commit obtenu sur le serveur. ``` + {{< /note >}} {{< note title="Branch manipulation">}} + ```bash # To list all local branches git branch @@ -131,10 +139,5 @@ git push --delete # To delete all merged remote branches: git branch -r --merged | egrep -v "(^\*|master|dev)" | sed 's/origin\///' | xargs -n 1 git push origin --delete ``` -{{< /note >}} -{{< note title="Init a git repository">}} -{{< /note >}} - -{{< note title="Init a git repository">}} {{< /note >}} \ No newline at end of file diff --git a/content/notes/others/sed/index.md b/content/notes/others/sed/index.md new file mode 100644 index 0000000..f1bce1b --- /dev/null +++ b/content/notes/others/sed/index.md @@ -0,0 +1,57 @@ +--- +title: Sed TIps +weight: 10 +menu: + notes: + name: Sed + identifier: sed-notes + parent: others-notes + weight: 20 +--- + +{{< note title="Sed Expressions">}} + +```bash +# Viewing a Range of Lines of a File +sed -n '5,10p' file.txt + +# Viewing the Entire File Except a Given Range +sed '20,35d' file.txt + +# Viewing Non-Consecutive Lines and Ranges +sed -n -e '5,7p' -e '10,13p' file.txt + +# Replacing Words or Strings in a File +sed 's/version/story/g' file.txt +sed 's/version/story/gi' file.txt # ignore character case + +# Replate multiple blank spaces with a single space +cat file.txt | sed 's/ */ /g' + +# Replacing Words or Strings Inside a Range +sed '30,40 s/version/story/g' file.txt + +# Remove Comments From a File +sed '/^#\|^$\| *#/d' file.txt + +# Replace a Case-insensitive Word in a File +sed 's/[Zz]ip/rar/g' file.txt + +# Finding a Specific Events in a Log File +sed -n '/^Jan 1/ p' /var/log/syslog + +# Inserting Spaces or Blank Lines in a File +sed G file.txt +sed 'G;G' file.txt # 2 blank lines + +# Removing ^M in a File +sed -i 's/\r//' file.txt + +# Create a Backup File with Sed Command +sed -i'.orig' 's/this/there/gi' file.txt + +# Switching Pairs of Words in a File +sed 's/^\(.*\),\(.*\)$/\2\, /g' names.txt +``` + +{{< /note >}} diff --git a/content/notes/others/vim/index.md b/content/notes/others/vim/index.md new file mode 100644 index 0000000..e232b7d --- /dev/null +++ b/content/notes/others/vim/index.md @@ -0,0 +1,41 @@ +--- +title: Vim +weight: 10 +menu: + notes: + name: Vim + identifier: vim-notes + parent: others-notes + weight: 20 +--- + +{{< note title="Vim Tips">}} + +```bash +# Supprimer toutes les lignes vides ou contenant tabulation et/ou espace +:%s/^[\ \t]*\n//g + +# Suppression des lignes commençant par un # +:g/^#/d + +# Suppression des ^M en milieu de ligne et substitution par un vrai retour à la ligne : Taper sur “Enter” pour obtenir le ^M. +:g/^M/s//^M/g + +# Changer de mode DOS / UNIX +:se ff=dos +:se ff=unix + +# You can show control characters (including where a line ends) +:set list +:set nolist (to toggle off) + +# This replaces the beginning of each line with "//": +:%s!^!//! + +# This replaces the beginning of each selected line (use visual mode to select) with "//": +:'<,'>s!^!//! + +# Execute external command +:map ,t :!make + +{{< /note >}} diff --git a/content/notes/system/_index.md b/content/notes/system/_index.md index 2a0b4e3..9567494 100644 --- a/content/notes/system/_index.md +++ b/content/notes/system/_index.md @@ -7,46 +7,3 @@ menu: identifier: system-notes weight: 10 --- - -{{< note title="Linux rename username">}} -The really right way? Say you want to change user 'peter' to 'paul'. - -```shell -groupadd paul usermod -d /home/paul -m -g paul -l paul peter -``` - -{{< /note >}} - -{{< note title="list of file used by PID">}} -list of file used by PID -```shell -lsof -a -p -# ls - l /proc//fd -ps -aeo pid,pcpu,args --sort=-%cpu | head -``` - -{{< /note >}} - -{{< note title="Linux SiG Signal list of file used by PID">}} -list of linux signals -```shell -SIGHUP -HUP gracefully reloads the workers and the application -SIGTERM -TERM "brutally" reloads -SIGINT -INT and SIGQUIT -QUIT kills all the workers immediately -SIGUSR1 -USR1 prints statistics (stdout) -SIGUSR2 -USR2 prints worker status -SIGURG -URG restores a snapshot -SIGTSTP -TSTP pauses, suspends or resumes an instance -SIGWINCH -WINCH wakes up a worker blocked in a syscall -``` - -{{< /note >}} - -{{< note title="Remove all package marked as rc">}} -Now let’s remove all the packages marked as rc. -```shell -$ dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge -``` - -{{< /note >}} - diff --git a/content/notes/system/bash/index.md b/content/notes/system/bash/index.md index 78ff526..837f0e4 100644 --- a/content/notes/system/bash/index.md +++ b/content/notes/system/bash/index.md @@ -32,7 +32,7 @@ echo "hash length is: ${#hash[*]}" # length of array using * as the index - $1 to $n : $1 is the first arguments, $2 is second argument till $n n’th arguments. From 10’th argument, you must need to inclose them in braces like ${10}, ${11} and so on - $0 : The name of script itself -- $$ : Process id of current shell +- $$ : Process id of current bash - $* : Values of all the arguments. All agruments are double quoted - $# : Total number of arguments passed to script - $@ : Values of all the arguments diff --git a/content/notes/system/linux/index.md b/content/notes/system/linux/index.md index dab5b86..9e8f768 100644 --- a/content/notes/system/linux/index.md +++ b/content/notes/system/linux/index.md @@ -12,14 +12,15 @@ menu: {{< note title="Linux rename username">}} The really right way? Say you want to change user 'peter' to 'paul'. -```shell +```bash groupadd paul usermod -d /home/paul -m -g paul -l paul peter ``` {{< /note >}} {{< note title="list of file used by PID">}} -```shell + +```bash lsof -a -p # ls - l /proc//fd ps -aeo pid,pcpu,args --sort=-%cpu | head @@ -28,7 +29,8 @@ ps -aeo pid,pcpu,args --sort=-%cpu | head {{< /note >}} {{< note title="Linux SiG Signal list of file used by PID">}} -```shell + +```bash SIGHUP -HUP gracefully reloads the workers and the application SIGTERM -TERM "brutally" reloads SIGINT -INT and SIGQUIT -QUIT kills all the workers immediately @@ -42,8 +44,9 @@ SIGWINCH -WINCH wakes up a worker blocked in a syscall {{< /note >}} {{< note title="Remove all package marked as rc">}} -```shell -$ dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge + +```bash +dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge ``` {{< /note >}} @@ -55,6 +58,7 @@ Execute `process` once for each file ```bash find . -name '*.txt' -exec process {} \; ``` + If you have time, read through the rest to see several different ways and the problems with most of them. The full answer: @@ -145,10 +149,12 @@ printf "### Terminated at : %s\n" $(date +"%X") exit 0 ``` + {{< /note >}} {{< note title="Benchmark script with strace">}} Now let’s remove all the packages marked as rc. + ```bash strace -o trace -c -Ttt ./scrip # where: @@ -156,28 +162,41 @@ strace -o trace -c -Ttt ./scrip # -Ttt will tell you time in microseconds at time of each system call running. # -o will save output in file "trace". ``` + {{< /note >}} {{< note title="Compile script and crypt">}} [Lien github](https://github.com/neurobin/shc) + ```bash apt install shc # to see content of encrypt script : -env SHELLOPTS=verbose ./test +env bashOPTS=verbose ./test ``` + {{< /note >}} {{< note title="mount RAID LVM disk recovery">}} -* boot sous linux live -* install mdadm : apt install mdadm -* RAID1 + LVM -* mdadm --detail --scan -* cat /proc/mdstat -* mdadm -A -R /dev/md/8 /dev/sdc8 -* mdadm -S /dev/vg/lv -* lvdisplay -* mount /dev/lg/lv + +1. Boot avec un USB linux live +2. Install mdadm + +```bash +apt install mdadm +``` + +Build : RAID1 + LVM + +```bash +mdadm --detail --scan +cat /proc/mdstat +mdadm -A -R /dev/md/8 /dev/sdc8 +mdadm -S /dev/vg/lv +lvdisplay +mount /dev/lg/lv +``` + {{< /note >}} {{< note title="HTTP load generator">}} @@ -185,40 +204,140 @@ env SHELLOPTS=verbose ./test {{< /note >}} {{< note title="Make ISO command line linux">}} + ```bash # Install package apt install genisoimage mkisofs -allow-limited-size -l -J -r -iso-level 3 -o # this command will generate bigger then 4GB ISO ``` + {{< /note >}} {{< note title="Disabled SWAP on linux">}} + ```bash -> swapon --show +swapon --show NAME TYPE SIZE USED PRIO /dev/sda2 partition 4G 0B -1 -> fallocate -l 1G /swapfile -> dd if=/dev/zero of=/swapfile bs=1024 count=1048576 -> chmod 600 /swapfile -> mkswap /swapfile -> swapon /swapfile -> nano /etc/fstab +fallocate -l 1G /swapfile +dd if=/dev/zero of=/swapfile bs=1024 count=1048576 +chmod 600 /swapfile +mkswap /swapfile +swapon /swapfile +nano /etc/fstab # Edit : /etc/fstab /swapfile swap swap defaults 0 0 -> swapon --show +swapon --show NAME TYPE SIZE USED PRIO /swapfile file 1024M 507.4M -1 ``` + {{< /note >}} {{< note title="Get detailled disk partitions">}} + ```bash -> findmnt -Do TARGET,SOURCE,USED,SIZE,OPTIONS +findmnt -Do TARGET,SOURCE,USED,SIZE,OPTIONS ``` -{{< /note >}} \ No newline at end of file + +{{< /note >}} + +{{< note title="Umask Linux">}} + +```bash +Umask Created Files Created Directories +_______________________________________________ +000 666 (rw_rw_rw_) 777 (rwxrwxrwx) +002 664 (rw_rw_r__) 775 (rwxrwxr_x) +022 644 (rw_r__r__) 755 (rwxr_xr_x) +027 640 (rw_r_____) 750 (rwxr_x___) +077 600 (rw_______) 700 (rwx______) +277 400 (r________) 500 (r_x______) +``` + +{{< /note >}} + +{{< note title="NFS Server show clients">}} + +```bash +# show clients connected +netstat | grep :nfs +# list all connected clients +showmount -a +# Discover/view NFS shares from the client +showmount -e +# list active share on client +showmount -e +# Exports all file system paths specified in the /etc/exports file +exportfs -r +``` + +{{< /note >}} + +{{< note title="Disable Bell on linux">}} + +```bash +rmmod pcspkr +# Blacklisting the pcspkr module will prevent udev from loading it at boot: +echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf +``` + +{{< /note >}} + +{{< note title="Delete full disk on Linux">}} + +```bash +shred --verbose --random-source=/dev/urandom -n1 /dev/sda1 +``` + +{{< /note >}} + +{{< note title="Compiling a linux Kernel">}} + +```bash +# Download the source code and pgp signature from https://www.kernel.org/ to a directory of your choice +mkdir -p /usr/src/ +cd /usr/src/ +wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.16.tar.xz +wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.16.tar.sign + +# Uncompress the source code and check the signature +xz -d -v linux-5.1.16.tar.xz +gpg --verify linux-5.1.16.tar.sign + +# Untar the source code and cd into the directory +tar xf linux-5.1.16.tar +cd linux-5.1.16/ + +# Copy over actual kernel config file and run 'make menuconfig' +cp -v /boot/config-$(uname -r) .config + +# Install necessary packages +apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc + +make menuconfig +# Go to Cryptographic API --> Certificates for signature checking --> +# and leave 'File name or PKCS#11 URI of module signing key' and +# 'Additional X.509 keys for default system keyring' blank if not +# already blank +# Compile using make or make -j n where n is the number of processors to use +make # or +make -j 4 + +# Install kernel modules +make modules_install + +# Optimize and compile new kernel +cd /lib/modules/5.1.16/ +find . -name *.ko -exec strip --strip-unneeded {} + +cd /usr/src/linux-5.1.16/ +make install +``` + +{{< /note >}} diff --git a/content/notes/system/macosx/index.md b/content/notes/system/macosx/index.md index 9af492c..0bc1894 100644 --- a/content/notes/system/macosx/index.md +++ b/content/notes/system/macosx/index.md @@ -10,7 +10,7 @@ menu: --- {{< note title="Flush DNS MacOSx">}} -```shell +```bash sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder ``` @@ -18,7 +18,7 @@ sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder {{< note title="Openlens block update">}} [Openlens github](https://github.com/MuhammedKalkan/OpenLens) -```shell +```bash sudo chmod -R 000 ~/Library/Application\ Support/Caches/open-lens-updater/pending ``` diff --git a/content/notes/system/openssl/index.md b/content/notes/system/openssl/index.md index bc2f146..679a3a9 100644 --- a/content/notes/system/openssl/index.md +++ b/content/notes/system/openssl/index.md @@ -1,14 +1,15 @@ --- -title: Openssl Command +title: OpenSSL Command menu: notes: - name: Openssl Command + name: OpenSSL identifier: openssl-notes parent: system-notes weight: 20 --- {{< note title="Add CA on Centos/Debian/Ubuntu">}} + ```bash # Centos/RedHat 1. Copy the .crt file to /etc/pki/ca-trust/source/anchors on your CentOS machine @@ -23,9 +24,11 @@ $ update-ca-certificates # Get certificate from URL openssl s_client -showcerts -verify 5 -connect stackexchange.com:443 < /dev/null ``` + {{< /note >}} {{< note title="Extract SSL from url">}} + ```bash openssl s_client -showcerts -verify 5 -connect wikipedia.org:443 < /dev/null | awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/{ if(/BEGIN CERTIFICATE/){a++}; out="cert"a".pem"; print >out}' @@ -36,41 +39,45 @@ for cert in *.pem; do echo "${newname}"; mv "${cert}" "${newname}" done ``` + {{< /note >}} {{< note title="KEY and CRT validation">}} + ```bash openssl pkey -in privateKey.key -pubout -outform pem | sha256sum openssl x509 -in certificate.crt -pubkey -noout -outform pem | sha256sum openssl req -in CSR.csr -pubkey -noout -outform pem | sha256sum ``` -{{< /note >}} +{{< /note >}} {{< note title="Tomcat SSL and Keystore">}} + ```bash -#merge all certificats in one file PEM (CRT) +# merge all certificats in one file PEM (CRT) cat wildcard.domain.com.crt geotrust_CA_intermediate.crt geotrust_CA.crt > all.crt -# convert CRT into P12 (PKCS12) -openssl pkcs12 -export -inkey wildcard.domain.com.key -in all.crt -name spotfire.domain.com -out spotfire.domain.com.p12 +# convert CRT into P12 (PKCS12) +openssl pkcs12 -export -inkey wildcard.domain.com.key -in all.crt -name sub.domain.com -out sub.domain.com.p12 # import/export from P12 -keytool -importkeystore -srckeystore spotfire.domain.com.p12 -srcstoretype pkcs12 -destkeystore spotfire.domain.com.jks +keytool -importkeystore -srckeystore sub.domain.com.p12 -srcstoretype pkcs12 -destkeystore sub.domain.com.jks -keytool -importkeystore -srckeystore spotfire.domain.com.jks -destkeystore spotfire.domain.com.jks -deststoretype pkcs12 +keytool -importkeystore -srckeystore sub.domain.com.jks -destkeystore sub.domain.com.jks -deststoretype pkcs12 -## keytool -importkeystore -srckeystore spotfire.domain.com.p12 -srcstoretype pkcs12 -destkeystore spotfire.domain.com.jks -> Import du fichier de clés spotfire.domain.com.p12 vers spotfire.domain.com.jks... +## keytool -importkeystore -srckeystore sub.domain.com.p12 -srcstoretype pkcs12 -destkeystore sub.domain.com.jks +> Import du fichier de clés sub.domain.com.p12 vers sub.domain.com.jks... Entrez le mot de passe du fichier de clés de destination : Ressaisissez le nouveau mot de passe : Entrez le mot de passe du fichier de clés source : -L'entrée de l'alias spotfire.domain.com a été importée. +L'entrée de l'alias sub.domain.com a été importée. Commande d'import exécutée : 1 entrées importées, échec ou annulation de 0 entrées Warning: Le fichier de clés JKS utilise un format propriétaire. Il est recommandé de migrer vers PKCS12, qui est un format standard de l'industrie en utilisant : -"keytool -importkeystore -srckeystore spotfire.domain.com.jks -destkeystore spotfire.domain.com.jks -deststoretype pkcs12". +"keytool -importkeystore -srckeystore sub.domain.com.jks -destkeystore sub.domain.com.jks -deststoretype pkcs12". ``` -{{< /note >}} \ No newline at end of file + +{{< /note >}} diff --git a/content/notes/system/windows/index.md b/content/notes/system/windows/index.md new file mode 100644 index 0000000..fbe8a27 --- /dev/null +++ b/content/notes/system/windows/index.md @@ -0,0 +1,67 @@ +--- +title: Windows Tips +menu: + notes: + name: Windows + identifier: windows-notes + parent: system-notes + weight: 20 +--- + +{{< note title="Environments Variables">}} + +```txt +Variable Type Description +%ALLUSERSPROFILE%. Local Returns the location of the All Users Profile. +%APPDATA% Local Returns the location where applications store data by default. +%CD% Local Returns the current directory string. +%CMDCMDLINE% Local Returns the exact command line used to start the current Cmd.exe. +%CMDEXTVERSION% System Returns the version number of the current Command Processor Extensions. +%COMPUTERNAME% System Returns the name of the computer. +%COMSPEC% System Returns the exact path to the command shell executable. +%DATE% System Returns the current date. Uses the same format as the date /t command. Generated by Cmd.exe. +%ERRORLEVEL% System Returns the error code of the most recently used command. A non zero value usually indicates an error. +%HOMEDRIVE% System Returns which local workstation drive letter is connected to the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. +%HOMEPATH% System Returns the full path of the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. +%HOMESHARE% System Returns the network path to the user's shared home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. +%LOGONSEVER%. Local Returns the name of the domain controller that validated the current logon session. +%NUMBER_OF_PROCESSORS% System Specifies the number of processors installed on the computer. +%OS% System Returns the operating system name. Windows 2000 displays the operating system as Windows_NT. +%PATH% System Specifies the search path for executable files. +%PATHEXT% System Returns a list of the file extensions that the operating system considers to be executable. +%PROCESSOR_ARCHITECTURE% System Returns the chip architecture of the processor. Values: x86, IA64. +%PROCESSOR_IDENTFIER% System Returns a description of the processor. +%PROCESSOR_LEVEL% System Returns the model number of the processor installed on the computer. +%PROCESSOR_REVISION% System Returns the revision number of the processor. +%PROMPT% Local Returns the command prompt settings for the current interpreter. Generated by Cmd.exe. +%RANDOM% System Returns a random decimal number between 0 and 32767. Generated by Cmd.exe. +%SYSTEMDRIVE% System Returns the drive containing the Windows XP root directory (that is, the system root). +%SYSTEMROOT% System Returns the location of the Windows XP root directory. +%TEMP% and %TMP% System and User Returns the default temporary directories that are used by applications available to users who are currently logged on. Some applications require TEMP and others require TMP. +%TIME% System Returns the current time. Uses the same format as the time /t command. Generated by Cmd.exe. +%USERDOMAIN% Local Returns the name of the domain that contains the user's account. +%USERNAME% Local Returns the name of the user who is currently logged on. +%USERPROFILE%. Local Returns the location of the profile for the current user. +%WINDIR% System Returns the location of the operating system directory. +``` + +{{< /note >}} + +{{< note title="Reset Windows Update parameters">}} + +```powershell +# Ouvrir un invité de commande en tant qu’administrateur +# Entrer chaque ligne, l’une après l’autre +net stop wuauserv +net stop cryptSvc +net stop bits +net stop msiserver +ren C:\Windows\SoftwareDistribution SoftwareDistribution.old +ren C:\Windows\System32\catroot2 catroot2.old +net start wuauserv +net start cryptSvc +net start bits +net start msiserver +``` + +{{< /note >}} diff --git a/content/posts/bash-variables-substitutions/bash.png b/content/posts/bash-variables-substitutions/bash.png new file mode 100644 index 0000000..329a8b4 Binary files /dev/null and b/content/posts/bash-variables-substitutions/bash.png differ diff --git a/content/posts/bash-variables-substitutions/index.md b/content/posts/bash-variables-substitutions/index.md new file mode 100644 index 0000000..cc09a75 --- /dev/null +++ b/content/posts/bash-variables-substitutions/index.md @@ -0,0 +1,36 @@ +--- +title: "Bash Variables Substitutions" +date: 2020-06-08T08:06:25+06:00 +hero: bash.png +description: Introduction to Sample Post +menu: + sidebar: + name: Bash Variables + identifier: bash-variable-substitutions + weight: 10 +--- + +This table summarizes Bash parameter expansions, providing a quick reference for manipulating shell variables. It covers operations like default value assignment, substring extraction, pattern removal, case conversion, and string length calculation. + +| Parameter Expansion | Description | +| :------------------------------ | :----------------------------------------------- | +| `${parameter:-defaultValue}` | Get default shell variables value | +| `${parameter:=defaultValue}` | Set default shell variables value | +| `${parameter:?"Error Message"}` | Display an error message if parameter is not set | +| `${#var}` | Find the length of the string | +| `${var%pattern}` | Remove from shortest rear (end) pattern | +| `${var%%pattern}` | Remove from longest rear (end) pattern | +| `${var:num1:num2}` | Substring | +| `${var#pattern}` | Remove from shortest front pattern | +| `${var##pattern}` | Remove from longest front pattern | +| `${var/pattern/string}` | Find and replace (only replace first occurrence) | +| `${var//pattern/string}` | Find and replace all occurrences | +| `${!prefix*}` | Expands to the names of variables whose names begin with prefix. | +| `${var,}` | Convert first character to lowercase. | +| `${var,pattern}` | Convert first character to lowercase. | +| `${var,,}` | Convert all characters to lowercase. | +| `${var,,pattern}` | Convert all characters to lowercase. | +| `${var^}` | Convert first character to uppercase. | +| `${var^pattern}` | Convert first character to uppercase. | +| `${var^^}` | Convert all character to uppercase. | +| `${var^^pattern}` | Convert all character to uppercase. | diff --git a/content/posts/introduction/hero.svg b/content/posts/introduction/hero.svg deleted file mode 100644 index 1ae90c5..0000000 --- a/content/posts/introduction/hero.svg +++ /dev/null @@ -1 +0,0 @@ -hire \ No newline at end of file diff --git a/content/posts/introduction/index.md b/content/posts/introduction/index.md deleted file mode 100644 index 4afc426..0000000 --- a/content/posts/introduction/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Introduction" -date: 2020-06-08T08:06:25+06:00 -hero: /posts/introduction/hero.svg -description: Introduction to Sample Post -menu: - sidebar: - name: Introduction - identifier: introduction - weight: 10 ---- - -Greeting! This is an introduction post. This post tests the followings: - -- Hero image is in the same directory as the post. -- This post should be at top of the sidebar. -- Post author should be the same as specified in `author.yaml` file. - - -{{< mermaid >}} -erDiagram - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses -{{< /mermaid >}} \ No newline at end of file diff --git a/data/en/author.yaml b/data/en/author.yaml index eb817e9..6b66af1 100644 --- a/data/en/author.yaml +++ b/data/en/author.yaml @@ -1,20 +1,20 @@ # some information about you -name: "Frédéric Willien" +name: "Fred" nickname: "" # greeting message before your name. it will default to "Hi! I am" if not provided greeting: "" image: "images/author/fred-avatar.png" # give your some contact information. they will be used in the footer contactInfo: - email: "fred@freuds.me" + email: "fred@freuds.fr" github: freuds #phone: "" # some summary about what you do summary: - - DevOps Cloud + - DevOps & Automisation - SysAdmin Linux - Kubernetes & Containers - Supervision & Monitoring - Architecte Cloud - - Stack Migration & Optimisation + - Stack Migration diff --git a/data/en/sections/about.yaml b/data/en/sections/about.yaml index 3620a1b..641a4eb 100644 --- a/data/en/sections/about.yaml +++ b/data/en/sections/about.yaml @@ -44,7 +44,7 @@ badges: - type: certification name: HashiCorp Certified Terraform Associate url: "https://www.credly.com/badges/8dbbdcf4-d8be-415f-9410-c6b25c0c71ab/public_url" - badge: "https://images.credly.com/size/220x220/images/99289602-861e-4929-8277-773e63a2fa6f/image.png" + badge: "https://images.credly.com/size/680x680/images/cd038261-9d1c-4792-bc62-3a3b5bda175c/blob" # your soft skills # give the percentage between 50 to 100 with 5 intervals. diff --git a/data/fr/author.yaml b/data/fr/author.yaml index e6fe7fc..f3c4c5e 100644 --- a/data/fr/author.yaml +++ b/data/fr/author.yaml @@ -1,18 +1,18 @@ # some information about you -name: "Frédéric Willien" +name: "Fred" nickname: "" # greeting message before your name. it will default to "Hi! I am" if not provided greeting: "" image: "images/author/fred-avatar.png" # give your some contact information. they will be used in the footer contactInfo: - email: "fred@freuds.me" + email: "fred@freuds.fr" github: freuds #phone: "" # some summary about what you do summary: - - DevOps Cloud + - DevOps & Automisation - SysAdmin Linux - Kubernetes & Containers - Supervision & Monitoring diff --git a/data/fr/sections/about.yaml b/data/fr/sections/about.yaml index d868f93..84ffa28 100644 --- a/data/fr/sections/about.yaml +++ b/data/fr/sections/about.yaml @@ -44,7 +44,7 @@ badges: - type: certification name: HashiCorp Certified Terraform Associate url: "https://www.credly.com/badges/8dbbdcf4-d8be-415f-9410-c6b25c0c71ab/public_url" - badge: "https://images.credly.com/size/220x220/images/99289602-861e-4929-8277-773e63a2fa6f/image.png" + badge: "https://images.credly.com/size/680x680/images/cd038261-9d1c-4792-bc62-3a3b5bda175c/blob" # your soft skills # give the percentage between 50 to 100 with 5 intervals. diff --git a/go.mod b/go.mod index 9d7e430..cd3fbd9 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,5 @@ module github.com/freuds/hugoweb -go 1.19 +go 1.25.1 -require github.com/hugo-toha/toha/v4 v4.3.1 // indirect - -// replace( -// github.com/hugo-toha/toha/v4 => ../toha -// ) +require github.com/hugo-toha/toha/v4 v4.10.0 // indirect diff --git a/go.sum b/go.sum index 6edc21d..377572e 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,2 @@ -github.com/hugo-toha/toha/v4 v4.3.1 h1:tva4Qqtz+iP9TeGEJnBGNHUFdDFjNx+Gt1OvqblCX/I= -github.com/hugo-toha/toha/v4 v4.3.1/go.mod h1:p/K34lqlqmhzfPd4cx66od7sjlROBqhMxG30mJz+aKQ= +github.com/hugo-toha/toha/v4 v4.10.0 h1:rVHzO3dRcFKqea1ZgBAtgpTyKyjKhJoYjn2Yj5ZF1cM= +github.com/hugo-toha/toha/v4 v4.10.0/go.mod h1:TU/6WXz7fJ3BSrTS+K/sVctzUMF4pB4ZwKWzFBFra8g= diff --git a/layouts/partials/sections/about.html b/layouts/partials/sections/about.html new file mode 100644 index 0000000..d438ff5 --- /dev/null +++ b/layouts/partials/sections/about.html @@ -0,0 +1,67 @@ +{{ $sectionID := replace (lower .section.name) " " "-" }} +{{ if .section.id }} + {{ $sectionID = .section.id }} +{{ end }} + +{{ $author:= site.Data.author }} +{{ if (index site.Data site.Language.Lang).author }} + {{ $author = (index site.Data site.Language.Lang).author }} +{{ end }} + +
+
+ + + {{ if or (.softSkills) (.badges) }}
{{ else }}
{{ end }} + {{ if .designation }} +
+ {{ .designation }} + {{ if .company }} + {{ i18n "at"}} {{ .company.name }} + {{ end }} +
+ {{ end }} +

+ {{ .summary | markdownify }} +

+
+ +
+ {{ if .resume }} + + {{ end }} + {{ range .resourceLinks }} + + {{ end }} +
+ +
+
+ {{ range .badges }} + {{ partial "misc/badge.html" . }} + {{ end }} + + + {{ range .softSkills }} + {{ partial "misc/soft-skills.html" . }} + {{ end }} +
+
+
+
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4483e19..bedf1c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.1.0", "devDependencies": { "@fontsource/mulish": "4.5.13", - "@fortawesome/fontawesome-free": "^6.2.0", - "autoprefixer": "^10.4.13", - "bootstrap": "^4.6.2", + "@fortawesome/fontawesome-free": "^6.6.0", + "autoprefixer": "^10.4.20", + "bootstrap": "^5.3.3", "eslint": "^8.31.0", "eslint-config-prettier": "^8.6.0", "eslint-config-standard": "^17.0.0", @@ -21,19 +21,19 @@ "eslint-plugin-promise": "^6.1.1", "feather-icons": "^4.29.1", "filterizr": "^2.2.4", - "flag-icon-css": "^4.1.7", + "flag-icons": "^7.2.3", "fuse.js": "^6.6.2", "highlight.js": "^11.6.0", "imagesloaded": "^5.0.0", "include-media": "^1.4.10", "ityped": "^1.0.3", - "katex": "^0.16.3", + "katex": "^0.16.11", "mark.js": "^8.11.1", - "mermaid": "^9.2.1", + "mermaid": "^11.9.0", "plyr": "^3.7.2", "popper.js": "^1.16.1", - "postcss": "^8.4.21", - "postcss-cli": "^8.3.1" + "postcss": "^8.4.41", + "postcss-cli": "^11.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -45,11 +45,80 @@ "node": ">=0.10.0" } }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@braintree/sanitize-url": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", - "dev": true + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -114,11 +183,11 @@ "dev": true }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz", - "integrity": "sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", "dev": true, - "hasInstallScript": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", "engines": { "node": ">=6" } @@ -156,6 +225,53 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@antfu/utils": "^9.2.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.1", + "globals": "^15.15.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.1.1", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", + "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -191,12 +307,323 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -204,10 +631,11 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -318,15 +746,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.filter": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", @@ -423,19 +842,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -451,12 +861,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -490,6 +901,16 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz", + "integrity": "sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -503,9 +924,9 @@ } }, "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", "dev": true, "funding": [ { @@ -517,37 +938,39 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" + "@popperjs/core": "^2.11.8" } }, "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.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "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.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", + "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", "dev": true, "funding": [ { @@ -563,11 +986,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001741", + "electron-to-chromium": "^1.5.218", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -629,9 +1054,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001597", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", - "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", + "version": "1.0.30001743", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz", + "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==", "dev": true, "funding": [ { @@ -646,7 +1071,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -664,6 +1090,34 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -707,14 +1161,18 @@ "dev": true }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/color-convert": { @@ -750,6 +1208,13 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/core-js": { "version": "3.36.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", @@ -771,10 +1236,11 @@ } }, "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", @@ -791,14 +1257,11 @@ "dev": true }, "node_modules/cytoscape": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz", - "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "dev": true, - "dependencies": { - "heap": "^0.2.6", - "lodash": "^4.17.21" - }, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -847,6 +1310,7 @@ "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "dev": true, + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -888,6 +1352,7 @@ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dev": true, + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -900,6 +1365,7 @@ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -909,6 +1375,7 @@ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "dev": true, + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -925,6 +1392,7 @@ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "dev": true, + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -937,6 +1405,7 @@ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -946,6 +1415,7 @@ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "dev": true, + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -958,6 +1428,7 @@ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "dev": true, + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -970,6 +1441,7 @@ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -979,6 +1451,7 @@ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dev": true, + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -992,6 +1465,7 @@ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dev": true, + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -1017,6 +1491,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -1026,6 +1501,7 @@ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -1035,6 +1511,7 @@ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dev": true, + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -1047,6 +1524,7 @@ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -1061,6 +1539,7 @@ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1070,6 +1549,7 @@ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "dev": true, + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -1082,6 +1562,7 @@ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1091,6 +1572,7 @@ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dev": true, + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -1103,6 +1585,7 @@ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1112,6 +1595,7 @@ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1121,6 +1605,7 @@ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1130,15 +1615,62 @@ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, + "license": "ISC" + }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -1155,6 +1687,7 @@ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "dev": true, + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -1168,6 +1701,7 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1177,6 +1711,7 @@ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dev": true, + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -1189,6 +1724,7 @@ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dev": true, + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -1201,6 +1737,7 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dev": true, + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -1213,6 +1750,7 @@ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -1222,6 +1760,7 @@ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "dev": true, + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -1241,6 +1780,7 @@ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "dev": true, + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -1253,28 +1793,31 @@ } }, "node_modules/dagre-d3-es": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz", - "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", + "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", "dev": true, + "license": "MIT", "dependencies": { - "d3": "^7.8.2", + "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true + "version": "1.11.18", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "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" @@ -1330,29 +1873,19 @@ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", "dev": true, + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } }, "node_modules/dependency-graph": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", - "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/doctrine": { @@ -1368,28 +1901,28 @@ } }, "node_modules/dompurify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==", - "dev": true + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/electron-to-chromium": { - "version": "1.4.708", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", - "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", - "dev": true - }, - "node_modules/elkjs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", - "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==", - "dev": true + "version": "1.5.222", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.222.tgz", + "integrity": "sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==", + "dev": true, + "license": "ISC" }, "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/es-abstract": { "version": "1.22.5", @@ -1514,10 +2047,11 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1952,40 +2486,19 @@ "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==", "dev": true }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2036,10 +2549,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "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" }, @@ -2088,12 +2602,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flag-icon-css": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-4.1.7.tgz", - "integrity": "sha512-AFjSU+fv98XbU0vnTQ32vcLj89UEr1MhwDFcooQv14qWJCjg9fGZzfh9BVyDhAhIOZW/pGmJmq38RqpgPaeybQ==", - "deprecated": "The project has been renamed to flag-icons", - "dev": true + "node_modules/flag-icons": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/flag-icons/-/flag-icons-7.5.0.tgz", + "integrity": "sha512-kd+MNXviFIg5hijH766tt+3x76ele1AXlo4zDdCxIvqWZhKt4T83bOtxUOOMlTx/EcFdUMH5yvQgYlFh1EqqFg==", + "dev": true, + "license": "MIT" }, "node_modules/flat-cache": { "version": "3.2.0", @@ -2138,18 +2652,18 @@ } }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", "dev": true, + "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.14" } }, "node_modules/fs.realpath": { @@ -2222,6 +2736,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -2245,18 +2760,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", @@ -2336,26 +2839,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -2372,7 +2855,8 @@ "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/graphemer": { "version": "1.4.0", @@ -2380,6 +2864,13 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "dev": true, + "license": "MIT" + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -2461,12 +2952,6 @@ "node": ">= 0.4" } }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true - }, "node_modules/highlight.js": { "version": "11.9.0", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", @@ -2481,6 +2966,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -2572,6 +3058,7 @@ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -2685,6 +3172,7 @@ "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" } @@ -2718,6 +3206,7 @@ "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" } @@ -2852,13 +3341,6 @@ "integrity": "sha512-46Qnh3qs+6EJlWDHmvWRW6qiz5jFy2mkh9UvtTvQmLJMZIjKrdz4du68le7hLX4tAWCp6QTKiq/OuLv6huHxZg==", "dev": true }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "dev": true, - "peer": true - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2902,10 +3384,11 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "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" }, @@ -2914,14 +3397,15 @@ } }, "node_modules/katex": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", - "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", "dev": true, "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -2944,6 +3428,30 @@ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", "dev": true }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", @@ -2964,12 +3472,16 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/loadjs": { @@ -2978,6 +3490,24 @@ "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==", "dev": true }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2993,17 +3523,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -3029,50 +3554,46 @@ "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/marked": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.3.0.tgz", + "integrity": "sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==", "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, "engines": { - "node": ">= 8" + "node": ">= 20" } }, "node_modules/mermaid": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz", - "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.0.tgz", + "integrity": "sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==", "dev": true, + "license": "MIT", "dependencies": { - "@braintree/sanitize-url": "^6.0.0", - "cytoscape": "^3.23.0", + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^0.6.2", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.1.0", - "d3": "^7.4.0", - "dagre-d3-es": "7.0.9", - "dayjs": "^1.11.7", - "dompurify": "2.4.3", - "elkjs": "^0.8.2", - "khroma": "^2.0.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.11", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", - "web-worker": "^1.2.0" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "uuid": "^11.1.0" } }, "node_modules/minimatch": { @@ -3096,16 +3617,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "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 + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -3113,6 +3667,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -3127,16 +3682,11 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", - "dev": true + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", + "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -3295,6 +3845,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3307,6 +3864,13 @@ "node": ">=6" } }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "dev": true, + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3340,20 +3904,19 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -3376,6 +3939,18 @@ "node": ">=0.10.0" } }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, "node_modules/plyr": { "version": "3.7.8", "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.7.8.tgz", @@ -3389,6 +3964,24 @@ "url-polyfill": "^1.1.12" } }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "dev": true, + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", @@ -3410,9 +4003,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -3428,69 +4021,81 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-cli": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-8.3.1.tgz", - "integrity": "sha512-leHXsQRq89S3JC9zw/tKyiVV2jAhnfQe0J8VI4eQQbUjwIe0XxVqLrR+7UsahF1s9wi4GlqP6SJ8ydf44cgF2Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", "chokidar": "^3.3.0", - "dependency-graph": "^0.9.0", - "fs-extra": "^9.0.0", - "get-stdin": "^8.0.0", - "globby": "^11.0.0", - "postcss-load-config": "^3.0.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "slash": "^3.0.0", - "yargs": "^16.0.0" + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" }, "bin": { - "postcss": "bin/postcss" + "postcss": "index.js" }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" }, "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 18" }, "peerDependencies": { + "jiti": ">=1.21.0", "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" + "tsx": "^4.8.1" }, "peerDependenciesMeta": { + "jiti": { + "optional": true + }, "postcss": { "optional": true }, - "ts-node": { + "tsx": { "optional": true } } @@ -3554,6 +4159,23 @@ "node": ">=6" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -3636,6 +4258,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3695,7 +4318,21 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "dev": true + "dev": true, + "license": "Unlicense" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } }, "node_modules/run-parallel": { "version": "1.2.0", @@ -3724,7 +4361,8 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/safe-array-concat": { "version": "1.1.2", @@ -3765,7 +4403,8 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { "version": "6.3.1", @@ -3848,19 +4487,24 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3870,6 +4514,7 @@ "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", @@ -3958,10 +4603,11 @@ } }, "node_modules/stylis": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", - "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==", - "dev": true + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "dev": true, + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", @@ -3999,11 +4645,67 @@ "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", "dev": true }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/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/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" }, @@ -4129,6 +4831,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -4149,14 +4858,15 @@ "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/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -4172,9 +4882,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -4199,23 +4910,73 @@ "dev": true }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, - "node_modules/web-worker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", - "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", - "dev": true + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true, + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", @@ -4272,6 +5033,7 @@ "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", @@ -4295,6 +5057,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -4306,39 +5069,45 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14.6" } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index 4ed436c..f670495 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "eslint-plugin-promise": "github.com/hugo-toha/toha/v4", "feather-icons": "github.com/hugo-toha/toha/v4", "filterizr": "github.com/hugo-toha/toha/v4", - "flag-icon-css": "github.com/hugo-toha/toha/v4", + "flag-icons": "github.com/hugo-toha/toha/v4", "fuse.js": "github.com/hugo-toha/toha/v4", "highlight.js": "github.com/hugo-toha/toha/v4", "imagesloaded": "github.com/hugo-toha/toha/v4", @@ -33,9 +33,9 @@ "dependencies": {}, "devDependencies": { "@fontsource/mulish": "4.5.13", - "@fortawesome/fontawesome-free": "^6.2.0", - "autoprefixer": "^10.4.13", - "bootstrap": "^4.6.2", + "@fortawesome/fontawesome-free": "^6.6.0", + "autoprefixer": "^10.4.20", + "bootstrap": "^5.3.3", "eslint": "^8.31.0", "eslint-config-prettier": "^8.6.0", "eslint-config-standard": "^17.0.0", @@ -45,19 +45,19 @@ "eslint-plugin-promise": "^6.1.1", "feather-icons": "^4.29.1", "filterizr": "^2.2.4", - "flag-icon-css": "^4.1.7", + "flag-icons": "^7.2.3", "fuse.js": "^6.6.2", "highlight.js": "^11.6.0", "imagesloaded": "^5.0.0", "include-media": "^1.4.10", "ityped": "^1.0.3", - "katex": "^0.16.3", + "katex": "^0.16.11", "mark.js": "^8.11.1", - "mermaid": "^9.2.1", + "mermaid": "^11.9.0", "plyr": "^3.7.2", "popper.js": "^1.16.1", - "postcss": "^8.4.21", - "postcss-cli": "^8.3.1" + "postcss": "^8.4.41", + "postcss-cli": "^11.0.0" }, "name": "hugo-toha.github.io", "version": "0.1.0" diff --git a/render-build.sh b/render-build.sh new file mode 100644 index 0000000..39089cd --- /dev/null +++ b/render-build.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# In your Render dashboard, set the HUGO_VERSION env var for your static site. You'll get the same experience as, say, Netlify. + +TAR_NAME="hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz" + +hugo version # Output the OLD version +if [[ ! -f $XDG_CACHE_HOME/hugo ]]; then + echo "...Downloading HUGO" + mkdir -p ~/tmp + wget -P ~/tmp "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/${TAR_NAME}" + cd ~/tmp || exit + echo "...Extracting HUGO" + tar -xzvf "${TAR_NAME}" + echo "...Moving HUGO" + mv hugo "$XDG_CACHE_HOME/hugo" + # Make sure we return to where we were. + cd "$HOME/project/src" || exit +else + echo "...Using HUGO from build cache" +fi + +"$XDG_CACHE_HOME/hugo" version + +# Render sets IS_PULL_REQUEST to true for PR previews. +if [ "${IS_PULL_REQUEST:-}" = "true" ]; then + "$XDG_CACHE_HOME/hugo" --gc -e preview +else + "$XDG_CACHE_HOME/hugo" --gc --minify --environment production +fi diff --git a/static/files/resume.pdf b/static/files/resume.pdf deleted file mode 100644 index 9cb3ecf..0000000 Binary files a/static/files/resume.pdf and /dev/null differ