Page MenuHomeSealhub

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/.gitignore b/.gitignore
index ba2d7b1..ad78f62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,47 +1,48 @@
.DS_Store
.idea
*.log
tmp/
*~
*.sublime-workspace
npm-debug.log
node_modules
docker_node_modules
db
coverage.html
\#*
.\#*
.npm
.config
.ash_history
cosealious
node_modules*
.cache
lib
@types
.xunit
coverage
.nyc_output
/dist/
public/dist
/log.html
/hint-report/
.vscode
.env
.npm_cache/
.mozilla/
cache/*
!cache/images/.keepme
!cache/smartcrop/.keepme
uploaded-images/*
!uploaded-images/keepme
uploaded_files
/dist-instrumented/
# these are autogenerated, no need to version control them
src/back/jdd-components/components.ts
src/back/routes/routes.ts
src/back/routes/urls.ts
src/includes.css
.eslint-result.json
-lint-report.json
\ No newline at end of file
+lint-report.json
+/src/style-entrypoints/
diff --git a/README.md b/README.md
index c3c6dc6..e59b51d 100644
--- a/README.md
+++ b/README.md
@@ -1,43 +1,55 @@
# Sealious app
## Requirements
- docker
- docker-compose (version 2.6 or up)
- tmux
## Installation
```
npm install
```
## Running the app in development mode
```
npx sealgen make-env
-docker-compose up -d db mailcatcher
+docker-compose up -d db mailcatcher meilisearch
npm run watch
```
## Adding a component
```
npx sealgen add-component
```
And then go to `localhost:8080/components` to preview your custom component
## Testing
First time after installing the project run this command to download firefox
```
npx playwright install firefox
```
And then
```
npm run test
```
+
+The tests don't run webhint by default - it's delegated to run on Jenkins.
+
+If Jenkins complains about a webhint issue and you'd like to reproduce that on your local machine, run
+
+```
+npm run full-test
+```
+
+The tests run in pararell mode by default, to speed things up. Because of that, the
+`.only` syntax doesn't work. To run tests without pararell mode, run `npm run full-test
+--serial` - you can then use the `.only` syntax to run a particular test
diff --git a/docker-compose.yml b/docker-compose.yml
index 87e88ce..0712ee2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,21 +1,21 @@
version: "3.2"
services:
db:
image: mongo:4.4-bionic
ports:
- - "127.0.0.1:${PORT:-2074}7:27017"
+ - "127.0.0.1:${PORT:-2076}7:27017"
test:
image: sealious-app:latest
build:
context: ./docker
dockerfile: ./test.Dockerfile
volumes:
- ./:/opt/sealious-app/
- /tmp:/tmp
- ./docker_node_modules:/opt/sealious-app/node_modules
user: ${USER_ID:-1000}:${GROUP_ID:-1000}
mailcatcher:
image: schickling/mailcatcher:latest
ports:
- "127.0.0.1:${PORT:-108}2:1080"
- "127.0.0.1:${PORT:-102}6:1025"
diff --git a/docker/test.Dockerfile b/docker/test.Dockerfile
index a70459e..b00af6a 100644
--- a/docker/test.Dockerfile
+++ b/docker/test.Dockerfile
@@ -1,29 +1,31 @@
-FROM node:18-bullseye-slim
+FROM node:21-bullseye-slim
ENV HOME=/opt/sealious-app
# Tini will ensure that any orphaned processes get reaped properly.
ENV TINI_VERSION v0.19.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN apt update
RUN apt install -y git
RUN apt install -y tmux
# playwright deps
-RUN apt-get update&& apt-get install -y --no-install-recommends libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0 libnspr4 libnss3 libpango-1.0-0 libwayland-client0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 xvfb fonts-noto-color-emoji fonts-unifont libfontconfig1 libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-freefont-ttf libcairo-gobject2 libdbus-glib-1-2 libgdk-pixbuf-2.0-0 libgtk-3-0 libharfbuzz0b libpangocairo-1.0-0 libx11-xcb1 libxcb-shm0 libxcursor1 libxi6 libxrender1 libxtst6 gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good libegl1 libenchant-2-2 libepoxy0 libevdev2 libgles2 libglx0 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgudev-1.0-0 libharfbuzz-icu0 libhyphen0 libicu67 libjpeg62-turbo liblcms2-2 libmanette-0.2-0 libnotify4 libopengl0 libopenjp2-7 libopus0 libpng16-16 libproxy1v5 libsecret-1-0 libsoup2.4-1 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 libwoff1 libxml2 libxslt1.1 libatomic1 libevent-2.1-7
+RUN apt-get update&& apt-get install -y --no-install-recommends libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0 libnspr4 libnss3 libpango-1.0-0 libwayland-client0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 xvfb fonts-noto-color-emoji fonts-unifont libfontconfig1 libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-freefont-ttf libcairo-gobject2 libdbus-glib-1-2 libgdk-pixbuf-2.0-0 libgtk-3-0 libharfbuzz0b libpangocairo-1.0-0 libx11-xcb1 libxcb-shm0 libxcursor1 libxi6 libxrender1 libxtst6 gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good libegl1 libenchant-2-2 libepoxy0 libevdev2 libgles2 libglx0 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgudev-1.0-0 libharfbuzz-icu0 libhyphen0 libicu67 libjpeg62-turbo liblcms2-2 libmanette-0.2-0 libnotify4 libopengl0 libopenjp2-7 libopus0 libpng16-16 libproxy1v5 libsecret-1-0 libsoup2.4-1 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 libwoff1 libxml2 libxslt1.1 libatomic1 libevent-2.1-7 python
+
+RUN apt install wget
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
VOLUME $HOME
WORKDIR $HOME
RUN npm install -g npm@7
RUN npm install -g @sealcode/sealgen
USER $UID:$GID
EXPOSE 8080
CMD ["/usr/local/bin/node", "."]
diff --git a/jenkins.prepare.sh b/jenkins.prepare.sh
index 70cb3e1..44c7f94 100755
--- a/jenkins.prepare.sh
+++ b/jenkins.prepare.sh
@@ -1,24 +1,23 @@
#!/bin/bash -xe
set -e
docker compose down
npm install @sealcode/sealgen
npx sealgen make-env
cp secrets.example.json secrets.json
export SEALIOUS_PORT="${PORT}0"
SEALIOUS_BASE_URL=$(cat .base_url)
export SEALIOUS_BASE_URL
echo "PORT=$PORT" >>.env
mkdir -p node_modules
mkdir -p docker_node_modules
# https://github.com/docker/compose/issues/4725
docker compose build
docker compose up -d db
-./npm.sh --no-TTY ci && ./npm.sh --no-TTY run build
rm -f log.html
diff --git a/jenkins.sanity.sh b/jenkins.sanity.sh
index df0e5c5..413349e 100755
--- a/jenkins.sanity.sh
+++ b/jenkins.sanity.sh
@@ -1,34 +1,37 @@
#!/bin/bash -xe
echo "starting sanity test..."
export SEALIOUS_PORT=$PORT
SEALIOUS_BASE_URL=$(cat .base_url)
export SEALIOUS_BASE_URL
./npm.sh ci --no-progress --no-color
./npm.sh run install-test-deps --no-progress --no-color
./npm.sh run build --no-progress --no-color --ignore-scripts
./npm.sh run typecheck --no-progress --no-color --ignore-scripts
# no need to run build, it's automatically ran after ci
#./npm.sh --no-TTY --user="$UID" run build
./npm.sh run lint-report
node -e 'console.log(JSON.stringify(JSON.parse(fs.readFileSync("./.eslint-result.json")).map(fileResult => fileResult.messages.map(message=>({...message, path: fileResult.filePath.replace("/opt/sealious-app/", "")}))).flat().map(message=>({name: message.ruleId, code: message.ruleId, severity: message.severity==1 ? "warning" : "error", path: message.path, line: message.line, char: message.column, description: message.message}))))' \
>lint-report.json
+docker-compose up -d meilisearch mailcatcher
+
CONTAINER_ID=$(docker compose run -d --user="$UID" \
-e "SEALIOUS_MONGO_PORT=27017" \
-e "SEALIOUS_MONGO_HOST=db" \
-e "SEALIOUS_PORT=8080" \
-e "SEALIOUS_BASE_URL=$SEALIOUS_BASE_URL" \
+ -e "MEILISEARCH_HOST=http://meilisearch:7700" \
-e "SEALIOUS_MAILCATCHER_HOST=mailcatcher" \
-e "SEALIOUS_MAILCATCHER_API_PORT=1080" \
-e "SEALIOUS_MAILCATCHER_SMTP_PORT=1025" \
-e "WITH_WEBHINT=TRUE" \
-e "FORCE_COLOR=0" \
test npm run test-reports)
docker logs -f $CONTAINER_ID
exit $(docker inspect $CONTAINER_ID --format='{{.State.ExitCode}}')
diff --git a/jenkins.start.sh b/jenkins.start.sh
index 2f601cc..d7febbb 100755
--- a/jenkins.start.sh
+++ b/jenkins.start.sh
@@ -1,27 +1,31 @@
#!/bin/bash
SEALIOUS_PORT="${PORT}0"
SEALIOUS_BASE_URL=$(cat .base_url)
export SEALIOUS_BASE_URL
+./npm.sh --no-TTY ci
+
./npm.sh --no-TTY --user="$UID" run build:front
docker compose up -d mailcatcher
+docker compose up -d meilisearch
docker compose run --user="$UID" \
-e "SEALIOUS_MONGO_PORT=27017" \
-e "SEALIOUS_MONGO_HOST=db" \
-e "SEALIOUS_PORT=$SEALIOUS_PORT" \
-e "SEALIOUS_BASE_URL=$SEALIOUS_BASE_URL" \
-e "SEALIOUS_MAILER=mailcatcher" \
+ -e "MEILISEARCH_HOST=http://meilisearch:7700" \
-p "${SEALIOUS_PORT}:${SEALIOUS_PORT}" \
-d \
test \
/bin/sh -c "{ node . --color 2>&1; } | ./node_modules/.bin/ansi-html-stream > log.html" &&
echo "App started on $SEALIOUS_PORT"
WORKSPACE_DIRNAME=$(basename "$WORKSPACE" | sed 's/ /%20/g')
echo "Deployed app to https://${SEALIOUS_PORT}.dep.sealco.de"
echo "Mailcatcher available at https://${PORT}2.dep.sealco.de"
echo "Application logs should be available at https://jenkins.sealcode.org/job/${WORKSPACE_DIRNAME}/ws/$PORT/log.html"
diff --git a/nodemon.json b/nodemon.json
index 5c989ad..cb4dcc9 100644
--- a/nodemon.json
+++ b/nodemon.json
@@ -1,3 +1,5 @@
{
- "delay": "500"
+ "delay": "200",
+ "ext": "js",
+ "ignore": ["public"]
}
diff --git a/package-lock.json b/package-lock.json
index eed4f87..1a86843 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11118 +1,10093 @@
{
"name": "sealious-app",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sealious-app",
"version": "0.1.0",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.12.10",
"@hotwired/turbo": "^8.0.2",
"@koa/router": "^12.0.1",
+ "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2",
- "@sealcode/jdd": "^0.5.1",
- "@sealcode/sealgen": "^0.15.47",
+ "@sealcode/jdd": "^0.6.5",
+ "@sealcode/jdd-editor": "^0.1.5",
+ "@sealcode/sealgen": "^0.17.5",
+ "@sealcode/simplemde": "^1.12.0-beta12",
"@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0",
"@types/leaflet": "^1.9.8",
- "@types/turndown": "^5.0.4",
+ "@types/object-hash": "^3.0.6",
+ "@types/simplemde": "^1.11.11",
+ "dotenv": "^16.4.5",
"escape-goat": "^4.0.0",
"get-port": "^7.0.0",
"js-convert-case": "^4.2.0",
- "koa-responsive-image-router": "^0.2.29",
+ "koa-responsive-image-router": "^0.2.37",
"locreq": "^3.0.0",
+ "meilisearch": "^0.41.0",
"multiple-scripts-tmux": "^1.0.4",
"nodemon": "^3.0.1",
"object-path": "^0.11.8",
"qs": "^6.12.0",
- "sealious": "^0.19.9",
+ "sealious": "^0.19.36",
+ "slug": "^9.1.0",
"stimulus": "^3.2.2",
- "tempstream": "^0.4.1",
+ "tempstream": "^0.4.5",
"throttle-debounce": "^5.0.2",
"turndown": "^7.2.0"
},
"devDependencies": {
"@playwright/test": "^1.44.1",
"@sealcode/ansi-html-stream": "^1.0.1",
"@types/koa__router": "^12.0.4",
"@types/node": "^20.8.4",
"@types/object-path": "^0.11.4",
+ "@types/slug": "^5.0.9",
"@types/tedious": "^4.0.7",
"@types/throttle-debounce": "^5.0.2",
+ "@types/turndown": "^5.0.4",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "7.4",
"@typescript-eslint/parser": "7.4",
"axios": "^1.6.2",
+ "chalk": "^5.3.0",
"eslint": "8.57",
"eslint-config-prettier": "^7.2.0",
"eslint-plugin-prettier": "^3.3.1",
"kill-port": "^1.6.1",
"mocha": "^10.4.0",
"mri": "^1.2.0",
"nyc": "^15.1.0",
"prettier": "^2.2.1",
"ts-loader": "^8.0.14",
"ts-node": "^10.9.2",
- "typescript": "^4.7"
+ "typescript": "^5.6"
},
"engines": {
"node": ">=21.0.0"
}
},
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "version": "7.24.2",
+ "license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.24.7",
+ "@babel/highlight": "^7.24.2",
"picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz",
- "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==",
+ "version": "7.24.1",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz",
- "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==",
+ "version": "7.24.3",
+ "license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.9",
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-module-transforms": "^7.24.9",
- "@babel/helpers": "^7.24.8",
- "@babel/parser": "^7.24.8",
- "@babel/template": "^7.24.7",
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.9",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.1",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.1",
+ "@babel/parser": "^7.24.1",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
"json5": "^2.2.3",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/babel"
}
},
"node_modules/@babel/generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
- "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
+ "version": "7.24.1",
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.25.0",
+ "@babel/types": "^7.24.0",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz",
- "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==",
+ "version": "7.23.6",
+ "license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "version": "7.24.3",
+ "license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.24.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz",
- "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==",
+ "version": "7.23.3",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+ "version": "7.22.5",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
+ "version": "7.24.1",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+ "version": "7.22.20",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
+ "version": "7.23.5",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
- "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
+ "version": "7.24.1",
+ "license": "MIT",
"dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.0"
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
+ "version": "7.24.2",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/parser": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz",
- "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==",
+ "version": "7.24.1",
+ "license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
- "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+ "version": "7.24.5",
+ "license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
+ "version": "7.24.0",
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.0.tgz",
- "integrity": "sha512-ubALThHQy4GCf6mbb+5ZRNmLLCI7bJ3f8Q6LHBSRlSKSWj5a7dSUzJBLv3VuIhFrFPgjF4IzPF567YG/HSCdZA==",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.0",
+ "version": "7.24.1",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.1",
+ "@babel/generator": "^7.24.1",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.24.1",
+ "@babel/types": "^7.24.0",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz",
- "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==",
+ "version": "7.24.0",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
"version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
- "cpu": [
- "ppc64"
- ],
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
- "cpu": [
- "loong64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
- "cpu": [
- "mips64el"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
- "cpu": [
- "ppc64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
- "cpu": [
- "riscv64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
- "cpu": [
- "s390x"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@esbuild/linux-x64": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
- "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
"cpu": [
"x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
- "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+ "version": "4.10.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.6.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
"minimatch": "^3.1.2",
"strip-json-comments": "^3.1.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/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==",
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
+ "license": "Python-2.0"
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "argparse": "^2.0.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
"node_modules/@eslint/eslintrc/node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@eslint/js": {
"version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@hotwired/stimulus": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz",
- "integrity": "sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A=="
+ "license": "MIT"
},
"node_modules/@hotwired/stimulus-webpack-helpers": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz",
- "integrity": "sha512-wa/zupVG0eWxRYJjC1IiPBdt3Lruv0RqGN+/DTMmUWUyMAEB27KXmVY6a8YpUVTM7QwVuaLNGW4EqDgrS2upXQ==",
+ "license": "MIT",
"peerDependencies": {
"@hotwired/stimulus": ">= 3.0"
}
},
"node_modules/@hotwired/turbo": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.5.tgz",
- "integrity": "sha512-TdZDA7fxVQ2ZycygvpnzjGPmFq4sO/E2QVg+2em/sJ3YTSsIWVEis8HmWlumz+c9DjWcUkcCuB+muF08TInpAQ==",
+ "version": "8.0.4",
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "deprecated": "Use @eslint/config-array instead",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.2",
"debug": "^4.3.1",
"minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.22"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
- "dev": true
+ "version": "2.0.2",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
"strip-ansi": "^7.0.1",
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
"wrap-ansi": "^8.1.0",
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ "license": "MIT"
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
"strip-ansi": "^7.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "license": "MIT",
"dependencies": {
- "p-try": "^2.0.0"
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "p-limit": "^2.2.0"
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
"version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+ "version": "1.4.15",
+ "license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@koa/router": {
"version": "12.0.1",
- "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.1.tgz",
- "integrity": "sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4",
"http-errors": "^2.0.0",
"koa-compose": "^4.1.0",
"methods": "^1.1.2",
"path-to-regexp": "^6.2.1"
},
"engines": {
"node": ">= 12"
}
},
"node_modules/@mixmark-io/domino": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz",
- "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="
+ "license": "BSD-2-Clause"
},
"node_modules/@mongodb-js/saslprep": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz",
- "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==",
+ "version": "1.1.5",
+ "license": "MIT",
"dependencies": {
"sparse-bitfield": "^3.0.3"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.stat": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/@one-ini/wasm": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
- "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw=="
+ "license": "MIT"
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@playwright/test": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.3.tgz",
- "integrity": "sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==",
+ "version": "1.44.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright": "1.45.3"
+ "playwright": "1.44.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=16"
}
},
"node_modules/@sealcode/ansi-html-stream": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ansi-html-stream/-/ansi-html-stream-1.0.3.tgz",
- "integrity": "sha512-QwNtZvoyAlR4LQnUYJ4Vylz2FqbZ01rCTmKxKiOqlhVjwtWjtXw+HTsktFNufLFw5mTb2pPaW/u75AQV3ZMEwQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"ansi_up": "^5.0.1"
},
"bin": {
"ansi-html-stream": "index.js"
}
},
+ "node_modules/@sealcode/crud-ui": {
+ "version": "0.0.17",
+ "resolved": "https://registry.npmjs.org/@sealcode/crud-ui/-/crud-ui-0.0.17.tgz",
+ "integrity": "sha512-SEkhzB1oFIaos5d3hWGSrZk8sk2gZYeWMT2BGr34DvJh2IK5d5FUUf/QuzLJqM1JgrKSD5IWXl9R/KPMQtRt7Q==",
+ "dependencies": {
+ "@koa/router": "^13.1.0",
+ "@sealcode/sealgen": "^0.17.4",
+ "@types/koa__router": "^12.0.4",
+ "escape-goat": "^4.0.0",
+ "qs": "^6.13.0",
+ "tempstream": "^0.4.5"
+ }
+ },
+ "node_modules/@sealcode/crud-ui/node_modules/@koa/router": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz",
+ "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==",
+ "dependencies": {
+ "http-errors": "^2.0.0",
+ "koa-compose": "^4.1.0",
+ "path-to-regexp": "^6.3.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/@sealcode/file-manager": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@sealcode/file-manager/-/file-manager-1.0.2.tgz",
- "integrity": "sha512-BOMgC90QffE9cVFKkLVTjDbUJ5WB9YqcmS4fwqFxgnnC3YlH9xb9rff3iGXSkKOHm0kCeSjq0Ohasxtq/z72WQ==",
+ "license": "ISC",
"dependencies": {
"@types/mime-types": "^2.1.4",
"@types/uuid": "^9.0.8",
"locreq": "^3.0.0",
"mime-types": "^2.1.35",
"uuid": "^9.0.1"
}
},
"node_modules/@sealcode/jdd": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.5.1.tgz",
- "integrity": "sha512-qLHgAWuVX08yD0smvRwR8xJpmo8QXuIgSAD67c84erEUNrcKkjfXzFljfdynRs4Rsx7rDPlabs+FQykaET4OZg==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.6.5.tgz",
+ "integrity": "sha512-Fq9HoGN+aYn8mCJzni5n86/Urbt++/zLoO6u7/YcapHqvb8TPJlYzLN7VhF0UfeEA7cYQosh7rTn7wPdoLJuRg==",
"dependencies": {
"@sealcode/file-manager": "^1.0.2",
"@sealcode/ts-predicates": "^0.5.3",
"escape-goat": "^4.0.0",
+ "html-entities": "^2.5.2",
"hyphenopoly": "^5.3.0",
"koa-responsive-image-router": "^0.2.29",
"locreq": "^3.0.0",
"marked": "^12.0.0",
"mri": "^1.2.0",
"prettier": "^2.7.1",
- "tempstream": "^0.4.1",
+ "slug": "^9.1.0",
+ "tempstream": "^0.4.5",
"uuid": "^9.0.1"
},
"peerDependencies": {
- "sealious": "^0.19.18"
+ "sealious": "^0.19.29"
+ }
+ },
+ "node_modules/@sealcode/jdd-editor": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.1.5.tgz",
+ "integrity": "sha512-+OBIc9bXrOivH/toaL08DrGXfYJgCzJUZ6qEzjNiztlslSuCfUGq5T1FWCw8/gMiqz2XAOUF2HF0Mf1wOdFPzA==",
+ "dependencies": {
+ "@koa/router": "^13.1.0",
+ "@sealcode/jdd": "^0.6.5",
+ "@sealcode/sealcodemirror": "^5.70.0-beta5",
+ "@sealcode/sealgen": "^0.17.4",
+ "@types/object-path": "^0.11.4",
+ "@types/throttle-debounce": "^5.0.2",
+ "@types/turndown": "^5.0.5",
+ "object-path": "^0.11.8",
+ "sealious": "^0.19.36",
+ "stimulus": "^3.2.2",
+ "tempstream": "^0.4.5",
+ "throttle-debounce": "^5.0.2",
+ "turndown": "^7.2.0"
+ }
+ },
+ "node_modules/@sealcode/jdd-editor/node_modules/@koa/router": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz",
+ "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==",
+ "dependencies": {
+ "http-errors": "^2.0.0",
+ "koa-compose": "^4.1.0",
+ "path-to-regexp": "^6.3.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@sealcode/jdd/node_modules/@sealcode/ts-predicates": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.5.3.tgz",
- "integrity": "sha512-EZI7e8EY8gI1pw2bKdevjl+fBJbcSlpNkCZ8XoEOV3cHakPujiT6M4l775RDkfxJSbLX7jhOBkhgPNDfmCpZbg=="
+ "license": "ISC"
+ },
+ "node_modules/@sealcode/sealcodemirror": {
+ "version": "5.70.0-beta5",
+ "resolved": "https://registry.npmjs.org/@sealcode/sealcodemirror/-/sealcodemirror-5.70.0-beta5.tgz",
+ "integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
},
"node_modules/@sealcode/sealgen": {
- "version": "0.15.47",
- "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.15.47.tgz",
- "integrity": "sha512-cAmV2UMURIweoMilxCL+MZWNYZ2yEoV7En3vDJNzm/rkR8eTZ4ahOIClr55GrxOlBt1ryN0Gn1vKLubHUKVTJw==",
+ "version": "0.17.5",
+ "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.5.tgz",
+ "integrity": "sha512-2igrSElQKXFOgM2pnP3BLKjGq++MmaHpXdAXxo6W5KB9Ray0tcdPBnEO9DjiNn27rh2M+zGScL7xZGyzhaWRAw==",
"dependencies": {
"@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.2",
"@sealcode/ts-predicates": "^0.4.3",
"chokidar": "^3.6.0",
"deepmerge": "^4.3.1",
"esbuild": "^0.20.0",
"escape-goat": "^4.0.0",
"google-fonts-helper": "^3.4.1",
"is-what": "^4.1.16",
"js-convert-case": "^4.2.0",
"locreq": "^3.0.0",
"md5": "^2.3.0",
"merge": "^2.1.1",
"prettier": "^2.7.1",
"prompts": "^2.4.2",
"recursive-readdir": "^2.2.3",
- "tempstream": "^0.4.0",
+ "tempstream": "^0.4.4",
"tiny-glob": "^0.2.9",
"ws": "^8.16.0",
"yargs": "^17.6.2"
},
"bin": {
"sealgen": "lib/cli.js"
},
"peerDependencies": {
"koa": "^2.13.0",
"koa-responsive-image-router": "^0.2.24",
"sealious": "^0.19.8"
}
},
"node_modules/@sealcode/sealgen/node_modules/@sealcode/ts-predicates": {
"version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
- "integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A=="
+ "license": "ISC"
+ },
+ "node_modules/@sealcode/simplemde": {
+ "version": "1.12.0-beta12",
+ "resolved": "https://registry.npmjs.org/@sealcode/simplemde/-/simplemde-1.12.0-beta12.tgz",
+ "integrity": "sha512-P/5W+nJ/EAQJ5cFxEZHgfbl7X28D9Y1SGaSQ9hfp5MwAux2O2meQNC8obe/V2oH1tUR6fn9830wptbxIhSfmEQ==",
+ "dependencies": {
+ "@sealcode/sealcodemirror": "^5.70.0-beta5",
+ "codemirror-spell-checker": "*",
+ "marked": "*",
+ "turndown": "^7.2.0",
+ "turndown-plugin-gfm": "^1.0.2"
+ }
},
"node_modules/@sealcode/ts-predicates": {
"version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.6.2.tgz",
- "integrity": "sha512-OxZpMBDEgpCeTlLS6py2f4wp3vHfbNn6n4dcRNd5Uy6kge7eiYrlB+mF5iquk4g9NLPcUCHe5M/JIUXiVsXYWA==",
+ "license": "ISC",
"dependencies": {
"multiple-scripts-tmux": "^1.1.2",
"ts-morph": "^19.0.0"
}
},
"node_modules/@ts-morph/common": {
"version": "0.20.0",
- "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.20.0.tgz",
- "integrity": "sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==",
+ "license": "MIT",
"dependencies": {
"fast-glob": "^3.2.12",
"minimatch": "^7.4.3",
"mkdirp": "^2.1.6",
"path-browserify": "^1.0.1"
}
},
+ "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/@ts-morph/common/node_modules/minimatch": {
"version": "7.4.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
- "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@ts-morph/common/node_modules/mkdirp": {
"version": "2.1.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz",
- "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==",
+ "license": "MIT",
"bin": {
"mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@tsconfig/node10": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
- "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
- "dev": true
+ "version": "1.0.10",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/accepts": {
"version": "1.3.7",
- "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/bluebird": {
"version": "3.5.42",
- "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz",
- "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A=="
+ "license": "MIT"
},
"node_modules/@types/body-parser": {
"version": "1.19.5",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
- "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "license": "MIT",
"dependencies": {
"@types/connect": "*",
"@types/node": "*"
}
},
"node_modules/@types/boom": {
"version": "7.3.5",
- "resolved": "https://registry.npmjs.org/@types/boom/-/boom-7.3.5.tgz",
- "integrity": "sha512-jBS0kU2s9W2sx+ILEyO4kxqIYLllqcUXTaVrBctvGptZ+4X3TWkkgY9+AmxdMPKrgiDDdLcfsaQCTu7bniLvgw=="
+ "license": "MIT"
},
"node_modules/@types/bson": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.2.0.tgz",
- "integrity": "sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==",
- "deprecated": "This is a stub types definition. bson provides its own type definitions, so you do not need this installed.",
+ "license": "MIT",
"dependencies": {
"bson": "*"
}
},
"node_modules/@types/clone": {
"version": "0.1.30",
- "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
- "integrity": "sha512-vcxBr+ybljeSiasmdke1cQ9ICxoEwaBgM1OQ/P5h4MPj/kRyLcDl5L8PrftlbyV1kBbJIs3M3x1A1+rcWd4mEA=="
+ "license": "MIT"
},
"node_modules/@types/color": {
"version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz",
- "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==",
+ "license": "MIT",
"dependencies": {
"@types/color-convert": "*"
}
},
"node_modules/@types/color-convert": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.3.tgz",
- "integrity": "sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==",
+ "license": "MIT",
"dependencies": {
"@types/color-name": "*"
}
},
"node_modules/@types/color-hash": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/color-hash/-/color-hash-1.0.5.tgz",
- "integrity": "sha512-miV7Z8zvOnRn0ZjbP/D/qb1VWHrWkKOnfC764SJvnCeIziW4pZy3tPK/542seSgccGAXlPQd/seuNyVAS/p5Ug=="
+ "license": "MIT"
},
"node_modules/@types/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg=="
+ "license": "MIT"
},
"node_modules/@types/connect": {
"version": "3.4.38",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/content-disposition": {
"version": "0.5.8",
- "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz",
- "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg=="
+ "license": "MIT"
},
"node_modules/@types/cookies": {
"version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz",
- "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==",
+ "license": "MIT",
"dependencies": {
"@types/connect": "*",
"@types/express": "*",
"@types/keygrip": "*",
"@types/node": "*"
}
},
"node_modules/@types/escape-html": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz",
- "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg=="
+ "license": "MIT"
},
"node_modules/@types/eslint": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz",
- "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
+ "version": "8.56.6",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
}
},
"node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@types/express": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
- "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
"@types/serve-static": "*"
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.19.5",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
- "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
+ "version": "4.17.43",
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
"@types/range-parser": "*",
"@types/send": "*"
}
},
"node_modules/@types/formidable": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.8.tgz",
- "integrity": "sha512-6psvrUy5VDYb+yaPJReF1WrRsz+FBwyJutK9Twz1Efa27tm07bARNIkK2B8ZPWq80dXqpKfrxTO96xrtPp+AuA==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/geojson": {
"version": "7946.0.14",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
- "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg=="
+ "license": "MIT"
},
"node_modules/@types/http-assert": {
"version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz",
- "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g=="
+ "license": "MIT"
},
"node_modules/@types/http-errors": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
- "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
+ "license": "MIT"
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/keygrip": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz",
- "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ=="
+ "license": "MIT"
},
"node_modules/@types/kill-port": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/kill-port/-/kill-port-2.0.3.tgz",
- "integrity": "sha512-ZHs59e5FBjDLQLOxM48+814LSyNf5sgpi0odtJ0FH6xrIAZXb4yksYG+4mZCbidX3fBOfHytAKAVMgkWvv/Piw==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"shell-exec": "^1"
}
},
"node_modules/@types/koa": {
"version": "2.15.0",
- "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz",
- "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==",
+ "license": "MIT",
"dependencies": {
"@types/accepts": "*",
"@types/content-disposition": "*",
"@types/cookies": "*",
"@types/http-assert": "*",
"@types/http-errors": "*",
"@types/keygrip": "*",
"@types/koa-compose": "*",
"@types/node": "*"
}
},
"node_modules/@types/koa__router": {
"version": "12.0.4",
- "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-12.0.4.tgz",
- "integrity": "sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
},
"node_modules/@types/koa-compose": {
"version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz",
- "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
},
"node_modules/@types/koa-mount": {
"version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@types/koa-mount/-/koa-mount-4.0.5.tgz",
- "integrity": "sha512-pV1njJ7r94iqAFzT9D5sGSYKUHFGudCLAnmr4WFli7V5tJf5MAgRQK9leTPJ4gjvgr+hnTf86fZsKoFN358c7w==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
},
"node_modules/@types/koa-qs": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/koa-qs/-/koa-qs-2.0.3.tgz",
- "integrity": "sha512-HS4oAQaUKUZJPHggg3DeHiuUwSSotieNRuS2ZlUZO14216Fhf7QDNx8mjR/ZwXaSBr/R46KFtE0OAvsF3yP44A==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
},
"node_modules/@types/koa-send": {
"version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.6.tgz",
- "integrity": "sha512-vgnNGoOJkx7FrF0Jl6rbK1f8bBecqAchKpXtKuXzqIEdXTDO6dsSTjr+eZ5m7ltSjH4K/E7auNJEQCAd0McUPA==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
},
"node_modules/@types/koa-static": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.4.tgz",
- "integrity": "sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*",
"@types/koa-send": "*"
}
},
"node_modules/@types/leaflet": {
- "version": "1.9.12",
- "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.12.tgz",
- "integrity": "sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==",
+ "version": "1.9.8",
+ "license": "MIT",
"dependencies": {
"@types/geojson": "*"
}
},
"node_modules/@types/luxon": {
"version": "3.3.8",
- "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.8.tgz",
- "integrity": "sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ=="
+ "license": "MIT"
},
"node_modules/@types/mime": {
"version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
+ "license": "MIT"
},
"node_modules/@types/mime-types": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz",
- "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w=="
+ "license": "MIT"
},
"node_modules/@types/mjml": {
"version": "4.7.4",
- "resolved": "https://registry.npmjs.org/@types/mjml/-/mjml-4.7.4.tgz",
- "integrity": "sha512-vyi1vzWgMzFMwZY7GSZYX0GU0dmtC8vLHwpgk+NWmwbwRSrlieVyJ9sn5elodwUfklJM7yGl0zQeet1brKTWaQ==",
+ "license": "MIT",
"dependencies": {
"@types/mjml-core": "*"
}
},
"node_modules/@types/mjml-core": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@types/mjml-core/-/mjml-core-4.15.0.tgz",
- "integrity": "sha512-jSRWTOpwRS/uHIBfGdvLl0a7MaoBZZYHKI+HhsFYChrUOKVJTnjSYsuV6wx0snv6ZaX3TUo5OP/gNsz/uzZz1A=="
+ "version": "4.7.4",
+ "license": "MIT"
},
"node_modules/@types/mocha": {
"version": "9.1.1",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
- "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw=="
+ "license": "MIT"
},
"node_modules/@types/mongodb": {
"version": "3.6.20",
- "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
- "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
+ "license": "MIT",
"dependencies": {
"@types/bson": "*",
"@types/node": "*"
}
},
"node_modules/@types/node": {
- "version": "20.14.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz",
- "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==",
+ "version": "20.11.30",
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/nodemailer": {
- "version": "6.4.15",
- "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz",
- "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==",
+ "version": "6.4.14",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/object-hash": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz",
- "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA=="
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-3.0.6.tgz",
+ "integrity": "sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==",
+ "license": "MIT"
},
"node_modules/@types/object-path": {
"version": "0.11.4",
- "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.4.tgz",
- "integrity": "sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/qs": {
- "version": "6.9.15",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
- "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg=="
+ "version": "6.9.14",
+ "license": "MIT"
},
"node_modules/@types/range-parser": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
+ "license": "MIT"
},
"node_modules/@types/sanitize-html": {
"version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.11.0.tgz",
- "integrity": "sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ==",
+ "license": "MIT",
"dependencies": {
"htmlparser2": "^8.0.0"
}
},
"node_modules/@types/semver": {
"version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/send": {
"version": "0.17.4",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
- "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "license": "MIT",
"dependencies": {
"@types/mime": "^1",
"@types/node": "*"
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.7",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
- "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "version": "1.15.5",
+ "license": "MIT",
"dependencies": {
"@types/http-errors": "*",
- "@types/node": "*",
- "@types/send": "*"
+ "@types/mime": "*",
+ "@types/node": "*"
}
},
"node_modules/@types/shortid": {
"version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/shortid/-/shortid-0.0.29.tgz",
- "integrity": "sha512-9BCYD9btg2CY4kPcpMQ+vCR8U6V8f/KvixYD5ZbxoWlkhddNF5IeZMVL3p+QFUkg+Hb+kPAG9Jgk4bnnF1v/Fw=="
+ "license": "MIT"
+ },
+ "node_modules/@types/simplemde": {
+ "version": "1.11.11",
+ "resolved": "https://registry.npmjs.org/@types/simplemde/-/simplemde-1.11.11.tgz",
+ "integrity": "sha512-H3ml0YJtx9XMs2pGHwQy/UHzkg9W3Ke3QikQ/jHhEZj1dfmPbWqIvaNyNrt3dtiVlztWhMgK02+Rmoem+Jot/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/slug": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/@types/slug/-/slug-5.0.9.tgz",
+ "integrity": "sha512-6Yp8BSplP35Esa/wOG1wLNKiqXevpQTEF/RcL/NV6BBQaMmZh4YlDwCgrrFSoUE4xAGvnKd5c+lkQJmPrBAzfQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/tedious": {
"version": "4.0.14",
- "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz",
- "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/throttle-debounce": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
- "integrity": "sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/turndown": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@types/turndown/-/turndown-5.0.5.tgz",
"integrity": "sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w=="
},
"node_modules/@types/uuid": {
"version": "9.0.8",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
- "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="
+ "license": "MIT"
},
"node_modules/@types/webidl-conversions": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
- "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
+ "license": "MIT"
},
"node_modules/@types/whatwg-url": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
- "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
+ "version": "11.0.4",
+ "license": "MIT",
"dependencies": {
"@types/webidl-conversions": "*"
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz",
- "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
"@typescript-eslint/scope-manager": "7.4.0",
"@typescript-eslint/type-utils": "7.4.0",
"@typescript-eslint/utils": "7.4.0",
"@typescript-eslint/visitor-keys": "7.4.0",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
"natural-compare": "^1.4.0",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^7.0.0",
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/@typescript-eslint/parser": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.4.0.tgz",
- "integrity": "sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/scope-manager": "7.4.0",
"@typescript-eslint/types": "7.4.0",
"@typescript-eslint/typescript-estree": "7.4.0",
"@typescript-eslint/visitor-keys": "7.4.0",
"debug": "^4.3.4"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz",
- "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "7.4.0",
"@typescript-eslint/visitor-keys": "7.4.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz",
- "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/typescript-estree": "7.4.0",
"@typescript-eslint/utils": "7.4.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@typescript-eslint/types": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz",
- "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz",
- "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/types": "7.4.0",
"@typescript-eslint/visitor-keys": "7.4.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"minimatch": "9.0.3",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.3",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/@typescript-eslint/utils": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz",
- "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
"@typescript-eslint/scope-manager": "7.4.0",
"@typescript-eslint/types": "7.4.0",
"@typescript-eslint/typescript-estree": "7.4.0",
"semver": "^7.5.4"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^8.56.0"
}
},
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/@typescript-eslint/visitor-keys": {
"version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz",
- "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "7.4.0",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@webassemblyjs/ast": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
- "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6"
}
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
- "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.11.6",
"@webassemblyjs/helper-api-error": "1.11.6",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
- "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/wasm-gen": "1.12.1"
}
},
"node_modules/@webassemblyjs/ieee754": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
},
"node_modules/@webassemblyjs/leb128": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
"dev": true,
+ "license": "Apache-2.0",
"peer": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/utf8": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
- "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/helper-wasm-section": "1.12.1",
"@webassemblyjs/wasm-gen": "1.12.1",
"@webassemblyjs/wasm-opt": "1.12.1",
"@webassemblyjs/wasm-parser": "1.12.1",
"@webassemblyjs/wast-printer": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
- "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
"@webassemblyjs/leb128": "1.11.6",
"@webassemblyjs/utf8": "1.11.6"
}
},
"node_modules/@webassemblyjs/wasm-opt": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
- "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-buffer": "1.12.1",
"@webassemblyjs/wasm-gen": "1.12.1",
"@webassemblyjs/wasm-parser": "1.12.1"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
- "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@webassemblyjs/helper-api-error": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
"@webassemblyjs/leb128": "1.11.6",
"@webassemblyjs/utf8": "1.11.6"
}
},
"node_modules/@webassemblyjs/wast-printer": {
"version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
- "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.12.1",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true,
+ "license": "BSD-3-Clause",
"peer": true
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true,
+ "license": "Apache-2.0",
"peer": true
},
"node_modules/abbrev": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
- "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
+ "license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/accepts": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "version": "8.11.3",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "acorn": "^8"
- }
- },
"node_modules/acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/acorn-walk": {
- "version": "8.3.3",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz",
- "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==",
+ "version": "8.3.2",
"dev": true,
- "dependencies": {
- "acorn": "^8.11.0"
- },
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/aggregate-error": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/ansi_up": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-5.2.1.tgz",
- "integrity": "sha512-5bz5T/7FRmlxA37zDXhG6cAwlcZtfnmNLDJra66EEIT3kYlw5aPJdbkJEhm59D6kA4Wi5ict6u6IDYHJaQlH+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "version": "4.1.1",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/append-transform": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
- "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"default-require-extensions": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/archy": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/arg": {
"version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "version": "1.0.10",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
},
"node_modules/array-buffer-byte-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"is-array-buffer": "^3.0.4"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"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,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/arraybuffer.prototype.slice": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
"es-abstract": "^1.22.3",
"es-errors": "^1.2.1",
"get-intrinsic": "^1.2.3",
"is-array-buffer": "^3.0.4",
"is-shared-array-buffer": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/available-typed-arrays": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/axios": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
- "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+ "version": "1.6.8",
"dev": true,
+ "license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/b4a": {
"version": "1.6.6",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
- "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
+ "license": "Apache-2.0"
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "license": "MIT"
},
"node_modules/bare-events": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
- "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
+ "version": "2.2.2",
+ "license": "Apache-2.0",
"optional": true
},
"node_modules/bare-fs": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz",
- "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==",
+ "version": "2.2.2",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-events": "^2.0.0",
+ "bare-os": "^2.0.0",
"bare-path": "^2.0.0",
- "bare-stream": "^2.0.0"
+ "streamx": "^2.13.0"
}
},
"node_modules/bare-os": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz",
- "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==",
+ "version": "2.2.1",
+ "license": "Apache-2.0",
"optional": true
},
"node_modules/bare-path": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
- "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
+ "version": "2.1.0",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-os": "^2.1.0"
}
},
- "node_modules/bare-stream": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz",
- "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==",
- "optional": true,
- "dependencies": {
- "streamx": "^2.18.0"
- }
- },
"node_modules/base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/better-queue": {
"version": "3.8.12",
- "resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.12.tgz",
- "integrity": "sha512-D9KZ+Us+2AyaCz693/9AyjTg0s8hEmkiM/MB3i09cs4MdK1KgTSGJluXRYmOulR69oLZVo2XDFtqsExDt8oiLA==",
+ "license": "MIT",
"dependencies": {
"better-queue-memory": "^1.0.1",
"node-eta": "^0.9.0",
"uuid": "^9.0.0"
}
},
"node_modules/better-queue-memory": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/better-queue-memory/-/better-queue-memory-1.0.4.tgz",
- "integrity": "sha512-SWg5wFIShYffEmJpI6LgbL8/3Dqhku7xI1oEiy6FroP9DbcZlG0ZDjxvPdP9t7hTGW40IpIcC6zVoGT1oxjOuA=="
+ "license": "MIT"
},
"node_modules/big.js": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bl": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
"node_modules/bl/node_modules/readable-stream": {
"version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/bluebird": {
"version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ "license": "MIT"
},
"node_modules/boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ "license": "ISC"
},
"node_modules/boom": {
"version": "7.3.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz",
- "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==",
- "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.",
+ "license": "BSD-3-Clause",
"dependencies": {
"hoek": "6.x.x"
}
},
"node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "1.1.11",
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
"node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "version": "3.0.2",
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.1.1"
+ "fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/browser-stdout": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/browserslist": {
- "version": "4.23.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz",
- "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==",
+ "version": "4.23.0",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001640",
- "electron-to-chromium": "^1.4.820",
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
"node-releases": "^2.0.14",
- "update-browserslist-db": "^1.1.0"
+ "update-browserslist-db": "^1.0.13"
},
"bin": {
"browserslist": "cli.js"
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
"node_modules/bson": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz",
- "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==",
+ "version": "6.6.0",
+ "license": "Apache-2.0",
"engines": {
"node": ">=16.20.1"
}
},
"node_modules/buffer": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
"node_modules/buffer-from": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/bytes": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/cache-content-type": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
- "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==",
+ "license": "MIT",
"dependencies": {
"mime-types": "^2.1.18",
"ylru": "^1.2.0"
},
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/caching-transform": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
- "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasha": "^5.0.0",
"make-dir": "^3.0.0",
"package-hash": "^4.0.0",
"write-file-atomic": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
+ "node_modules/caching-transform/node_modules/make-dir": {
+ "version": "3.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"set-function-length": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/camel-case": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
- "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "license": "MIT",
"dependencies": {
"no-case": "^2.2.0",
"upper-case": "^1.1.1"
}
},
"node_modules/camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001643",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz",
- "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==",
+ "version": "1.0.30001600",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
+ "version": "5.3.0",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/charenc": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/cheerio": {
"version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
"domhandler": "^5.0.3",
"domutils": "^3.0.1",
"htmlparser2": "^8.0.1",
"parse5": "^7.0.0",
"parse5-htmlparser2-tree-adapter": "^7.0.0"
},
"engines": {
"node": ">= 6"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
}
},
"node_modules/cheerio-select": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-select": "^5.1.0",
"css-what": "^6.1.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.0.1"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/chownr": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ "license": "ISC"
},
"node_modules/chrome-trace-event": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
- "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "version": "1.0.3",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=6.0"
}
},
"node_modules/classnames": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
- "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
+ "license": "MIT"
},
"node_modules/clean-css": {
"version": "4.2.4",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
- "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "license": "MIT",
"dependencies": {
"source-map": "~0.6.0"
},
"engines": {
"node": ">= 4.0"
}
},
"node_modules/clean-stack": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui": {
"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==",
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/clone": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "license": "MIT",
"engines": {
"node": ">=0.8"
}
},
"node_modules/co": {
"version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
"node": ">= 0.12.0"
}
},
"node_modules/co-body": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz",
- "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==",
+ "license": "MIT",
"dependencies": {
"inflation": "^2.0.0",
"qs": "^6.4.0",
"raw-body": "^2.2.0",
"type-is": "^1.6.14"
}
},
"node_modules/code-block-writer": {
"version": "12.0.0",
- "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz",
- "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w=="
+ "license": "MIT"
+ },
+ "node_modules/codemirror-spell-checker": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz",
+ "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==",
+ "license": "MIT",
+ "dependencies": {
+ "typo-js": "*"
+ }
},
"node_modules/color": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"dependencies": {
"color-convert": "^2.0.1",
"color-string": "^1.9.0"
},
"engines": {
"node": ">=12.5.0"
}
},
"node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/color-hash": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/color-hash/-/color-hash-1.1.1.tgz",
- "integrity": "sha512-OOZ2pKPuon1H7/77G0+xzSRDgITsik/kYzfJxmCBEI4ozM6UFhZ1aaZ6OhASbDwolHUq5PTRnhDle9FR72tqbw=="
+ "license": "MIT"
},
"node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ "license": "MIT"
},
"node_modules/color-string": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
"dependencies": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"node_modules/color/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/commander": {
"version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ "license": "MIT"
},
"node_modules/commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/commonmark": {
"version": "0.31.0",
- "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.31.0.tgz",
- "integrity": "sha512-nuDsQ34gjmgAqjyIz6mbRWBW/XPE9wsBempAMBk2V/AA88ekztjTM46oi07J6c6Y/2Y8TdYCZi9L0pIBt/oMZw==",
+ "license": "BSD-2-Clause",
"dependencies": {
"entities": "~3.0.1",
"mdurl": "~1.0.1",
"minimist": "~1.2.5",
"string.prototype.repeat": "^1.0.0"
},
"bin": {
"commonmark": "bin/commonmark"
},
"engines": {
"node": "*"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "license": "MIT"
},
"node_modules/config-chain": {
"version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "license": "MIT",
"dependencies": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
}
},
"node_modules/content-disposition": {
"version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/content-type": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ "license": "MIT"
},
"node_modules/cookies": {
"version": "0.9.1",
- "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz",
- "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==",
+ "license": "MIT",
"dependencies": {
"depd": "~2.0.0",
"keygrip": "~1.1.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/core-util-is": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/create-require": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cron": {
"version": "2.4.4",
- "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.4.tgz",
- "integrity": "sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==",
+ "license": "MIT",
"dependencies": {
"@types/luxon": "~3.3.0",
"luxon": "~3.3.0"
}
},
+ "node_modules/cross-fetch": {
+ "version": "3.1.8",
+ "license": "MIT",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
"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==",
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/crypt": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/css-select": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
"domhandler": "^5.0.2",
"domutils": "^3.0.1",
"nth-check": "^2.0.1"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/css-what": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/csv-stringify": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.1.tgz",
- "integrity": "sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ=="
+ "version": "6.4.6",
+ "license": "MIT"
},
"node_modules/cuint": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
- "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw=="
+ "license": "MIT"
},
"node_modules/data-view-buffer": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
"is-data-view": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/data-view-byte-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"is-data-view": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/data-view-byte-offset": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
"is-data-view": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/debug": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
- "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "version": "4.3.4",
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/decamelize": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-response": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "license": "MIT",
"dependencies": {
"mimic-response": "^3.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/deep-equal": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw=="
+ "license": "MIT"
},
"node_modules/deep-extend": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/deep-is": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/deepmerge": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/default-require-extensions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz",
- "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"strip-bom": "^4.0.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/define-data-property": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-properties": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/delegates": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ "license": "MIT"
},
"node_modules/depd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/destr": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
- "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ=="
+ "license": "MIT"
},
"node_modules/destroy": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/detect-libc": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
- "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/detect-node": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ "license": "MIT"
},
"node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "version": "4.0.2",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
"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,
+ "license": "MIT",
"dependencies": {
"path-type": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/dom-serializer": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"entities": "^4.2.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/dom-serializer/node_modules/entities": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domhandler": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/domutils": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/dot-prop": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz",
- "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==",
+ "license": "MIT",
"dependencies": {
"type-fest": "^3.8.0"
},
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/dot-prop/node_modules/type-fest": {
"version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/dotenv": {
+ "version": "16.4.5",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "license": "MIT"
},
"node_modules/editorconfig": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz",
- "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==",
+ "license": "MIT",
"dependencies": {
"@one-ini/wasm": "0.1.1",
"commander": "^10.0.0",
"minimatch": "9.0.1",
"semver": "^7.5.3"
},
"bin": {
"editorconfig": "bin/editorconfig"
},
"engines": {
"node": ">=14"
}
},
+ "node_modules/editorconfig/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/editorconfig/node_modules/commander": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
- "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/editorconfig/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=10"
}
},
"node_modules/editorconfig/node_modules/minimatch": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
- "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/editorconfig/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/editorconfig/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ "license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz",
- "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ=="
+ "version": "1.4.717",
+ "license": "ISC"
},
"node_modules/emittery": {
"version": "0.8.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
- "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sindresorhus/emittery?sponsor=1"
}
},
"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=="
+ "license": "MIT"
},
"node_modules/emojis-list": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/end-of-stream": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/enhanced-resolve": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
- "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.5.0",
"tapable": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/entities": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/errno": {
"version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prr": "~1.0.1"
},
"bin": {
"errno": "cli.js"
}
},
"node_modules/es-abstract": {
"version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"arraybuffer.prototype.slice": "^1.0.3",
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"data-view-buffer": "^1.0.1",
"data-view-byte-length": "^1.0.1",
"data-view-byte-offset": "^1.0.0",
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6",
"get-intrinsic": "^1.2.4",
"get-symbol-description": "^1.0.2",
"globalthis": "^1.0.3",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.3",
"has-symbols": "^1.0.3",
"hasown": "^2.0.2",
"internal-slot": "^1.0.7",
"is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
"is-data-view": "^1.0.1",
"is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",
"is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
"object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
"object.assign": "^4.1.5",
"regexp.prototype.flags": "^1.5.2",
"safe-array-concat": "^1.1.2",
"safe-regex-test": "^1.0.3",
"string.prototype.trim": "^1.2.9",
"string.prototype.trimend": "^1.0.8",
"string.prototype.trimstart": "^1.0.8",
"typed-array-buffer": "^1.0.2",
"typed-array-byte-length": "^1.0.1",
"typed-array-byte-offset": "^1.0.2",
"typed-array-length": "^1.0.6",
"unbox-primitive": "^1.0.2",
"which-typed-array": "^1.1.15"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/es-define-property": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-module-lexer": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
- "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "version": "1.5.0",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/es-object-atoms": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-to-primitive": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/es6-error": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
- "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/esbuild": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=12"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.20.2",
"@esbuild/android-arm": "0.20.2",
"@esbuild/android-arm64": "0.20.2",
"@esbuild/android-x64": "0.20.2",
"@esbuild/darwin-arm64": "0.20.2",
"@esbuild/darwin-x64": "0.20.2",
"@esbuild/freebsd-arm64": "0.20.2",
"@esbuild/freebsd-x64": "0.20.2",
"@esbuild/linux-arm": "0.20.2",
"@esbuild/linux-arm64": "0.20.2",
"@esbuild/linux-ia32": "0.20.2",
"@esbuild/linux-loong64": "0.20.2",
"@esbuild/linux-mips64el": "0.20.2",
"@esbuild/linux-ppc64": "0.20.2",
"@esbuild/linux-riscv64": "0.20.2",
"@esbuild/linux-s390x": "0.20.2",
"@esbuild/linux-x64": "0.20.2",
"@esbuild/netbsd-x64": "0.20.2",
"@esbuild/openbsd-x64": "0.20.2",
"@esbuild/sunos-x64": "0.20.2",
"@esbuild/win32-arm64": "0.20.2",
"@esbuild/win32-ia32": "0.20.2",
"@esbuild/win32-x64": "0.20.2"
}
},
"node_modules/escalade": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/escape-goat": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
- "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ "license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/eslint": {
"version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.57.0",
"@humanwhocodes/config-array": "^0.11.14",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
"eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
"graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3",
"strip-ansi": "^6.0.1",
"text-table": "^0.2.0"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint-config-prettier": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz",
- "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==",
"dev": true,
+ "license": "MIT",
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
"peerDependencies": {
"eslint": ">=7.0.0"
}
},
"node_modules/eslint-plugin-prettier": {
"version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz",
- "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prettier-linter-helpers": "^1.0.0"
},
"engines": {
"node": ">=6.0.0"
},
"peerDependencies": {
"eslint": ">=5.0.0",
"prettier": ">=1.13.0"
},
"peerDependenciesMeta": {
"eslint-config-prettier": {
"optional": true
}
}
},
"node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "version": "5.1.1",
"dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "estraverse": "^4.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=8.0.0"
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint/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==",
+ "node_modules/eslint/node_modules/argparse": {
+ "version": "2.0.1",
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
+ "license": "Python-2.0"
},
"node_modules/eslint/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/eslint/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/eslint/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/eslint/node_modules/escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/find-up": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint/node_modules/glob-parent": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/eslint/node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/eslint/node_modules/js-yaml": {
+ "version": "4.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/eslint/node_modules/locate-path": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": "*"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-limit": {
+ "version": "3.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-locate": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/eslint/node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/espree": {
"version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "version": "1.5.0",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
"engines": {
"node": ">=0.10"
}
},
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/esrecurse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
"engines": {
"node": ">=4.0"
}
},
- "node_modules/estraverse": {
+ "node_modules/esrecurse/node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/esutils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/events": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=0.8.x"
}
},
"node_modules/expand-template": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "license": "(MIT OR WTFPL)",
"engines": {
"node": ">=6"
}
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-diff": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
- "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/fast-fifo": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
- "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
+ "license": "MIT"
},
"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==",
+ "license": "MIT",
"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-json-stable-stringify": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fastq": {
"version": "1.17.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.0.4"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
}
},
"node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "version": "7.0.1",
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/filru": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/filru/-/filru-2.1.0.tgz",
- "integrity": "sha512-rcVnKdKbZxaQfrKbN6D8HDR0UGjC4Y7cA/xARjcyTp25kds9PiGWpwTx85Z86of/cOA3Wp5h7k7rnZmMN9oUqQ==",
+ "license": "MIT",
"dependencies": {
"debug": "^3.1.0",
"mkdirp": "^0.5.1",
"xxhashjs": "^0.2.1"
},
"engines": {
"node": ">=6.4.0"
}
},
"node_modules/filru/node_modules/debug": {
"version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/find-cache-dir": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"commondir": "^1.0.1",
"make-dir": "^3.0.2",
"pkg-dir": "^4.1.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
}
},
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/find-cache-dir/node_modules/make-dir": {
+ "version": "3.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "semver": "^6.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/flat": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"bin": {
"flat": "cli.js"
}
},
"node_modules/flat-cache": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
"keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
}
},
"node_modules/flatted": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/follow-redirects": {
"version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"dev": true,
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/for-each": {
"version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.1.3"
}
},
"node_modules/foreground-child": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
- "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^3.0.2"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/form-data": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/formidable": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
- "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
- "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
+ "license": "MIT",
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
},
"node_modules/fresh": {
"version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/fromentries": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
- "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/fs-constants": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ "license": "MIT"
},
"node_modules/fs-extra": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
+ "license": "ISC"
},
"node_modules/function-bind": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/function.prototype.name": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
"es-abstract": "^1.22.1",
"functions-have-names": "^1.2.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/functions-have-names": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-package-type": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/get-port": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz",
- "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==",
+ "license": "MIT",
"engines": {
"node": ">=16"
},
"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",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-them-args": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/get-them-args/-/get-them-args-1.3.2.tgz",
- "integrity": "sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/github-from-package": {
"version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
+ "license": "MIT"
},
"node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
+ "version": "7.2.3",
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"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==",
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true,
+ "license": "BSD-2-Clause",
"peer": true
},
- "node_modules/glob/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/globalthis": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.2.1",
"gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/globalyzer": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
+ "license": "MIT"
},
"node_modules/globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
+ "license": "MIT",
"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/globrex": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
+ "license": "MIT"
},
"node_modules/google-fonts-helper": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/google-fonts-helper/-/google-fonts-helper-3.6.0.tgz",
- "integrity": "sha512-ReantWd/l8dedKqTYjvqaQ55rAl/rbRqWL5VXHNXtGwIhMX4N8VNA7V19drr7xiv5G3pzlYID0K4FauvGqnWEg==",
+ "version": "3.5.0",
+ "license": "MIT",
"dependencies": {
"deepmerge": "^4.3.1",
"hookable": "^5.5.3",
- "ofetch": "^1.3.4",
- "ufo": "^1.5.3"
+ "ofetch": "^1.3.3",
+ "ufo": "^1.4.0"
}
},
"node_modules/gopd": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ "license": "ISC"
},
"node_modules/graphemer": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/handlebars": {
"version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.5",
"neo-async": "^2.6.2",
"source-map": "^0.6.1",
"wordwrap": "^1.0.0"
},
"bin": {
"handlebars": "bin/handlebars"
},
"engines": {
"node": ">=0.4.7"
},
"optionalDependencies": {
"uglify-js": "^3.1.4"
}
},
"node_modules/has-bigints": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasha": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
- "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-stream": "^2.0.0",
"type-fest": "^0.8.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/hasown": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/highlight.js": {
"version": "10.7.3",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
- "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
},
"node_modules/hoek": {
"version": "6.1.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
- "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==",
- "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues."
+ "license": "BSD-3-Clause"
},
"node_modules/hookable": {
"version": "5.5.3",
- "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
- "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ "license": "MIT"
+ },
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
},
"node_modules/html-escaper": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/html-minifier": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
- "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "license": "MIT",
"dependencies": {
"camel-case": "^3.0.0",
"clean-css": "^4.2.1",
"commander": "^2.19.0",
"he": "^1.2.0",
"param-case": "^2.1.1",
"relateurl": "^0.2.7",
"uglify-js": "^3.5.1"
},
"bin": {
"html-minifier": "cli.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/htmlparser2": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.0.1",
"entities": "^4.4.0"
}
},
"node_modules/htmlparser2/node_modules/entities": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/http-assert": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
- "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==",
+ "license": "MIT",
"dependencies": {
"deep-equal": "~1.0.1",
"http-errors": "~1.8.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/http-assert/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/http-assert/node_modules/http-errors": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/http-assert/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/http-errors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/hyphenopoly": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/hyphenopoly/-/hyphenopoly-5.3.0.tgz",
- "integrity": "sha512-9GajH50TuO+c25VzYUq2luYpyOybpVcDQ4B7fNWy+n3yQ3dSLRFcEC9oJqG96C/rE5Z3zVP8L/K/3ilzBa49PA==",
+ "license": "MIT",
"engines": {
"node": ">=16"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/ignore-by-default": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
+ "license": "ISC"
},
"node_modules/import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
},
"node_modules/indent-string": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/inflation": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz",
- "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "license": "ISC"
},
"node_modules/ini": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ "license": "ISC"
},
"node_modules/internal-slot": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"hasown": "^2.0.0",
"side-channel": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/interpret": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-array-buffer": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-arrayish": {
"version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ "license": "MIT"
},
"node_modules/is-bigint": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "license": "MIT",
"dependencies": {
"has-bigints": "^1.0.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-binary-path": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-boolean-object": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-buffer": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "license": "MIT"
},
"node_modules/is-callable": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-core-module": {
- "version": "2.15.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
- "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
+ "version": "2.13.1",
+ "license": "MIT",
"dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-view": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "license": "MIT",
"dependencies": {
"is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-date-object": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-generator-function": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-negative-zero": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-object": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-path-inside": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-regex": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-shared-array-buffer": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-string": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-symbol": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-typed-array": {
"version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-typedarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-weakref": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-what": {
"version": "4.1.16",
- "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
- "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "license": "MIT",
"engines": {
"node": ">=12.13"
},
"funding": {
"url": "https://github.com/sponsors/mesqueeb"
}
},
"node_modules/is-windows": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "license": "ISC"
},
"node_modules/istanbul-lib-coverage": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
- "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=8"
}
},
"node_modules/istanbul-lib-hook": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
- "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"append-transform": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/istanbul-lib-processinfo": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
- "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"archy": "^1.0.0",
"cross-spawn": "^7.0.3",
"istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
"uuid": "^8.3.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/istanbul-lib-processinfo/node_modules/uuid": {
"version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true,
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
- "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
"make-dir": "^4.0.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/istanbul-lib-report/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
- "dev": true,
- "dependencies": {
- "semver": "^7.5.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
"node_modules/istanbul-reports": {
"version": "3.1.7",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
- "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"html-escaper": "^2.0.0",
"istanbul-lib-report": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "version": "2.3.6",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
+ "engines": {
+ "node": ">=14"
+ },
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
"optionalDependencies": {
"@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/jest-worker": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
"node": ">= 10.13.0"
}
},
"node_modules/jest-worker/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=8"
}
},
"node_modules/jest-worker/node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/js-beautify": {
"version": "1.15.1",
- "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz",
- "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==",
+ "license": "MIT",
"dependencies": {
"config-chain": "^1.1.13",
"editorconfig": "^1.0.4",
"glob": "^10.3.3",
"js-cookie": "^3.0.5",
"nopt": "^7.2.0"
},
"bin": {
"css-beautify": "js/bin/css-beautify.js",
"html-beautify": "js/bin/html-beautify.js",
"js-beautify": "js/bin/js-beautify.js"
},
"engines": {
"node": ">=14"
}
},
+ "node_modules/js-beautify/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/js-beautify/node_modules/foreground-child": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
- "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "version": "3.1.1",
+ "license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/js-beautify/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "10.3.12",
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/js-beautify/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "9.0.4",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/js-beautify/node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/js-convert-case": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/js-convert-case/-/js-convert-case-4.2.0.tgz",
- "integrity": "sha512-i4mHCxiBNj6ajjMnZnC70qAOMA8gb+YgYipy2VR7a+Q5EBgEQ2/SgSAUBdNEyObk++B4AIUiFWeDEX2ggOd8cQ=="
+ "license": "MIT"
},
"node_modules/js-cookie": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
- "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "3.14.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "argparse": "^2.0.1"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/jsesc": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
"node": ">=4"
}
},
"node_modules/json-buffer": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/jsonfile": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "license": "MIT",
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/juice": {
"version": "10.0.0",
- "resolved": "https://registry.npmjs.org/juice/-/juice-10.0.0.tgz",
- "integrity": "sha512-9f68xmhGrnIi6DBkiiP3rUrQN33SEuaKu1+njX6VgMP+jwZAsnT33WIzlrWICL9matkhYu3OyrqSUP55YTIdGg==",
+ "license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.12",
"commander": "^6.1.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^6.0.1"
},
"bin": {
"juice": "bin/juice"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/juice/node_modules/commander": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/keygrip": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
- "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
+ "license": "MIT",
"dependencies": {
"tsscmp": "1.0.6"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/keyv": {
"version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.1"
}
},
"node_modules/kill-port": {
"version": "1.6.1",
- "resolved": "https://registry.npmjs.org/kill-port/-/kill-port-1.6.1.tgz",
- "integrity": "sha512-un0Y55cOM7JKGaLnGja28T38tDDop0AQ8N0KlAdyh+B1nmMoX8AnNmqPNZbS3mUMgiST51DCVqmbFT1gNJpVNw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-them-args": "1.3.2",
"shell-exec": "1.0.2"
},
"bin": {
"kill-port": "cli.js"
}
},
"node_modules/kill-port/node_modules/shell-exec": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.0.2.tgz",
- "integrity": "sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/kleur": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/koa": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz",
- "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==",
+ "version": "2.15.2",
+ "license": "MIT",
"dependencies": {
"accepts": "^1.3.5",
"cache-content-type": "^1.0.0",
"content-disposition": "~0.5.2",
"content-type": "^1.0.4",
"cookies": "~0.9.0",
"debug": "^4.3.2",
"delegates": "^1.0.0",
"depd": "^2.0.0",
"destroy": "^1.0.4",
"encodeurl": "^1.0.2",
"escape-html": "^1.0.3",
"fresh": "~0.5.2",
"http-assert": "^1.3.0",
"http-errors": "^1.6.3",
"is-generator-function": "^1.0.7",
"koa-compose": "^4.1.0",
"koa-convert": "^2.0.0",
"on-finished": "^2.3.0",
"only": "~0.0.2",
"parseurl": "^1.3.2",
"statuses": "^1.5.0",
"type-is": "^1.6.16",
"vary": "^1.1.2"
},
"engines": {
"node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
}
},
"node_modules/koa-body": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz",
- "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==",
+ "license": "MIT",
"dependencies": {
"@types/formidable": "^1.0.31",
"co-body": "^5.1.1",
"formidable": "^1.1.1"
}
},
"node_modules/koa-compose": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
- "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="
+ "license": "MIT"
},
"node_modules/koa-convert": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
- "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
+ "license": "MIT",
"dependencies": {
"co": "^4.6.0",
"koa-compose": "^4.1.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/koa-mount": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/koa-mount/-/koa-mount-4.0.0.tgz",
- "integrity": "sha512-rm71jaA/P+6HeCpoRhmCv8KVBIi0tfGuO/dMKicbQnQW/YJntJ6MnnspkodoA4QstMVEZArsCphmd0bJEtoMjQ==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.0.1",
"koa-compose": "^4.1.0"
},
"engines": {
"node": ">= 7.6.0"
}
},
"node_modules/koa-qs": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/koa-qs/-/koa-qs-3.0.0.tgz",
- "integrity": "sha512-05IB5KirwMs3heWW26iTz46HuMAtrlrRMus/aNH1BRDocLyF/099EtCB0MIfQpRuT0TISvaTsWwSy2gctIWiGA==",
+ "license": "MIT",
"dependencies": {
"merge-descriptors": "^1.0.1",
"qs": "^6.9.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/koa-responsive-image-router": {
- "version": "0.2.31",
- "resolved": "https://registry.npmjs.org/koa-responsive-image-router/-/koa-responsive-image-router-0.2.31.tgz",
- "integrity": "sha512-k6mfqzHgfDD/5S2BA1tyI858GxjceBHR7SlNmSiXSYPncKCDOVjr0CBZQg8mlZ7EdlGuHVOwQIptarJOFwy+Fw==",
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/koa-responsive-image-router/-/koa-responsive-image-router-0.2.37.tgz",
+ "integrity": "sha512-JEjQv7VFCSwF/NqwTsGVsbg8e1MaiEHLaw3vwyRABsJHExJftzNQqcd8cFUXEzgOz/+GpwJOUQRNCi6c+lFfwg==",
"dependencies": {
"@koa/router": "^10.0.0",
"@sealcode/ts-predicates": "^0.5.3",
"@types/mocha": "^9.0.0",
"better-queue": "^3.8.12",
"filru": "^2.1.0",
"koa": "^2.13.1",
"koa-router": "^10.0.0",
"locreq": "^2.4.1",
"lru-cache": "^10.0.1",
"multiple-scripts-tmux": "^1.1.2",
"node-cache": "^5.1.2",
"object-fit-math": "^1.0.0",
"object-hash": "^3.0.0",
"pick-port": "^2.1.0",
"sharp": "^0.32.5",
"smartcrop-sharp": "^2.0.8"
},
"engines": {
"node": ">=21.0.0"
}
},
"node_modules/koa-responsive-image-router/node_modules/@koa/router": {
"version": "10.1.1",
- "resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz",
- "integrity": "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==",
- "deprecated": "**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173",
+ "license": "MIT",
"dependencies": {
"debug": "^4.1.1",
"http-errors": "^1.7.3",
"koa-compose": "^4.1.0",
"methods": "^1.1.2",
"path-to-regexp": "^6.1.0"
},
"engines": {
"node": ">= 8.0.0"
}
},
"node_modules/koa-responsive-image-router/node_modules/@sealcode/ts-predicates": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.5.3.tgz",
- "integrity": "sha512-EZI7e8EY8gI1pw2bKdevjl+fBJbcSlpNkCZ8XoEOV3cHakPujiT6M4l775RDkfxJSbLX7jhOBkhgPNDfmCpZbg=="
+ "license": "ISC"
},
"node_modules/koa-responsive-image-router/node_modules/@types/node": {
"version": "14.18.63",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz",
- "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
+ "license": "MIT"
},
"node_modules/koa-responsive-image-router/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-responsive-image-router/node_modules/http-errors": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-responsive-image-router/node_modules/locreq": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/locreq/-/locreq-2.4.1.tgz",
- "integrity": "sha512-Itfhlus87Q9GcQKEK5LXZngD5YpUbANC9mr5UFghLSBIg6gVVG21AWX45+JVyaqBxILQkB+dBW0i2KlSVzGfeQ==",
+ "license": "ISC",
"dependencies": {
"@types/node": "^14.14.16"
}
},
"node_modules/koa-responsive-image-router/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ "version": "10.2.0",
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
},
"node_modules/koa-responsive-image-router/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-router": {
"version": "10.1.1",
- "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-10.1.1.tgz",
- "integrity": "sha512-z/OzxVjf5NyuNO3t9nJpx7e1oR3FSBAauiwXtMQu4ppcnuNZzTaQ4p21P8A6r2Es8uJJM339oc4oVW+qX7SqnQ==",
- "deprecated": "**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173",
+ "license": "MIT",
"dependencies": {
"debug": "^4.1.1",
"http-errors": "^1.7.3",
"koa-compose": "^4.1.0",
"methods": "^1.1.2",
"path-to-regexp": "^6.1.0"
},
"engines": {
"node": ">= 8.0.0"
}
},
"node_modules/koa-router/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-router/node_modules/http-errors": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-router/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-send": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz",
- "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.1.1",
"http-errors": "^1.7.3",
"resolve-path": "^1.4.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/koa-send/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-send/node_modules/http-errors": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-send/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa-static": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
- "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==",
+ "license": "MIT",
"dependencies": {
"debug": "^3.1.0",
"koa-send": "^5.0.0"
},
"engines": {
"node": ">= 7.6.0"
}
},
"node_modules/koa-static/node_modules/debug": {
"version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/koa/node_modules/http-errors": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa/node_modules/http-errors/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/koa/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/loader-runner": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=6.11.5"
}
},
"node_modules/loader-utils": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
},
"engines": {
"node": ">=8.9.0"
}
},
"node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "version": "5.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-locate": "^5.0.0"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/locreq": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locreq/-/locreq-3.0.0.tgz",
- "integrity": "sha512-5j8CNJl9uF7drtA7CInWbKzoFnC9KuDu1jX2KldaKL5MY+9nfP/8veyWtc5ep5156vMybNt3ACxK643IVcgKUQ==",
+ "license": "ISC",
"dependencies": {
"@types/node": "^16"
},
"engines": {
"node": ">=17.0.0"
}
},
"node_modules/locreq/node_modules/@types/node": {
- "version": "16.18.104",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.104.tgz",
- "integrity": "sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ=="
+ "version": "16.18.91",
+ "license": "MIT"
},
"node_modules/lodash": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "license": "MIT"
},
"node_modules/lodash.flattendeep": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/log-symbols": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-symbols/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/log-symbols/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/log-symbols/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/log-symbols/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/log-symbols/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/log-symbols/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/lower-case": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
+ "license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
}
},
"node_modules/lunr": {
"version": "2.3.9",
- "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
- "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="
+ "license": "MIT"
},
"node_modules/luxon": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz",
- "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "version": "4.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "semver": "^6.0.0"
+ "semver": "^7.5.3"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/make-dir/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.6.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/make-error": {
"version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/marked": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
- "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
+ "version": "12.0.1",
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/md5": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
- "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "license": "BSD-3-Clause",
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"node_modules/mdurl": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
+ "license": "MIT"
},
"node_modules/media-typer": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/meilisearch": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.41.0.tgz",
+ "integrity": "sha512-5KcGLxEXD7E+uNO7R68rCbGSHgCqeM3Q3RFFLSsN7ZrIgr8HPDXVAIlP4LHggAZfk0FkSzo8VSXifHCwa2k80g==",
+ "dependencies": {
+ "cross-fetch": "^3.1.6"
+ }
+ },
"node_modules/memory-fs": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
- "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
},
"engines": {
"node": ">=4.3.0 <5.0.0 || >=5.10"
}
},
"node_modules/memory-pager": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
- "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
+ "license": "MIT"
},
"node_modules/mensch": {
"version": "0.3.4",
- "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz",
- "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g=="
+ "license": "MIT"
},
"node_modules/merge": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
- "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ "license": "MIT"
},
"node_modules/merge-descriptors": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true,
+ "license": "MIT",
"peer": 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==",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/methods": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "version": "4.0.5",
+ "license": "MIT",
"dependencies": {
- "braces": "^3.0.3",
+ "braces": "^3.0.2",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/mime": {
"version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-response": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dev": true,
+ "version": "3.1.2",
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": "*"
}
},
"node_modules/minimist": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "version": "7.0.4",
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/mjml": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml/-/mjml-4.15.3.tgz",
- "integrity": "sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"mjml-cli": "4.15.3",
"mjml-core": "4.15.3",
"mjml-migrate": "4.15.3",
"mjml-preset-core": "4.15.3",
"mjml-validator": "4.15.3"
},
"bin": {
"mjml": "bin/mjml"
}
},
"node_modules/mjml-accordion": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-accordion/-/mjml-accordion-4.15.3.tgz",
- "integrity": "sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-body": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-body/-/mjml-body-4.15.3.tgz",
- "integrity": "sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-button": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-button/-/mjml-button-4.15.3.tgz",
- "integrity": "sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-carousel": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-carousel/-/mjml-carousel-4.15.3.tgz",
- "integrity": "sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-cli": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-cli/-/mjml-cli-4.15.3.tgz",
- "integrity": "sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"chokidar": "^3.0.0",
"glob": "^10.3.10",
"html-minifier": "^4.0.0",
"js-beautify": "^1.6.14",
"lodash": "^4.17.21",
"minimatch": "^9.0.3",
"mjml-core": "4.15.3",
"mjml-migrate": "4.15.3",
"mjml-parser-xml": "4.15.3",
"mjml-validator": "4.15.3",
"yargs": "^17.7.2"
},
"bin": {
"mjml-cli": "bin/mjml"
}
},
+ "node_modules/mjml-cli/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/mjml-cli/node_modules/foreground-child": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
- "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "version": "3.1.1",
+ "license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mjml-cli/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "10.3.12",
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
+ "jackspeak": "^2.3.6",
+ "minimatch": "^9.0.1",
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.10.2"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mjml-cli/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "9.0.4",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mjml-cli/node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mjml-column": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.15.3.tgz",
- "integrity": "sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-core": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.15.3.tgz",
- "integrity": "sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"cheerio": "1.0.0-rc.12",
"detect-node": "^2.0.4",
"html-minifier": "^4.0.0",
"js-beautify": "^1.6.14",
"juice": "^10.0.0",
"lodash": "^4.17.21",
"mjml-migrate": "4.15.3",
"mjml-parser-xml": "4.15.3",
"mjml-validator": "4.15.3"
}
},
"node_modules/mjml-divider": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-divider/-/mjml-divider-4.15.3.tgz",
- "integrity": "sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-group": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-group/-/mjml-group-4.15.3.tgz",
- "integrity": "sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head/-/mjml-head-4.15.3.tgz",
- "integrity": "sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-attributes": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-attributes/-/mjml-head-attributes-4.15.3.tgz",
- "integrity": "sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-breakpoint": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-breakpoint/-/mjml-head-breakpoint-4.15.3.tgz",
- "integrity": "sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-font": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-font/-/mjml-head-font-4.15.3.tgz",
- "integrity": "sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-html-attributes": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-html-attributes/-/mjml-head-html-attributes-4.15.3.tgz",
- "integrity": "sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-preview": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-preview/-/mjml-head-preview-4.15.3.tgz",
- "integrity": "sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-style": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-style/-/mjml-head-style-4.15.3.tgz",
- "integrity": "sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-head-title": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-head-title/-/mjml-head-title-4.15.3.tgz",
- "integrity": "sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-hero": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-hero/-/mjml-hero-4.15.3.tgz",
- "integrity": "sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-image": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-image/-/mjml-image-4.15.3.tgz",
- "integrity": "sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-migrate": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.15.3.tgz",
- "integrity": "sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"js-beautify": "^1.6.14",
"lodash": "^4.17.21",
"mjml-core": "4.15.3",
"mjml-parser-xml": "4.15.3",
"yargs": "^17.7.2"
},
"bin": {
"migrate": "lib/cli.js"
}
},
"node_modules/mjml-navbar": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-navbar/-/mjml-navbar-4.15.3.tgz",
- "integrity": "sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-parser-xml": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.15.3.tgz",
- "integrity": "sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"detect-node": "2.1.0",
"htmlparser2": "^9.1.0",
"lodash": "^4.17.15"
}
},
"node_modules/mjml-parser-xml/node_modules/entities": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/mjml-parser-xml/node_modules/htmlparser2": {
"version": "9.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
- "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.1.0",
"entities": "^4.5.0"
}
},
"node_modules/mjml-preset-core": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-preset-core/-/mjml-preset-core-4.15.3.tgz",
- "integrity": "sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"mjml-accordion": "4.15.3",
"mjml-body": "4.15.3",
"mjml-button": "4.15.3",
"mjml-carousel": "4.15.3",
"mjml-column": "4.15.3",
"mjml-divider": "4.15.3",
"mjml-group": "4.15.3",
"mjml-head": "4.15.3",
"mjml-head-attributes": "4.15.3",
"mjml-head-breakpoint": "4.15.3",
"mjml-head-font": "4.15.3",
"mjml-head-html-attributes": "4.15.3",
"mjml-head-preview": "4.15.3",
"mjml-head-style": "4.15.3",
"mjml-head-title": "4.15.3",
"mjml-hero": "4.15.3",
"mjml-image": "4.15.3",
"mjml-navbar": "4.15.3",
"mjml-raw": "4.15.3",
"mjml-section": "4.15.3",
"mjml-social": "4.15.3",
"mjml-spacer": "4.15.3",
"mjml-table": "4.15.3",
"mjml-text": "4.15.3",
"mjml-wrapper": "4.15.3"
}
},
"node_modules/mjml-raw": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-raw/-/mjml-raw-4.15.3.tgz",
- "integrity": "sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-section": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-section/-/mjml-section-4.15.3.tgz",
- "integrity": "sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-social": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-social/-/mjml-social-4.15.3.tgz",
- "integrity": "sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-spacer": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-spacer/-/mjml-spacer-4.15.3.tgz",
- "integrity": "sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-table": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-table/-/mjml-table-4.15.3.tgz",
- "integrity": "sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-text": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-text/-/mjml-text-4.15.3.tgz",
- "integrity": "sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3"
}
},
"node_modules/mjml-validator": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.15.3.tgz",
- "integrity": "sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9"
}
},
"node_modules/mjml-wrapper": {
"version": "4.15.3",
- "resolved": "https://registry.npmjs.org/mjml-wrapper/-/mjml-wrapper-4.15.3.tgz",
- "integrity": "sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.9",
"lodash": "^4.17.21",
"mjml-core": "4.15.3",
"mjml-section": "4.15.3"
}
},
"node_modules/mkdirp": {
"version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/mkdirp-classic": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ "license": "MIT"
},
"node_modules/mocha": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz",
- "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.3",
- "browser-stdout": "^1.3.1",
- "chokidar": "^3.5.3",
- "debug": "^4.3.5",
- "diff": "^5.2.0",
- "escape-string-regexp": "^4.0.0",
- "find-up": "^5.0.0",
- "glob": "^8.1.0",
- "he": "^1.2.0",
- "js-yaml": "^4.1.0",
- "log-symbols": "^4.1.0",
- "minimatch": "^5.1.6",
- "ms": "^2.1.3",
- "serialize-javascript": "^6.0.2",
- "strip-json-comments": "^3.1.1",
- "supports-color": "^8.1.1",
- "workerpool": "^6.5.1",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.9",
- "yargs-unparser": "^2.0.0"
+ "version": "10.4.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "4.1.1",
+ "browser-stdout": "1.3.1",
+ "chokidar": "3.5.3",
+ "debug": "4.3.4",
+ "diff": "5.0.0",
+ "escape-string-regexp": "4.0.0",
+ "find-up": "5.0.0",
+ "glob": "8.1.0",
+ "he": "1.2.0",
+ "js-yaml": "4.1.0",
+ "log-symbols": "4.1.0",
+ "minimatch": "5.0.1",
+ "ms": "2.1.3",
+ "serialize-javascript": "6.0.0",
+ "strip-json-comments": "3.1.1",
+ "supports-color": "8.1.1",
+ "workerpool": "6.2.1",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
+ "yargs-unparser": "2.0.0"
},
"bin": {
"_mocha": "bin/_mocha",
"mocha": "bin/mocha.js"
},
"engines": {
"node": ">= 14.0.0"
}
},
+ "node_modules/mocha/node_modules/argparse": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/mocha/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/chokidar": {
+ "version": "3.5.3",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/mocha/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==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
+ "node_modules/mocha/node_modules/diff": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mocha/node_modules/glob": {
+ "version": "8.1.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/mocha/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mocha/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "version": "5.0.1",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/mocha/node_modules/ms": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mocha/node_modules/p-limit": {
+ "version": "3.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/serialize-javascript": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
},
"node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/mocha/node_modules/yargs": {
"version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.4",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mongodb": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz",
- "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==",
+ "version": "6.5.0",
+ "license": "Apache-2.0",
"dependencies": {
"@mongodb-js/saslprep": "^1.1.5",
- "bson": "^6.7.0",
+ "bson": "^6.4.0",
"mongodb-connection-string-url": "^3.0.0"
},
"engines": {
"node": ">=16.20.1"
},
"peerDependencies": {
"@aws-sdk/credential-providers": "^3.188.0",
"@mongodb-js/zstd": "^1.1.0",
"gcp-metadata": "^5.2.0",
"kerberos": "^2.0.1",
"mongodb-client-encryption": ">=6.0.0 <7",
"snappy": "^7.2.2",
"socks": "^2.7.1"
},
"peerDependenciesMeta": {
"@aws-sdk/credential-providers": {
"optional": true
},
"@mongodb-js/zstd": {
"optional": true
},
"gcp-metadata": {
"optional": true
},
"kerberos": {
"optional": true
},
"mongodb-client-encryption": {
"optional": true
},
"snappy": {
"optional": true
},
"socks": {
"optional": true
}
}
},
"node_modules/mongodb-connection-string-url": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz",
- "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==",
+ "version": "3.0.0",
+ "license": "Apache-2.0",
"dependencies": {
"@types/whatwg-url": "^11.0.2",
"whatwg-url": "^13.0.0"
}
},
"node_modules/mri": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"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=="
+ "license": "MIT"
},
"node_modules/multiple-scripts-tmux": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/multiple-scripts-tmux/-/multiple-scripts-tmux-1.1.3.tgz",
- "integrity": "sha512-H40o7GColpIFqDVWLhpYP5j7jhTQOMls+22z5hdBx1RIPHHkQpiRtWc3X8LhUHKyMB2Pu84SjQYSEpnhBElkjw==",
+ "license": "ISC",
"dependencies": {
"@sealcode/ts-predicates": "^0.5.3",
"locreq": "^2.0.2",
"yargs": "^17.7.2"
},
"bin": {
"multiple-scripts-tmux": "lib/index.js"
}
},
"node_modules/multiple-scripts-tmux/node_modules/@sealcode/ts-predicates": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.5.3.tgz",
- "integrity": "sha512-EZI7e8EY8gI1pw2bKdevjl+fBJbcSlpNkCZ8XoEOV3cHakPujiT6M4l775RDkfxJSbLX7jhOBkhgPNDfmCpZbg=="
+ "license": "ISC"
},
"node_modules/multiple-scripts-tmux/node_modules/@types/node": {
"version": "14.18.63",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz",
- "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
+ "license": "MIT"
},
"node_modules/multiple-scripts-tmux/node_modules/locreq": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/locreq/-/locreq-2.4.1.tgz",
- "integrity": "sha512-Itfhlus87Q9GcQKEK5LXZngD5YpUbANC9mr5UFghLSBIg6gVVG21AWX45+JVyaqBxILQkB+dBW0i2KlSVzGfeQ==",
+ "license": "ISC",
"dependencies": {
"@types/node": "^14.14.16"
}
},
"node_modules/nanoid": {
"version": "2.1.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
- "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
+ "license": "MIT"
},
"node_modules/napi-build-utils": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
+ "license": "MIT"
},
"node_modules/natural-compare": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/negotiator": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/neo-async": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ "license": "MIT"
},
"node_modules/no-case": {
"version": "2.3.2",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "license": "MIT",
"dependencies": {
"lower-case": "^1.1.1"
}
},
"node_modules/node-abi": {
- "version": "3.65.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz",
- "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==",
+ "version": "3.56.0",
+ "license": "MIT",
"dependencies": {
"semver": "^7.3.5"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/node-abi/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/node-abi/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/node-abi/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/node-addon-api": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
- "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
+ "license": "MIT"
},
"node_modules/node-cache": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz",
- "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==",
+ "license": "MIT",
"dependencies": {
"clone": "2.x"
},
"engines": {
"node": ">= 8.0.0"
}
},
"node_modules/node-eta": {
"version": "0.9.0",
- "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.9.0.tgz",
- "integrity": "sha512-mTCTZk29tmX1OGfVkPt63H3c3VqXrI2Kvua98S7iUIB/Gbp0MNw05YtUomxQIxnnKMyRIIuY9izPcFixzhSBrA=="
+ "license": "MIT"
},
"node_modules/node-fetch": {
"version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/node-fetch-native": {
"version": "1.6.4",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
- "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ=="
+ "license": "MIT"
},
"node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "license": "MIT"
},
"node_modules/node-fetch/node_modules/webidl-conversions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ "license": "BSD-2-Clause"
},
"node_modules/node-fetch/node_modules/whatwg-url": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/node-preload": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
- "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"process-on-spawn": "^1.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
+ "version": "2.0.14",
+ "license": "MIT"
},
"node_modules/nodemailer": {
- "version": "6.9.14",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz",
- "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==",
+ "version": "6.9.13",
+ "license": "MIT-0",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/nodemon": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz",
- "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==",
+ "version": "3.1.0",
+ "license": "MIT",
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^4",
"ignore-by-default": "^1.0.1",
"minimatch": "^3.1.2",
"pstree.remy": "^1.1.8",
"semver": "^7.5.3",
"simple-update-notifier": "^2.0.0",
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.5"
},
"bin": {
"nodemon": "bin/nodemon.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/nodemon"
}
},
- "node_modules/nodemon/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==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/nodemon/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/nodemon/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
"node_modules/nodemon/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/nodemon/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/nopt": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
- "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
+ "version": "7.2.0",
+ "license": "ISC",
"dependencies": {
"abbrev": "^2.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/nth-check": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
},
"funding": {
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
"node_modules/nyc": {
"version": "15.1.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
- "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/load-nyc-config": "^1.0.0",
"@istanbuljs/schema": "^0.1.2",
"caching-transform": "^4.0.0",
"convert-source-map": "^1.7.0",
"decamelize": "^1.2.0",
"find-cache-dir": "^3.2.0",
"find-up": "^4.1.0",
"foreground-child": "^2.0.0",
"get-package-type": "^0.1.0",
"glob": "^7.1.6",
"istanbul-lib-coverage": "^3.0.0",
"istanbul-lib-hook": "^3.0.0",
"istanbul-lib-instrument": "^4.0.0",
"istanbul-lib-processinfo": "^2.0.2",
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.0.2",
"make-dir": "^3.0.0",
"node-preload": "^0.2.1",
"p-map": "^3.0.0",
"process-on-spawn": "^1.0.0",
"resolve-from": "^5.0.0",
"rimraf": "^3.0.0",
"signal-exit": "^3.0.2",
"spawn-wrap": "^2.0.0",
"test-exclude": "^6.0.0",
"yargs": "^15.0.2"
},
"bin": {
"nyc": "bin/nyc.js"
},
"engines": {
"node": ">=8.9"
}
},
"node_modules/nyc/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/nyc/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/nyc/node_modules/cliui": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"node_modules/nyc/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/nyc/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/nyc/node_modules/convert-source-map": {
"version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "node_modules/nyc/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nyc/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
+ "license": "MIT"
},
- "node_modules/nyc/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/nyc/node_modules/istanbul-lib-instrument": {
+ "version": "4.0.3",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "p-locate": "^4.1.0"
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/nyc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/nyc/node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
},
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
- "node_modules/nyc/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/nyc/node_modules/make-dir": {
+ "version": "3.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-try": "^2.0.0"
+ "semver": "^6.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/nyc/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/nyc/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/nyc/node_modules/wrap-ansi": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/nyc/node_modules/y18n": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/nyc/node_modules/yargs": {
"version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/nyc/node_modules/yargs-parser": {
"version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/object-fit-math": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/object-fit-math/-/object-fit-math-1.0.0.tgz",
- "integrity": "sha512-SqsfEKO6OoHR1K3r5E7JpJoloN6Wd5zPZr0QAo0DAI/zjpadPNcajoUhNvrGUcDHDaF8LEQKCgiiz0+p7lVGeg=="
+ "license": "MIT"
},
"node_modules/object-hash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
- "engines": {
- "node": ">= 0.4"
- },
+ "version": "1.13.1",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object-path": {
"version": "0.11.8",
- "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz",
- "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==",
+ "license": "MIT",
"engines": {
"node": ">= 10.12.0"
}
},
"node_modules/object.assign": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
"has-symbols": "^1.0.3",
"object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/ofetch": {
"version": "1.3.4",
- "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz",
- "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==",
+ "license": "MIT",
"dependencies": {
"destr": "^2.0.3",
"node-fetch-native": "^1.6.3",
"ufo": "^1.5.3"
}
},
"node_modules/on-finished": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/only": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
- "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ=="
+ "version": "0.0.2"
},
"node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "version": "0.9.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
+ "type-check": "^0.4.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "version": "2.3.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "yocto-queue": "^0.1.0"
+ "p-try": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "version": "4.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-limit": "^3.0.2"
+ "p-limit": "^2.2.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/p-map": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"aggregate-error": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/package-hash": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
- "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"graceful-fs": "^4.1.15",
"hasha": "^5.0.0",
"lodash.flattendeep": "^4.4.0",
"release-zalgo": "^1.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/package-json-from-dist": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
- "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw=="
- },
"node_modules/param-case": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
- "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "license": "MIT",
"dependencies": {
"no-case": "^2.2.0"
}
},
"node_modules/parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/parse-ms": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
- "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/parse-srcset": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
- "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q=="
+ "license": "MIT"
},
"node_modules/parse5": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "license": "MIT",
"dependencies": {
"entities": "^4.4.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5-htmlparser2-tree-adapter": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "license": "MIT",
"dependencies": {
"domhandler": "^5.0.2",
"parse5": "^7.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5/node_modules/entities": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/parseurl": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ "license": "MIT"
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ "license": "MIT"
},
"node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "version": "1.10.2",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ "version": "10.2.2",
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
},
"node_modules/path-to-regexp": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz",
- "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw=="
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="
},
"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==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pick-port": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pick-port/-/pick-port-2.1.0.tgz",
- "integrity": "sha512-nqdK+0cmJLGMHKZCNh6PfA/ZeIhHYKSlLLwyfH/IFQVv9SqwNUdbm+08olnd+PbmLqrHk8Twhq6yO9viqOGkkw==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
"engines": {
"node": ">=18"
}
},
"node_modules/picocolors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ "version": "1.0.0",
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/playwright": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz",
- "integrity": "sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==",
+ "version": "1.44.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.45.3"
+ "playwright-core": "1.44.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=16"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz",
- "integrity": "sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==",
+ "version": "1.44.1",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
- "node": ">=18"
- }
- },
- "node_modules/playwright/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=16"
}
},
"node_modules/possible-typed-array-names": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/postcss": {
"version": "7.0.39",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
- "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "license": "MIT",
"dependencies": {
"picocolors": "^0.2.1",
"source-map": "^0.6.1"
},
"engines": {
"node": ">=6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
}
},
"node_modules/postcss/node_modules/picocolors": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
- "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
+ "license": "ISC"
},
"node_modules/prebuild-install": {
"version": "7.1.2",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
- "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
+ "license": "MIT",
"dependencies": {
"detect-libc": "^2.0.0",
"expand-template": "^2.0.3",
"github-from-package": "0.0.0",
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
"napi-build-utils": "^1.0.1",
"node-abi": "^3.3.0",
"pump": "^3.0.0",
"rc": "^1.2.7",
"simple-get": "^4.0.0",
"tar-fs": "^2.0.0",
"tunnel-agent": "^0.6.0"
},
"bin": {
"prebuild-install": "bin.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/prebuild-install/node_modules/readable-stream": {
"version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/prebuild-install/node_modules/tar-fs": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "license": "MIT",
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.1.4"
}
},
"node_modules/prebuild-install/node_modules/tar-stream": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "license": "MIT",
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"engines": {
"node": ">=6"
}
},
"node_modules/prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/prettier": {
"version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "license": "MIT",
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/prettier-linter-helpers": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-diff": "^1.1.2"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/pretty-ms": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
- "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
+ "license": "MIT",
"dependencies": {
"parse-ms": "^2.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/process-on-spawn": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
- "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fromentries": "^1.2.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/progress": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/prompts": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
"dependencies": {
"kleur": "^3.0.3",
"sisteransi": "^1.0.5"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/proto-list": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA=="
+ "license": "ISC"
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/prr": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pstree.remy": {
"version": "1.1.8",
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
+ "license": "MIT"
},
"node_modules/pump": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/punycode": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/qs": {
- "version": "6.12.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz",
- "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dependencies": {
"side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/queue-microtask": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/queue-tick": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
- "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
+ "license": "MIT"
},
"node_modules/randombytes": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "^5.1.0"
}
},
"node_modules/raw-body": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/rc": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"bin": {
"rc": "cli.js"
}
},
"node_modules/rc/node_modules/strip-json-comments": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/readable-stream": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/readable-stream/node_modules/isarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/readable-stream/node_modules/safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/readdirp": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/rechoir": {
"version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dependencies": {
"resolve": "^1.1.6"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/recursive-readdir": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
- "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
+ "license": "MIT",
"dependencies": {
"minimatch": "^3.0.5"
},
"engines": {
"node": ">=6.0.0"
}
},
- "node_modules/recursive-readdir/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==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/recursive-readdir/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/regenerator-runtime": {
"version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ "license": "MIT"
},
"node_modules/regexp.prototype.flags": {
"version": "1.5.2",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
- "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.6",
"define-properties": "^1.2.1",
"es-errors": "^1.3.0",
"set-function-name": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/relateurl": {
"version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/release-zalgo": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
- "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"es6-error": "^4.0.1"
},
"engines": {
"node": ">=4"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-main-filename": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/resolve": {
"version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/resolve-path": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz",
- "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==",
+ "license": "MIT",
"dependencies": {
"http-errors": "~1.6.2",
"path-is-absolute": "1.0.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/resolve-path/node_modules/depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/resolve-path/node_modules/http-errors": {
"version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "license": "MIT",
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": ">= 1.4.0 < 2"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/resolve-path/node_modules/inherits": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ "license": "ISC"
},
"node_modules/resolve-path/node_modules/setprototypeof": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ "license": "ISC"
},
"node_modules/resolve-path/node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rimraf/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/rimraf/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "node_modules/rimraf/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/rimraf": {
+ "version": "3.0.2",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "glob": "^7.1.3"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/safe-array-concat": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"get-intrinsic": "^1.2.4",
"has-symbols": "^1.0.3",
"isarray": "^2.0.5"
},
"engines": {
"node": ">=0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/safe-regex-test": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
"is-regex": "^1.1.4"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "license": "MIT"
},
"node_modules/sanitize-html": {
"version": "1.27.5",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz",
- "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==",
+ "license": "MIT",
"dependencies": {
"htmlparser2": "^4.1.0",
"lodash": "^4.17.15",
"parse-srcset": "^1.0.2",
"postcss": "^7.0.27"
}
},
"node_modules/sanitize-html/node_modules/dom-serializer": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/dom-serializer/node_modules/domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/domhandler": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
- "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.0.1"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/domutils": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/domutils/node_modules/domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/entities": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/sanitize-html/node_modules/htmlparser2": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz",
- "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^3.0.0",
"domutils": "^2.0.0",
"entities": "^2.0.0"
}
},
"node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
"node_modules/sealious": {
- "version": "0.19.21",
- "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.19.21.tgz",
- "integrity": "sha512-2LVVD30q9X5MhgmpKnGMQ4351I0awr243DzSFy6sk3ZCsfPo63TZ/5vZbBwhK84Lf+BPRbP9pCkz+m2BdG8AHQ==",
+ "version": "0.19.36",
+ "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.19.36.tgz",
+ "integrity": "sha512-qpRISkbSxqB0kYP/WCRui7YyYafEb7GAnw7UerNem1I3mGhk6Wxq8tipfO3l6Kgge6kmze4gQkewjlQ+PyD3OQ==",
"dependencies": {
"@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.1",
"@sealcode/ts-predicates": "^0.4.3",
"@types/bluebird": "^3.5.30",
"@types/boom": "^7.3.0",
"@types/clone": "^0.1.30",
"@types/color": "^3.0.1",
"@types/color-hash": "^1.0.0",
"@types/escape-html": "^1.0.0",
"@types/koa": "^2.11.6",
"@types/koa-mount": "^4.0.0",
"@types/koa-qs": "^2.0.0",
"@types/koa-send": "^4.1.2",
"@types/koa-static": "^4.0.1",
"@types/mjml": "^4.0.4",
"@types/mongodb": "^3.5.20",
"@types/node": "^20.0",
"@types/nodemailer": "^6.4.0",
"@types/object-hash": "^1.3.3",
"@types/sanitize-html": "^2.11.0",
"@types/shortid": "0.0.29",
"@types/uuid": "^8.3.0",
"bluebird": "^3.4.6",
"boom": "^7.3.0",
"chalk": "^4.1.0",
"clone": "^1.0.2",
"color": "latest",
"color-hash": "^1.0.3",
"commonmark": "^0.31.0",
"cron": "^2.1.0",
"csv-stringify": "^6.4.5",
"deepmerge": "^4.2.2",
"dot-prop": "^8.0.2",
"emittery": "0.8.1",
"escape-html": "^1.0.3",
"get-port": "^5.1.1",
"koa": "^2.13.0",
"koa-body": "^4.2.0",
"koa-mount": "^4.0.0",
"koa-qs": "^3.0.0",
"koa-send": "^5.0.1",
"koa-static": "^5.0.0",
"locreq": "^3.0.0",
"mjml": "^4.2.0",
"mongodb": "^6.5.0",
"nodemailer": "^6.4.6",
"object-hash": "^2.0.3",
"pretty-ms": "^7.0.0",
"qs": "^6.12.0",
"sanitize-html": "^1.13.0",
"shortid": "^2.2.6",
"typedoc": "^0.17.8",
"uuid": "^8.3.2"
},
"engines": {
"node": ">=21.0"
}
},
"node_modules/sealious/node_modules/@sealcode/ts-predicates": {
"version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
- "integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A=="
+ "license": "ISC"
+ },
+ "node_modules/sealious/node_modules/@types/object-hash": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz",
+ "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==",
+ "license": "MIT"
},
"node_modules/sealious/node_modules/@types/uuid": {
"version": "8.3.4",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
- "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw=="
+ "license": "MIT"
},
"node_modules/sealious/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/sealious/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/sealious/node_modules/clone": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "license": "MIT",
"engines": {
"node": ">=0.8"
}
},
"node_modules/sealious/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/sealious/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "license": "MIT"
},
"node_modules/sealious/node_modules/get-port": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
- "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/sealious/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/sealious/node_modules/object-hash": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
- "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/sealious/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/sealious/node_modules/uuid": {
"version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/serialize-javascript": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"randombytes": "^2.1.0"
}
},
"node_modules/set-blocking": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/set-function-length": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/set-function-name": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"functions-have-names": "^1.2.3",
"has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "license": "ISC"
},
"node_modules/sharp": {
"version": "0.32.6",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
- "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
"hasInstallScript": true,
+ "license": "Apache-2.0",
"dependencies": {
"color": "^4.2.3",
"detect-libc": "^2.0.2",
"node-addon-api": "^6.1.0",
"prebuild-install": "^7.1.1",
"semver": "^7.5.4",
"simple-get": "^4.0.1",
"tar-fs": "^3.0.4",
"tunnel-agent": "^0.6.0"
},
"engines": {
"node": ">=14.15.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
+ "node_modules/sharp/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/sharp/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/sharp/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/shell-exec": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.1.2.tgz",
- "integrity": "sha512-v2NWVDP0ws+S7miKy2oSpJ/OuL6NKuMosPNUZLDWFBlMnBtuoZxZOwxpQJwhsFZgMb+r7frpDTT8p4OSnhkpsg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/shelljs": {
"version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "license": "BSD-3-Clause",
"dependencies": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
"rechoir": "^0.6.2"
},
"bin": {
"shjs": "bin/shjs"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/shelljs/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==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/shelljs/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/shelljs/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/shortid": {
"version": "2.2.16",
- "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
- "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"dependencies": {
"nanoid": "^2.1.0"
}
},
"node_modules/side-channel": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/simple-concat": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/simple-get": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"node_modules/simple-swizzle": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.3.1"
}
},
"node_modules/simple-update-notifier": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
- "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+ "license": "MIT",
"dependencies": {
"semver": "^7.5.3"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/simple-update-notifier/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/simple-update-notifier/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
+ "node_modules/simple-update-notifier/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/sisteransi": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
+ "license": "MIT"
},
"node_modules/slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/slick": {
"version": "1.12.2",
- "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz",
- "integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==",
+ "license": "MIT (http://mootools.net/license.txt)",
"engines": {
"node": "*"
}
},
+ "node_modules/slug": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/slug/-/slug-9.1.0.tgz",
+ "integrity": "sha512-ioOsCfzQSu+D6NZ8XMCR8IW9FgvF8W7Xzz56hBkB/ALvNaWeBs2MUvvPugq3GCrxfHPFeK6hAxGkY/WLnfX2Lg==",
+ "license": "MIT",
+ "bin": {
+ "slug": "cli.js"
+ }
+ },
"node_modules/smartcrop": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/smartcrop/-/smartcrop-2.0.5.tgz",
- "integrity": "sha512-aXoHTM8XlC51g96kgZkYxZ2mx09/ibOrIVLiUNOFozV/MHmFSgEr1/5CKVBoFD5vd+re2wSy0xra21CyjRITzA=="
+ "license": "MIT"
},
"node_modules/smartcrop-sharp": {
"version": "2.0.8",
- "resolved": "https://registry.npmjs.org/smartcrop-sharp/-/smartcrop-sharp-2.0.8.tgz",
- "integrity": "sha512-0rpK/ddGAx7ou6YqqvJRkw/xyR4qgqmJeUQ2EWDnN3hSuJUk4InPGE6Sa45+TYOfGEEQJrchjF1ujBPMhoe9iA==",
+ "license": "MIT",
"dependencies": {
"smartcrop": "^2.0.5"
},
"peerDependencies": {
"sharp": "^0.32.5"
}
},
"node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-support": {
"version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"node_modules/sparse-bitfield": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
- "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "license": "MIT",
"dependencies": {
"memory-pager": "^1.0.2"
}
},
"node_modules/spawn-wrap": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz",
- "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"foreground-child": "^2.0.0",
"is-windows": "^1.0.2",
"make-dir": "^3.0.0",
"rimraf": "^3.0.0",
"signal-exit": "^3.0.2",
"which": "^2.0.1"
},
"engines": {
"node": ">=8"
}
},
+ "node_modules/spawn-wrap/node_modules/make-dir": {
+ "version": "3.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/statuses": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/stimulus": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/stimulus/-/stimulus-3.2.2.tgz",
- "integrity": "sha512-sEGK0ofeMuW+B2oPLTigCqxl47P9vRfZxeqzY5Hk1u0QPWS8DZhW+VOEEyngtzdHM+MutXKGBT8BkUKoA0060Q==",
+ "license": "MIT",
"dependencies": {
"@hotwired/stimulus": "^3.2.2",
"@hotwired/stimulus-webpack-helpers": "^1.0.0"
}
},
"node_modules/streamx": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
- "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
+ "version": "2.16.1",
+ "license": "MIT",
"dependencies": {
- "fast-fifo": "^1.3.2",
- "queue-tick": "^1.0.1",
- "text-decoder": "^1.1.0"
+ "fast-fifo": "^1.1.0",
+ "queue-tick": "^1.0.1"
},
"optionalDependencies": {
"bare-events": "^2.2.0"
}
},
"node_modules/string_decoder": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "license": "MIT"
},
"node_modules/string-width": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/string.prototype.repeat": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
- "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
}
},
"node_modules/string.prototype.trim": {
"version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
"es-abstract": "^1.23.0",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimend": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-bom": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/tapable": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
- "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/tar-fs": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
- "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
+ "version": "3.0.5",
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0",
"tar-stream": "^3.1.5"
},
"optionalDependencies": {
"bare-fs": "^2.1.1",
"bare-path": "^2.1.0"
}
},
"node_modules/tar-stream": {
"version": "3.1.7",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
- "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
"dependencies": {
"b4a": "^1.6.4",
"fast-fifo": "^1.2.0",
"streamx": "^2.15.0"
}
},
"node_modules/tempstream": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/tempstream/-/tempstream-0.4.2.tgz",
- "integrity": "sha512-JPh9vADuLP+yMweAmJCyaCtZ9pgFFLZmgleXjG1zXbp3szmvvgeRJN4CjUbvZll8rXTV8bRWgnH7Tr7QBQh3xQ==",
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/tempstream/-/tempstream-0.4.5.tgz",
+ "integrity": "sha512-SplQcin+UyBivqeKpfCtQmKntrmeY0hypId6y5bZjAiYkQRUDybAJq/xFyn5AohNL9NQS19HSSYVhRsyy66fvQ==",
"dependencies": {
- "classnames": "^2.5.1"
+ "classnames": "^2.5.1",
+ "escape-goat": "^4.0.0"
}
},
"node_modules/terser": {
- "version": "5.31.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz",
- "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==",
+ "version": "5.29.2",
"dev": true,
+ "license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
"bin": {
"terser": "bin/terser"
},
"engines": {
"node": ">=10"
}
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.10",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
- "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.20",
"jest-worker": "^27.4.5",
"schema-utils": "^3.1.1",
"serialize-javascript": "^6.0.1",
"terser": "^5.26.0"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.1.0"
},
"peerDependenciesMeta": {
"@swc/core": {
"optional": true
},
"esbuild": {
"optional": true
},
"uglify-js": {
"optional": true
}
}
},
"node_modules/test-exclude": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
"minimatch": "^3.0.4"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/test-exclude/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/test-exclude/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/text-decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz",
- "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==",
- "dependencies": {
- "b4a": "^1.6.4"
- }
- },
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/throttle-debounce": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
"integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==",
"engines": {
"node": ">=12.22"
}
},
"node_modules/tiny-glob": {
"version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
+ "license": "MIT",
"dependencies": {
"globalyzer": "0.1.0",
"globrex": "^0.1.2"
}
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"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==",
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/toidentifier": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
},
"node_modules/touch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
- "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
+ "version": "3.1.0",
+ "license": "ISC",
+ "dependencies": {
+ "nopt": "~1.0.10"
+ },
"bin": {
"nodetouch": "bin/nodetouch.js"
}
},
+ "node_modules/touch/node_modules/abbrev": {
+ "version": "1.1.1",
+ "license": "ISC"
+ },
+ "node_modules/touch/node_modules/nopt": {
+ "version": "1.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ }
+ },
"node_modules/tr46": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
- "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/ts-api-utils": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
- "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
"peerDependencies": {
"typescript": ">=4.2.0"
}
},
"node_modules/ts-loader": {
"version": "8.4.0",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz",
- "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"enhanced-resolve": "^4.0.0",
"loader-utils": "^2.0.0",
"micromatch": "^4.0.0",
"semver": "^7.3.4"
},
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"typescript": "*",
"webpack": "*"
}
},
"node_modules/ts-loader/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/ts-loader/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/ts-loader/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/ts-loader/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ts-loader/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/ts-loader/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.6.0",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/ts-loader/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
+ "node_modules/ts-loader/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/ts-morph": {
"version": "19.0.0",
- "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-19.0.0.tgz",
- "integrity": "sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==",
+ "license": "MIT",
"dependencies": {
"@ts-morph/common": "~0.20.0",
"code-block-writer": "^12.0.0"
}
},
"node_modules/ts-node": {
"version": "10.9.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
- "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
"@tsconfig/node12": "^1.0.7",
"@tsconfig/node14": "^1.0.0",
"@tsconfig/node16": "^1.0.2",
"acorn": "^8.4.1",
"acorn-walk": "^8.1.1",
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"v8-compile-cache-lib": "^3.0.1",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-cwd": "dist/bin-cwd.js",
"ts-node-esm": "dist/bin-esm.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
"peerDependencies": {
"@swc/core": ">=1.2.50",
"@swc/wasm": ">=1.2.50",
"@types/node": "*",
"typescript": ">=2.7"
},
"peerDependenciesMeta": {
"@swc/core": {
"optional": true
},
"@swc/wasm": {
"optional": true
}
}
},
- "node_modules/ts-node/node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/tsscmp": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
- "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6.x"
}
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "license": "Apache-2.0",
"dependencies": {
"safe-buffer": "^5.0.1"
},
"engines": {
"node": "*"
}
},
"node_modules/turndown": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz",
- "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==",
+ "license": "MIT",
"dependencies": {
"@mixmark-io/domino": "^2.2.0"
}
},
+ "node_modules/turndown-plugin-gfm": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.2.tgz",
+ "integrity": "sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg=="
+ },
"node_modules/type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/type-fest": {
"version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=8"
}
},
"node_modules/type-is": {
"version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/typed-array-buffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typed-array-byte-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-proto": "^1.0.3",
"is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typed-array-byte-offset": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-proto": "^1.0.3",
"is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typed-array-length": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
- "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-proto": "^1.0.3",
"is-typed-array": "^1.1.13",
"possible-typed-array-names": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-typedarray": "^1.0.0"
}
},
"node_modules/typedoc": {
"version": "0.17.8",
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.8.tgz",
- "integrity": "sha512-/OyrHCJ8jtzu+QZ+771YaxQ9s4g5Z3XsQE3Ma7q+BL392xxBn4UMvvCdVnqKC2T/dz03/VXSLVKOP3lHmDdc/w==",
+ "license": "Apache-2.0",
"dependencies": {
"fs-extra": "^8.1.0",
"handlebars": "^4.7.6",
"highlight.js": "^10.0.0",
"lodash": "^4.17.15",
"lunr": "^2.3.8",
"marked": "1.0.0",
"minimatch": "^3.0.0",
"progress": "^2.0.3",
"shelljs": "^0.8.4",
"typedoc-default-themes": "^0.10.2"
},
"bin": {
"typedoc": "bin/typedoc"
},
"engines": {
"node": ">= 8.0.0"
},
"peerDependencies": {
"typescript": ">=3.8.3"
}
},
"node_modules/typedoc-default-themes": {
"version": "0.10.2",
- "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz",
- "integrity": "sha512-zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg==",
+ "license": "Apache-2.0",
"dependencies": {
"lunr": "^2.3.8"
},
"engines": {
"node": ">= 8"
}
},
- "node_modules/typedoc/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==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/typedoc/node_modules/marked": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz",
- "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked"
},
"engines": {
"node": ">= 8.16.2"
}
},
- "node_modules/typedoc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
+ "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
+ "node_modules/typo-js": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.4.tgz",
+ "integrity": "sha512-Oy/k+tFle5NAA3J/yrrYGfvEnPVrDZ8s8/WCwjUE75k331QyKIsFss7byQ/PzBmXLY6h1moRnZbnaxWBe3I3CA==",
+ "license": "BSD-3-Clause"
+ },
"node_modules/ufo": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
- "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="
+ "version": "1.5.3",
+ "license": "MIT"
},
"node_modules/uglify-js": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz",
- "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==",
+ "version": "3.17.4",
+ "license": "BSD-2-Clause",
"bin": {
"uglifyjs": "bin/uglifyjs"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/unbox-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
"has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/undefsafe": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
- "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
+ "license": "MIT"
},
"node_modules/undici-types": {
"version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ "license": "MIT"
},
"node_modules/universalify": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "version": "1.0.13",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
},
"bin": {
"update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
}
},
"node_modules/upper-case": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
- "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA=="
+ "license": "MIT"
},
"node_modules/uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "license": "MIT"
},
"node_modules/uuid": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/valid-data-url": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz",
- "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/vary": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/watchpack": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
- "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/web-resource-inliner": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz",
- "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==",
+ "license": "MIT",
"dependencies": {
"ansi-colors": "^4.1.1",
"escape-goat": "^3.0.0",
"htmlparser2": "^5.0.0",
"mime": "^2.4.6",
"node-fetch": "^2.6.0",
"valid-data-url": "^3.0.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/web-resource-inliner/node_modules/dom-serializer": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/dom-serializer/node_modules/domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domhandler": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
- "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.0.1"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domutils": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domutils/node_modules/domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/entities": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/escape-goat": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz",
- "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/web-resource-inliner/node_modules/htmlparser2": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz",
- "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^3.3.0",
"domutils": "^2.4.2",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/fb55/htmlparser2?sponsor=1"
}
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.91.0",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
"@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
- "acorn-import-attributes": "^1.9.5",
+ "acorn-import-assertions": "^1.9.0",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.16.0",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.10",
"watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"bin": {
"webpack": "bin/webpack.js"
},
"engines": {
"node": ">=10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependenciesMeta": {
"webpack-cli": {
"optional": true
}
}
},
"node_modules/webpack-sources": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=10.13.0"
}
},
- "node_modules/webpack/node_modules/enhanced-resolve": {
- "version": "5.17.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
- "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "node_modules/webpack/node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
+ "peerDependencies": {
+ "acorn": "^8"
}
},
- "node_modules/webpack/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/webpack/node_modules/enhanced-resolve": {
+ "version": "5.16.0",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
},
"engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/webpack/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
+ "node": ">=10.13.0"
}
},
"node_modules/webpack/node_modules/tapable": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/whatwg-url": {
"version": "13.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz",
- "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==",
+ "license": "MIT",
"dependencies": {
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
},
"engines": {
"node": ">=16"
}
},
"node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/which-boxed-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "license": "MIT",
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
"is-number-object": "^1.0.4",
"is-string": "^1.0.5",
"is-symbol": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/which-module": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
- "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/which-typed-array": {
"version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/wordwrap": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
+ "license": "MIT"
},
"node_modules/workerpool": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
- "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
- "dev": true
+ "version": "6.2.1",
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/wrap-ansi-cjs/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "license": "MIT"
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/wrap-ansi/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/wrap-ansi/node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "license": "MIT"
},
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
"signal-exit": "^3.0.2",
"typedarray-to-buffer": "^3.1.5"
}
},
"node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "version": "8.16.0",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/xxhashjs": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
- "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
+ "license": "MIT",
"dependencies": {
"cuint": "^0.2.2"
}
},
"node_modules/y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yallist": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ "license": "ISC"
},
"node_modules/yargs": {
"version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
"yargs-parser": "^21.1.1"
},
"engines": {
"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==",
- "dev": true,
+ "version": "21.1.1",
+ "license": "ISC",
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-unparser": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^6.0.0",
"decamelize": "^4.0.0",
"flat": "^5.0.2",
"is-plain-obj": "^2.1.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/yargs-unparser/node_modules/camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yargs-unparser/node_modules/decamelize": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/ylru": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz",
- "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==",
+ "version": "1.3.2",
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/yn": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
}
}
}
diff --git a/package.json b/package.json
index e90d945..ae6dac4 100644
--- a/package.json
+++ b/package.json
@@ -1,95 +1,139 @@
{
"name": "sealious-app",
"version": "0.1.0",
"description": "",
"main": "./dist/back/index.js",
"type": "module",
"scripts": {
"start": "docker compose up -d db && node .",
"start-watch": "SEALIOUS_PORT=$SEALIOUS_PORT SEALIOUS_BASE_URL=$SEALIOUS_BASE_URL nodemon --enable-source-maps --ignore ./uploaded_files --ignore ./cache .",
"typecheck:back": "tsc --noEmit --target es6 --lib es2021,dom -p tsconfig-back.json",
"typecheck:front": "tsc --noEmit --target es6 --lib es2021,dom -p tsconfig-front.json",
"typecheck": "npm run typecheck:back && npm run typecheck:front",
"prewatch": "rm -rf dist/* && npm run build --ignore-scripts",
"build": "rm -rf dist && sealgen build ",
"postbuild": "npm run typecheck && npm run lint",
"watch": "multiple-scripts-tmux -p watch",
"reset-db": "docker compose down -v && docker compose up -d",
"install-test-deps": "npx playwright install firefox && cd webhint && npm install && ./use-fork.sh",
"pretest": "npm run build && docker compose up -d",
"test": "node test.cjs",
"full-test": "WITH_WEBHINT=TRUE npm run test",
"prepare": "npm run build && npm run install-test-deps",
"lint": "eslint src",
"lint-report": "npm run --silent lint -- --format json > .eslint-result.json",
"preinstrument": "npm run build --ignore-scripts && rm -fr .xunit coverage dist-instrumented",
"instrument": "npx nyc instrument --exclude \"\" dist dist-instrumented",
"pretest-reports": "npm run instrument",
"test-reports": "npx nyc --exclude \"\" ./node_modules/.bin/mocha --recursive --timeout=10000 --require source-map-support/register 'dist-instrumented/**/*.test.js' --exit && nyc report --reporter cobertura --exclude \"\"",
"precover-html": "rm -rf coverate/lcov-report",
"cover-html": "npm run test-reports && nyc report --reporter lcov --exclude \"\" && xdg-open coverage/lcov-report/index.html"
},
"tmux-scripts": {
"watch": [
"npm run typecheck:back -- --watch",
"npx sealgen build --watch",
"npm run typecheck:front -- --watch",
"npm run start-watch"
]
},
+ "sealgen": {
+ "styleDirs": [
+ "node_modules/@sealcode/jdd-editor/assets"
+ ],
+ "controllerDirs": [
+ "node_modules/@sealcode/jdd-editor/src/controllers"
+ ],
+ "copyToPublic": [
+ {
+ "from": "node_modules/@sealcode/jdd-editor/assets/icons",
+ "to": "dist/jdd-page/icons"
+ },
+ {
+ "from": "node_modules/@sealcode/simplemde/dist/simplemde.min.css",
+ "to": "dist/simplemde.min.css"
+ },
+ {
+ "from": "node_modules/@sealcode/simplemde/dist/simplemde.min.js",
+ "to": "dist/simplemde.min.js"
+ },
+ {
+ "from": "node_modules/@sealcode/sealcodemirror/lib/codemirror.js",
+ "to": "dist/codemirror.js"
+ },
+ {
+ "from": "node_modules/@sealcode/sealcodemirror/lib/codemirror.css",
+ "to": "dist/codemirror.css"
+ },
+ {
+ "from": "node_modules/@sealcode/sealcodemirror/mode/javascript/javascript.js",
+ "to": "dist/codemirror-javascript-mode.js"
+ }
+ ]
+ },
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.12.10",
"@hotwired/turbo": "^8.0.2",
"@koa/router": "^12.0.1",
+ "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2",
- "@sealcode/jdd": "^0.5.1",
- "@sealcode/sealgen": "^0.15.47",
+ "@sealcode/jdd": "^0.6.5",
+ "@sealcode/jdd-editor": "^0.1.5",
+ "@sealcode/sealgen": "^0.17.5",
+ "@sealcode/simplemde": "^1.12.0-beta12",
"@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0",
"@types/leaflet": "^1.9.8",
- "@types/turndown": "^5.0.4",
+ "@types/object-hash": "^3.0.6",
+ "@types/simplemde": "^1.11.11",
+ "dotenv": "^16.4.5",
"escape-goat": "^4.0.0",
"get-port": "^7.0.0",
"js-convert-case": "^4.2.0",
- "koa-responsive-image-router": "^0.2.29",
+ "koa-responsive-image-router": "^0.2.37",
"locreq": "^3.0.0",
+ "meilisearch": "^0.41.0",
"multiple-scripts-tmux": "^1.0.4",
"nodemon": "^3.0.1",
"object-path": "^0.11.8",
"qs": "^6.12.0",
- "sealious": "^0.19.9",
+ "sealious": "^0.19.36",
+ "slug": "^9.1.0",
"stimulus": "^3.2.2",
- "tempstream": "^0.4.1",
+ "tempstream": "^0.4.5",
"throttle-debounce": "^5.0.2",
"turndown": "^7.2.0"
},
"devDependencies": {
"@playwright/test": "^1.44.1",
"@sealcode/ansi-html-stream": "^1.0.1",
"@types/koa__router": "^12.0.4",
"@types/node": "^20.8.4",
"@types/object-path": "^0.11.4",
+ "@types/slug": "^5.0.9",
"@types/tedious": "^4.0.7",
"@types/throttle-debounce": "^5.0.2",
+ "@types/turndown": "^5.0.4",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "7.4",
"@typescript-eslint/parser": "7.4",
"axios": "^1.6.2",
+ "chalk": "^5.3.0",
"eslint": "8.57",
"eslint-config-prettier": "^7.2.0",
"eslint-plugin-prettier": "^3.3.1",
"kill-port": "^1.6.1",
"mocha": "^10.4.0",
"mri": "^1.2.0",
"nyc": "^15.1.0",
"prettier": "^2.2.1",
"ts-loader": "^8.0.14",
"ts-node": "^10.9.2",
- "typescript": "^4.7"
+ "typescript": "^5.6"
},
"engines": {
"node": ">=21.0.0"
}
}
diff --git a/src/back/app.ts b/src/back/app.ts
index a75b384..7c87dd6 100644
--- a/src/back/app.ts
+++ b/src/back/app.ts
@@ -1,85 +1,106 @@
import _locreq from "locreq";
+import type { Context } from "koa";
+import type { FlatTemplatable } from "tempstream";
import type { Context as SealiousContext } from "sealious";
import { App, LoggerMailer, SMTPMailer } from "sealious";
import type { LoggerLevel } from "sealious/@types/src/app/logger.js";
import { collections } from "./collections/collections.js";
import {
BASE_URL,
MAILCATCHER_HOST,
MAILCATCHER_SMTP_PORT,
MAILER,
MONGO_HOST,
MONGO_PORT,
PORT,
UPLOADS_FS_DIR,
} from "./config.js";
import ADMIN_CREDENTIALS from "./default-admin-credentials.js";
import { TheFileManager } from "./file-manager.js";
import { module_dirname } from "./utils/module_dirname.js";
const locreq = _locreq(module_dirname(import.meta.url));
declare module "koa" {
interface BaseContext {
$context: SealiousContext;
$app: TheApp;
$body: Record<string, unknown>;
params: Record<string, string | undefined>;
}
}
+declare module "@sealcode/sealgen" {
+ interface HTMLOptions {
+ preserveScroll?: boolean;
+ morphing?: boolean;
+ navbar?: (ctx: Context) => FlatTemplatable;
+ autoRefreshCSS?: boolean;
+ disableCopyEvent?: boolean;
+ language?: string;
+ showBanner?: boolean;
+ canHaveStreams?: boolean;
+ animateTitle?: boolean;
+ bodyClasses?: string[];
+ showFooter: boolean;
+ showBottomNavbar: boolean;
+ loadHamburgerMenu: boolean;
+ loadSearchModal: boolean;
+ }
+}
+
export default class TheApp extends App {
FileManager = TheFileManager;
config = {
upload_path: UPLOADS_FS_DIR,
datastore_mongo: {
host: MONGO_HOST,
port: MONGO_PORT,
db_name: "sealious-app",
},
email: {
from_address: "sealious-app@example.com",
from_name: "sealious-app app",
},
logger: {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
level: "info" as LoggerLevel,
},
"www-server": {
port: PORT,
},
core: {
environment: <const>"production", // to send the full html emails
},
};
manifest = {
name: "sealious-app",
logo: locreq.resolve("assets/logo.png"),
version: "0.0.1",
default_language: "en",
base_url: BASE_URL,
admin_email: ADMIN_CREDENTIALS.email,
colors: {
primary: "#5294a1",
},
};
collections = collections;
mailer =
MAILER === "mailcatcher"
? new SMTPMailer({
host: MAILCATCHER_HOST,
port: MAILCATCHER_SMTP_PORT,
user: "any",
password: "any",
})
: new LoggerMailer();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
async start() {
await super.start();
}
async stop() {
await super.stop();
}
}
diff --git a/src/back/collections/collections.ts b/src/back/collections/collections.ts
index e20ccc6..d0ba4d2 100644
--- a/src/back/collections/collections.ts
+++ b/src/back/collections/collections.ts
@@ -1,29 +1,32 @@
// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
import { App } from "sealious";
+import _Globals from "./globals.js";
import _GroupsToUsers from "./groups-to-users.js";
import _Groups from "./groups.js";
+import _Page from "./page.js";
import _PasswordResetIntents from "./password-reset-intents.js";
-import _Secrets from "./secrets.js";
-import _Tasks from "./tasks.js";
+import _Redirects from "./redirects.js";
import _UserRoles from "./user-roles.js";
import _Users from "./users.js";
+export const Globals = new _Globals();
export const GroupsToUsers = new _GroupsToUsers();
export const Groups = new _Groups();
+export const Page = new _Page();
export const PasswordResetIntents = new _PasswordResetIntents();
-export const Secrets = new _Secrets();
-export const Tasks = new _Tasks();
+export const Redirects = new _Redirects();
export const UserRoles = new _UserRoles();
export const Users = new _Users();
export const collections = {
...App.BaseCollections,
+ globals: Globals,
"groups-to-users": GroupsToUsers,
groups: Groups,
+ page: Page,
"password-reset-intents": PasswordResetIntents,
- secrets: Secrets,
- tasks: Tasks,
+ redirects: Redirects,
"user-roles": UserRoles,
users: Users,
};
diff --git a/src/back/collections/globals.ts b/src/back/collections/globals.ts
new file mode 100644
index 0000000..7f02f56
--- /dev/null
+++ b/src/back/collections/globals.ts
@@ -0,0 +1,15 @@
+import { Collection, FieldTypes, Policies } from "sealious";
+import { Roles } from "../policy-types/roles.js";
+
+export default class Globals extends Collection {
+ fields = {
+ key: new FieldTypes.Text(),
+ value: new FieldTypes.Text(),
+ };
+ defaultPolicy = new Roles(["admin"]);
+ policies = {
+ show: new Policies.Public(),
+ delete: new Policies.Noone(),
+ create: new Policies.Super(),
+ };
+}
diff --git a/src/back/collections/page.ts b/src/back/collections/page.ts
new file mode 100644
index 0000000..65ad03e
--- /dev/null
+++ b/src/back/collections/page.ts
@@ -0,0 +1,16 @@
+import { Collection, FieldTypes, Policies } from "sealious";
+import { CRUDRoles } from "../policy-types/roles.js";
+
+export default class Page extends Collection {
+ fields = {
+ url: new FieldTypes.Text().setRequired(true),
+ content: new FieldTypes.JDD().setRequired(true),
+ domain: new FieldTypes.Text(),
+ title: new FieldTypes.Text(),
+ heading: new FieldTypes.Text(),
+ description: new FieldTypes.Text(),
+ imageForMetadata: new FieldTypes.Image().setRequired(true),
+ hideNavigation: new FieldTypes.Boolean(),
+ };
+ policies = CRUDRoles(["page"], { show: new Policies.Public() });
+}
diff --git a/src/back/collections/redirects.ts b/src/back/collections/redirects.ts
new file mode 100644
index 0000000..c1af503
--- /dev/null
+++ b/src/back/collections/redirects.ts
@@ -0,0 +1,12 @@
+import { Collection, FieldTypes, Policies } from "sealious";
+import { CRUDRoles, Roles } from "../policy-types/roles.js";
+
+export default class Redirects extends Collection {
+ fields = {
+ from_url: new FieldTypes.Text().setRequired(true),
+ to_url: new FieldTypes.Text().setRequired(true),
+ type: new FieldTypes.Enum(["301", "302"]).setRequired(true),
+ };
+
+ policies = CRUDRoles(["quick-filters"], { show: new Policies.Public() });
+}
diff --git a/src/back/collections/secrets.ts b/src/back/collections/secrets.ts
deleted file mode 100644
index ff02014..0000000
--- a/src/back/collections/secrets.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Collection, FieldTypes } from "sealious";
-import { Roles } from "../policy-types/roles.js";
-
-/* For testing the Roles policy */
-export default class Secrets extends Collection {
- fields = {
- content: new FieldTypes.Text(),
- };
- defaultPolicy = new Roles(["admin"]);
-}
diff --git a/src/back/collections/tasks.ts b/src/back/collections/tasks.ts
deleted file mode 100644
index 02f50b9..0000000
--- a/src/back/collections/tasks.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Collection, FieldTypes, Policies } from "sealious";
-
-export default class Tasks extends Collection {
- fields = {
- title: new FieldTypes.Text(),
- done: new (class extends FieldTypes.Boolean {
- hasDefaultValue = () => true;
- async getDefaultValue() {
- return false;
- }
- })(),
- };
-
- policies = {
- create: new Policies.Public(),
- show: new Policies.Owner(),
- list: new Policies.Owner(),
- };
-
- defaultPolicy = new Policies.Public();
-}
diff --git a/src/back/collections/user-roles.test.ts b/src/back/collections/user-roles.test.ts
index d62d6bf..b84b8b7 100644
--- a/src/back/collections/user-roles.test.ts
+++ b/src/back/collections/user-roles.test.ts
@@ -1,71 +1,72 @@
import assert from "assert";
import axios from "axios";
import { Context, TestUtils } from "sealious";
import { withProdApp } from "../test_utils/with-prod-app.js";
import { createAdmin, createAUser } from "../test_utils/users.js";
import Users from "./users.js";
import { LONG_TEST_TIMEOUT } from "../test_utils/webhint.js";
describe("user-roles", () => {
it("rejects when given an empty role", async () =>
withProdApp(async ({ app, rest_api }) => {
const [user, session] = await createAdmin(app, rest_api);
await TestUtils.assertThrowsAsync(
async () => {
return rest_api.post(
`/api/v1/collections/user-roles`,
{
user: user.id,
},
session
);
},
(e) => {
+ console.error(e);
assert.equal(
e?.response.data.data.field_messages.role?.message,
"Missing value for field 'role'."
);
}
);
})).timeout(LONG_TEST_TIMEOUT);
it("accepts correct dataset", async () =>
withProdApp(async ({ app, base_url, rest_api }) => {
const [user, session] = await createAdmin(app, rest_api);
const response = await axios.post(
`${base_url}/api/v1/collections/user-roles`,
{
user: user.id,
role: "admin",
},
session
);
assert.equal(response.status, 201);
}));
it("get user roles with admin", async () =>
withProdApp(async ({ app, rest_api }) => {
const [user] = await createAdmin(app, rest_api);
const roles = await Users.getRoles(
new Context(app, new Date().getTime(), user.id)
);
assert.ok(roles.includes("admin"));
}));
it("get user with no roles", async () =>
withProdApp(async ({ app }) => {
const user = await createAUser(app, "normal");
const roles = await Users.getRoles(
new Context(app, new Date().getTime(), user.id)
);
assert.ok(roles.length === 0);
}));
it("get no roles for no logged user", async () =>
withProdApp(async ({ app }) => {
const roles = await Users.getRoles(
new Context(app, new Date().getTime(), null)
);
assert.ok(roles.length === 0);
}));
});
diff --git a/src/back/collections/user-roles.ts b/src/back/collections/user-roles.ts
index 4a67080..d76e8c0 100644
--- a/src/back/collections/user-roles.ts
+++ b/src/back/collections/user-roles.ts
@@ -1,40 +1,41 @@
import type { App, Policy } from "sealious";
import { Collection, FieldTypes, Policies } from "sealious";
import { Roles } from "../policy-types/roles.js";
export default class UserRoles extends Collection {
name = "user-roles";
fields = {
- role: new FieldTypes.Enum((app: App) =>
- app.ConfigManager.get("roles")
- ).setRequired(true),
+ role: new FieldTypes.Text(),
user: new FieldTypes.SingleReference("users"),
};
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
policies = {
create: new Roles(["admin"]),
- delete: new Policies.Public(),
- show: new Policies.UserReferencedInField("user"),
+ delete: new Roles(["admin"]),
+ show: new Policies.Or([
+ new Policies.UserReferencedInField("user"),
+ new Roles(["admin"]),
+ ]),
edit: new Policies.Noone(),
} as { [policy: string]: Policy }; // this `as` statement allows the policies to be overwritten;
async init(app: App, collection_name: string) {
await super.init(app, collection_name);
app.on("started", async () => {
const roles = app.collections["user-roles"];
if (!roles) {
throw new Error("roles undefined");
}
for (const action of <const>["create", "delete"]) {
- const policy = roles.getPolicy(action);
+ const policy = roles?.getPolicy(action);
if (policy instanceof Policies.Public) {
app.Logger.warn(
"USER POLICY",
`<user-roles> collection is using <public> access strategy for ${action} action. Anyone can change anyone elses role. This is the default behavior and you should overwrite it with <set_policy>`
);
}
}
});
}
}
diff --git a/src/back/collections/users.ts b/src/back/collections/users.ts
index f111ade..3357bbb 100644
--- a/src/back/collections/users.ts
+++ b/src/back/collections/users.ts
@@ -1,56 +1,57 @@
import type { Context } from "sealious";
import { App, Collections, FieldTypes, Policies } from "sealious";
import assert from "assert";
import TheApp from "../app.js";
import ADMIN_CREDENTIALS from "../default-admin-credentials.js";
+import { Roles } from "../policy-types/roles.js";
export default class Users extends Collections.users {
fields = {
...App.BaseCollections.users.fields,
email: new FieldTypes.Email().setRequired(true),
roles: new FieldTypes.ReverseSingleReference({
referencing_collection: "user-roles",
referencing_field: "user",
}),
};
- defaultPolicy = new Policies.Themselves();
+ defaultPolicy = new Policies.Or([new Policies.Themselves(), new Roles(["admin"])]);
+
+ policies = {
+ create: new Roles(["admin"]),
+ show: new Policies.Or([new Policies.Themselves(), new Roles(["admin"])]),
+ };
async init(app: App, name: string) {
assert(app instanceof TheApp);
await super.init(app, name);
app.on("started", async () => {
const username = ADMIN_CREDENTIALS.username;
- const users = await app.collections.users
- .suList()
- .filter({ username })
- .fetch();
- if (users.empty) {
+ const all_users = await app.collections.users.suList().fetch();
+ if (all_users.empty) {
app.Logger.warn(
"ADMIN",
`Creating an admin account for ${app.manifest.admin_email}`
);
const { id } = await app.collections.users.suCreate({
username,
password: ADMIN_CREDENTIALS.password,
email: ADMIN_CREDENTIALS.email,
roles: [],
});
await app.collections["user-roles"].suCreate({ user: id, role: "admin" });
}
});
}
public static async getRoles(ctx: Context) {
- if (!ctx.app.collections["user-roles"]) {
- throw new Error("user-roles undefined");
- }
- const rolesEntries = await ctx.app.collections["user-roles"]
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ const rolesEntries = await (ctx.app as TheApp).collections["user-roles"]
.list(ctx)
.filter({ user: ctx.user_id || "" })
.fetch();
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- return rolesEntries.items.map((item) => item.get("role") as string);
+ return rolesEntries.items.map((item) => item.get("role"));
}
}
diff --git a/src/back/config.ts b/src/back/config.ts
index 12983d1..ff60869 100644
--- a/src/back/config.ts
+++ b/src/back/config.ts
@@ -1,30 +1,35 @@
import _locreq from "locreq";
import { module_dirname } from "./utils/module_dirname.js";
const locreq = _locreq(module_dirname(import.meta.url));
+import dotenv from "dotenv";
+
+dotenv.config();
+
export const SEALIOUS_SANITY = Boolean(process.env.SEALIOUS_SANITY);
export const PORT = process.env.SEALIOUS_PORT
? parseInt(process.env.SEALIOUS_PORT)
: 8080;
export const BASE_URL = process.env.SEALIOUS_BASE_URL || `http://localhost:${PORT}`;
export const MONGO_PORT = process.env.SEALIOUS_MONGO_PORT
? parseInt(process.env.SEALIOUS_MONGO_PORT)
: 20747;
export const MONGO_HOST = process.env.SEALIOUS_MONGO_HOST || "127.0.0.1";
export const MAILCATCHER_HOST = process.env.SEALIOUS_MAILCATCHER_HOST || "127.0.0.1";
export const MAILCATCHER_SMTP_PORT = parseInt(
process.env.SEALIOUS_MAILCATCHER_SMTP_PORT || "1026"
);
export const MAILCATCHER_API_PORT = parseInt(
process.env.SEALIOUS_MAILCATCHER_API_PORT || "1082"
);
-export const MAILER = process.env.SEALIOUS_MAILER;
+export const MAILER = process.env.SEALIOUS_MAILER || "mailcatcher";
export const DEFAULT_HTML_LANG = "pl";
export const IMAGE_CACHE_FS_DIR =
process.env.IMAGE_CACHE_FS_DIR || locreq.resolve("cache/images");
export const SMARTCROP_CACHE_FS_DIR =
process.env.IMAGE_CACHE_FS_DIR || locreq.resolve("cache/smartcrop");
-
export const UPLOADS_FS_DIR =
process.env.UPLOADS_FS_DIR || locreq.resolve("uploaded_files");
+export const MEILISEARCH_MASTER_KEY = process.env.MEILISEARCH_MASTER_KEY || "qwerty";
+export const MEILISEARCH_HOST = process.env.MEILISEARCH_HOST || "http://localhost:1098";
diff --git a/src/back/defaultHead.tsx b/src/back/defaultHead.tsx
new file mode 100644
index 0000000..6590b9a
--- /dev/null
+++ b/src/back/defaultHead.tsx
@@ -0,0 +1,86 @@
+import { tempstream } from "tempstream";
+import type { Readable } from "stream";
+import type { Context } from "koa";
+import type { HTMLOptions } from "@sealcode/sealgen";
+import { htmlEscape } from "escape-goat";
+
+export const start_timestamp = Date.now();
+
+export const animation_script_head = /* HTML */ `<script type="text/javascript">
+ message = document.title + " • ";
+ window.title_animation_active = false;
+ window.animatePageTitle = function () {
+ if (window.title_animation_active) {
+ return;
+ }
+ window.title_animation_active = true;
+ function step() {
+ message = message.substr(1) + message.substr(0, 1);
+ document.title = message;
+ }
+ setInterval(step, 100);
+ };
+</script>`;
+
+export function defaultHead({
+ ctx,
+ title,
+ htmlOptions,
+ metaImage,
+ canonicalPath,
+ css_clumps = [],
+ description = "",
+}: {
+ ctx: Context;
+ title: string | Promise<string | Readable>;
+ htmlOptions: Partial<HTMLOptions>;
+ metaImage?: string;
+ canonicalPath?: string;
+ css_clumps: string[];
+ description: string;
+}): JSX.Element | Readable {
+ const origin = ctx.URL.origin;
+ return tempstream/* HTML */ `<title>${title}</title>
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="description" content="${htmlEscape(description)}" />
+ <link
+ rel="preload"
+ href="/dist/fonts/Poppins-400-1.woff2"
+ as="font"
+ type="font/woff2"
+ />
+ <link
+ rel="preload"
+ href="/dist/fonts/Poppins-400-2.woff2"
+ as="font"
+ type="font/woff2"
+ />
+ <link rel="preload" href="/Exotc350DmBdEU-subset.ttf" as="font" type="font/ttf" />
+ <script defer src="/dist/bundle.js?v=${start_timestamp}"></script>
+ ${metaImage ? `<meta property="og:image" content="${metaImage}" />` : ""}
+ ${[
+ "default",
+ "page",
+ ...(ctx.url.includes("/dowodzenie/") ? ["admin"] : []),
+ ...css_clumps,
+ ].map(
+ (clump_name) => /* HTML*/ `<link
+ href="/dist/${clump_name}.entrypoint.css?v=${start_timestamp}${
+ htmlOptions.autoRefreshCSS ? `?${Math.random()}${Math.random()}` : ""
+ }"
+ rel="stylesheet"
+ type="text/css"
+ />`
+ )}
+ <link href="/dist/fonts/fonts.css" rel="stylesheet" type="text/css" />
+ ${canonicalPath
+ ? `<link rel="canonical" href="${origin}${canonicalPath}" />`
+ : ""}
+ ${htmlOptions.morphing
+ ? `<meta name="turbo-refresh-method" content="morph" />`
+ : ""}
+ ${htmlOptions.preserveScroll
+ ? `<meta name="turbo-refresh-scroll" content="preserve">`
+ : ""} `;
+}
diff --git a/src/back/email-templates/password-reset.ts b/src/back/email-templates/password-reset.ts
index 8df9c52..d46fb55 100644
--- a/src/back/email-templates/password-reset.ts
+++ b/src/back/email-templates/password-reset.ts
@@ -1,33 +1,31 @@
import { EmailTemplates, Errors } from "sealious";
import type TheApp from "../app.js";
export default async function PasswordResetTemplate(
app: TheApp,
{ email_address, token }: { email_address: string; token: string }
) {
const matching_users = await app.collections["users"]
.suList()
.filter({ email: email_address })
.fetch();
if (!matching_users.items.length) {
throw new Errors.NotFound("No user with that email");
}
- if (!matching_users.items[0]) {
- throw new Error("matching_users.items[0] undefined");
- }
- const username = matching_users.items[0].get("username");
+
+ const username = matching_users.items[0]?.get("username");
return EmailTemplates.Simple(app, {
subject: app.i18n("password_reset_email_subject", [app.manifest.name]),
to: `${String(username)}<${email_address}>`,
text: `
${app.i18n("password_reset_email_text", [app.manifest.name, username])}`,
buttons: [
{
text: app.i18n("password_reset_cta"),
href: `${app.manifest.base_url}/confirm-password-reset?token=${token}&email=${email_address}`,
},
],
});
}
diff --git a/src/back/html-controllers/refresh-on-ts-changes.stimulus.ts b/src/back/html-controllers/refresh-on-ts-changes.stimulus.ts
deleted file mode 100644
index a316280..0000000
--- a/src/back/html-controllers/refresh-on-ts-changes.stimulus.ts
+++ /dev/null
@@ -1,112 +0,0 @@
-import { Controller } from "stimulus";
-
-const APP_DOWN_ERROR_MESSAGE = "App is currently down";
-
-const sleep = (time: number) =>
- new Promise((resolve) => {
- setTimeout(resolve, time);
- });
-
-async function get_status(): Promise<{ started_at: number; status: string }> {
- const r = await fetch("/status.json");
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- return (await r.json()) as { started_at: number; status: string };
-}
-
-async function wait_for_run_id_to_change() {
- let first_timestamp: number;
- try {
- const { started_at } = await get_status();
- first_timestamp = started_at;
- } catch (e) {
- await wait_for_app_to_be_stable();
- return;
- }
-
- if (!first_timestamp) {
- throw new Error(APP_DOWN_ERROR_MESSAGE);
- }
-
- // eslint-disable-next-line no-constant-condition
- while (true) {
- // eslint-disable-next-line no-await-in-loop
- const { started_at } = await get_status().catch(() => ({
- started_at: first_timestamp,
- }));
- if (started_at !== first_timestamp) {
- return;
- }
- // eslint-disable-next-line no-await-in-loop
- await sleep(100);
- }
-}
-
-async function wait_for_app_to_be_stable(n = 3) {
- // eslint-disable-next-line no-console
- console.log("Waiting for app to be stable....");
- let counter = 0;
- // eslint-disable-next-line no-constant-condition
- while (true) {
- // eslint-disable-next-line no-await-in-loop
- const { status } = await get_status().catch(() => ({
- status: "down",
- }));
- if (status == "running") {
- // eslint-disable-next-line no-console
- console.log(counter);
- counter++;
- } else {
- counter = 0;
- }
- if (counter == n) {
- return;
- }
- // eslint-disable-next-line no-await-in-loop
- await sleep(100);
- }
-}
-
-async function wait_for_app_restart() {
- try {
- await wait_for_run_id_to_change();
- } catch (e) {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- if (e.message !== APP_DOWN_ERROR_MESSAGE) {
- throw e;
- }
- }
- await wait_for_app_to_be_stable();
-}
-
-export default class RefreshOnTSChanges extends Controller {
- socket: WebSocket;
-
- async connect() {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const { port, watch } = (await fetch("/dist/notifier.json").then((r) =>
- r.json()
- )) as { port: number; watch: boolean };
- if (!watch) {
- // eslint-disable-next-line no-console
- console.warn(
- "Not running auto refresh on watch because the build process is not running in watch mode"
- );
- return;
- }
- const socket = new WebSocket(`ws://localhost:${port}`);
- socket.onmessage = async (message) => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const data = message.data as unknown;
- if (typeof data === "string" && data.endsWith("-ts")) {
- document.documentElement.classList.add("restarting");
- await wait_for_app_restart();
- document.documentElement.dispatchEvent(new Event("ts-rebuilt"));
- document.documentElement.classList.remove("restarting");
- }
- };
- }
-
- async disconnect() {
- this.socket.close();
- }
-}
diff --git a/src/back/html-controllers/refresh-styles.stimulus.ts b/src/back/html-controllers/refresh-styles.stimulus.ts
deleted file mode 100644
index 4469da5..0000000
--- a/src/back/html-controllers/refresh-styles.stimulus.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { Controller } from "stimulus";
-
-function make_new_link() {
- const new_link = document.createElement("link");
- new_link.rel = "stylesheet";
- new_link.href = `/dist/main.css?${Math.random()}+${Math.random()}`;
- new_link.type = "text/css";
- return new_link;
-}
-
-function getStyles() {
- return Array.from(document.querySelectorAll("head link")).filter(
- (e: HTMLLinkElement) => new URL(e.href).pathname == "/dist/main.css"
- );
-}
-
-function cleanup_css() {
- getStyles()
- .slice(0, -1)
- .forEach((style) => {
- style.parentElement.removeChild(style);
- });
-}
-
-export default class RefreshStyles extends Controller {
- socket: WebSocket;
-
- async connect() {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- const { port } = await fetch("/dist/notifier.json").then((r) => r.json());
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- this.socket = new WebSocket(`ws://localhost:${port as number}`);
- this.socket.onmessage = async (message) => {
- if (message.data === "css") {
- const new_link = make_new_link();
- new_link.onload = cleanup_css;
- document.querySelector("head").appendChild(new_link);
- }
- };
- document.documentElement.addEventListener("turbo:morph", cleanup_css);
- }
-
- async disconnect() {
- this.socket.close();
- document.documentElement.removeEventListener("turbo:morph", cleanup_css);
- }
-}
diff --git a/src/back/html.ts b/src/back/html.ts
deleted file mode 100644
index f234d15..0000000
--- a/src/back/html.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import type { FlatTemplatable, Templatable } from "tempstream";
-import { tempstreamAsync } from "tempstream";
-import type { Readable } from "stream";
-import type { BaseContext } from "koa";
-import { toKebabCase } from "js-convert-case";
-import { DEFAULT_HTML_LANG } from "./config.js";
-import { default_navbar } from "./routes/common/navbar.js";
-
-export const defaultHead = (
- ctx: BaseContext,
- title: string,
- options: HTMLOptions
-) => /* HTML */ `<title>${title} · ${ctx.$app.manifest.name}</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <script async src="/dist/bundle.js"></script>
- <link
- href="/dist/main.css${options.autoRefreshCSS
- ? `?${Math.random()}${Math.random()}`
- : ""}"
- rel="stylesheet"
- type="text/css"
- />
- <link href="/dist/fonts/fonts.css" rel="stylesheet" type="text/css" />
- ${options.morphing ? `<meta name="turbo-refresh-method" content="morph" />` : ""}
- ${options.preserveScroll
- ? `<meta name="turbo-refresh-scroll" content="preserve">`
- : ""}`;
-
-export type HTMLOptions = {
- preserveScroll?: boolean;
- morphing?: boolean;
- navbar?: (ctx: BaseContext) => FlatTemplatable;
- autoRefreshCSS?: boolean;
- disableCopyEvent?: boolean;
- language?: string;
- bodyClasses?: string[];
-};
-
-export default function html(
- ctx: BaseContext,
- title: string,
- body: Templatable,
- htmlOptions: HTMLOptions = {},
- makeHead: (
- ctx: BaseContext,
- title: string,
- options: HTMLOptions
- ) => Templatable = defaultHead
-): Readable {
- ctx.set("content-type", "text/html;charset=utf-8");
- const controllers: string[] = [];
- if (htmlOptions.autoRefreshCSS) {
- controllers.push("refresh-styles");
- controllers.push("refresh-on-ts-changes");
- }
- return tempstreamAsync/* HTML */ ` <!DOCTYPE html>
- <html
- lang="${htmlOptions.language || DEFAULT_HTML_LANG}"
- class="title--${toKebabCase(title)}"
- >
- <head>
- ${makeHead(ctx, title, htmlOptions)}
- </head>
- <body data-controller="${controllers.join(" ")}">
- ${(htmlOptions?.navbar || default_navbar)(ctx)} ${body}
- ${htmlOptions.disableCopyEvent
- ? /* HTML */ "<script>document.addEventListener('copy', (e) => e.preventDefault());</script>"
- : ""}
- </body>
- </html>`;
-}
diff --git a/src/back/html.tsx b/src/back/html.tsx
new file mode 100644
index 0000000..1c7e5a1
--- /dev/null
+++ b/src/back/html.tsx
@@ -0,0 +1,71 @@
+import type { HTMLArgs, HTMLOptions } from "@sealcode/sealgen";
+import { tempstreamAsync } from "tempstream";
+import type { Readable } from "stream";
+import { toKebabCase } from "js-convert-case";
+import { DEFAULT_HTML_LANG } from "./config.js";
+import { default_navbar } from "./routes/common/navbar.js";
+import { defaultHead } from "./defaultHead.js";
+
+const default_html_options: Partial<HTMLOptions> = {
+ showFooter: true,
+ showBottomNavbar: true,
+ loadHamburgerMenu: true,
+ loadSearchModal: true,
+};
+
+export default function html({
+ ctx,
+ title,
+ body,
+ htmlOptions = {},
+ makeHead = defaultHead,
+ metaImage,
+ canonicalPath,
+ css_clumps = [],
+ description,
+ hideNavigation = false,
+}: HTMLArgs): Readable {
+ htmlOptions = { ...default_html_options, ...htmlOptions };
+ ctx.set(
+ "content-type",
+ htmlOptions.canHaveStreams &&
+ ctx.get("accept").includes("text/vnd.turbo-stream.html")
+ ? "text/vnd.turbo-stream.html"
+ : "text/html;charset=utf-8"
+ );
+
+ const controllers: string[] = [];
+ if (htmlOptions.autoRefreshCSS) {
+ controllers.push("refresh-styles");
+ controllers.push("refresh-on-ts-changes");
+ }
+
+ return tempstreamAsync/* HTML */ ` <!DOCTYPE html>
+ <html
+ lang="${htmlOptions.language || DEFAULT_HTML_LANG}"
+ class="title--${typeof title == "string" ? toKebabCase(title) : ""}"
+ >
+ <head>
+ <meta
+ name="google-site-verification"
+ content="Tf9a888qUgbgQJS4u1F6A8H7ZI_DBJvAeduluSI0T_g"
+ />
+ ${makeHead({
+ ctx,
+ title: title,
+ htmlOptions: { ...htmlOptions },
+ metaImage,
+ canonicalPath,
+ css_clumps,
+ description,
+ })}
+ </head>
+ <body
+ data-controller="${controllers.join(" ")}"
+ class="${(htmlOptions?.bodyClasses || []).join(" ")}"
+ >
+ ${!hideNavigation ? (htmlOptions?.navbar || default_navbar)(ctx) : ""}
+ ${body}
+ </body>
+ </html>`;
+}
diff --git a/src/back/image-router.ts b/src/back/image-router.ts
index 0097f42..0e5ff68 100644
--- a/src/back/image-router.ts
+++ b/src/back/image-router.ts
@@ -1,12 +1,14 @@
import { KoaResponsiveImageRouter } from "koa-responsive-image-router";
import { IMAGE_CACHE_FS_DIR, SMARTCROP_CACHE_FS_DIR } from "./config.js";
export const RESPONSIVE_IMAGES_URL_PATH = "/images";
export const imageRouter = new KoaResponsiveImageRouter({
staticPath: RESPONSIVE_IMAGES_URL_PATH,
thumbnailSize: 20,
cacheManagerResolutionThreshold: 50,
imageStoragePath: IMAGE_CACHE_FS_DIR,
smartCropStoragePath: SMARTCROP_CACHE_FS_DIR,
+ formatsForLossy: ["webp"],
+ formatsForLossless: ["webp"],
});
diff --git a/src/back/index.ts b/src/back/index.ts
index 0b7be54..02071d4 100644
--- a/src/back/index.ts
+++ b/src/back/index.ts
@@ -1,31 +1,48 @@
import kill from "kill-port";
import _locreq from "locreq";
import TheApp from "./app.js";
import { PORT, SEALIOUS_SANITY } from "./config.js";
import { mainRouter } from "./routes/index.js";
-import { module_dirname } from "./utils/module_dirname.js";
+import { waitForMeilisearch } from "./services/meilisearch.js";
-const locreq = _locreq(module_dirname(import.meta.url));
+const locreq = _locreq(new URL("./", import.meta.url).pathname);
export const the_app = new TheApp();
void (async function () {
await kill(PORT);
await kill(PORT);
+ try {
+ await waitForMeilisearch(10);
+ } catch (e) {
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ if ((e as Error).message === "timeout") {
+ console.log("Meilisearch must be running before the app starts!"); // eslint-disable-line no-console
+ process.exit(1);
+ } else {
+ throw e;
+ }
+ }
+
try {
the_app.HTTPServer.addStaticRoute("/", locreq.resolve("public"));
+
await the_app.start();
+ mainRouter(the_app, the_app.HTTPServer.router);
+
+ // eslint-disable-next-line no-console
+ console.log("Population finished");
+
if (SEALIOUS_SANITY) {
console.error("Exiting with error code 0");
process.exit(0);
}
- mainRouter(the_app.HTTPServer.router);
} catch (error) {
console.error(error);
if (SEALIOUS_SANITY) {
console.error("EXITING WITH STATUS 1");
process.exit(1);
}
}
})();
diff --git a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.css b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.css
index 87438cd..ba2bf37 100644
--- a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.css
+++ b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.css
@@ -1,177 +1,206 @@
.autoscrolling-images {
display: flex;
justify-content: center;
+ margin: 2rem 0;
}
.autoscrolling-images-wrapper {
display: grid;
gap: 24px;
}
.autoscrolling-images__title-wrapper {
max-width: 940px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
.autoscrolling-images__title {
+ font-family: Exotc350DmBdEU;
font-size: 32px;
color: #0d4d69;
margin: 0;
}
.autoscrolling-images__arrow-carousel-container {
position: absolute;
top: -51px;
right: -90px;
width: 92px;
overflow-x: hidden;
}
.autoscrolling-images__arrow-carousel {
transition: none !important;
width: 100%;
display: flex;
flex-flow: row nowrap;
}
.autoscrolling-images__arrow-container {
display: flex;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
scroll-snap-align: start;
flex: 1 0 100%;
}
.autoscrolling-images__arrow img {
max-width: 30px;
}
.autoscrolling-images__arrow:hover {
cursor: pointer;
}
.autoscrolling-images__img-arrow-left {
transform: rotate(180deg);
}
.autoscrolling-images__carousel-container {
position: relative;
- max-width: 940px;
+ max-width: min(940px, calc(100dvw - 48px));
+
+ picture,
+ img {
+ max-height: 150px;
+ max-width: 288px;
+ }
}
.autoscrolling-images__imgs-carousel {
overflow-x: clip;
}
.autoscrolling-images__carousel {
width: 100%;
display: flex;
flex-flow: row nowrap;
+ transition: transform 200ms;
}
.autoscrolling-images__carousel-page {
align-items: center;
scroll-snap-align: start;
box-sizing: border-box;
flex: 1 0 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
+ column-gap: 1rem;
max-width: 940px;
}
+.autoscrolling-images__carousel-page--looping-head,
+.autoscrolling-images__carousel-page--looping-tail {
+ display: none;
+}
+
+.autoscrolling-images__carousel-page--looping-tail {
+ /* background-color: red; */
+ position: absolute;
+ left: 100%;
+}
+
+.autoscrolling-images__carousel-page--looping-head {
+ /* background-color: green; */
+ position: absolute;
+ right: 100%;
+}
+
.autoscrolling-images__img-wrapper {
width: 288px;
height: 150px;
display: flex;
align-items: center;
justify-content: space-around;
}
.autoscrolling-images__radio {
display: none;
}
.autoscrolling-images__dots-container {
display: flex;
justify-content: center;
margin-top: 24px;
}
.autoscrolling-images__dots {
cursor: pointer;
height: 12px;
width: 12px;
background-color: #cadae4;
border-radius: 50%;
display: inline-block;
margin: 4px;
}
.autoscrolling-images__dots:hover {
background-color: #0d4d69;
}
@keyframes autoscrolling-images-infiniteScroll {
0% {
transform: translateX(0%);
}
- 50% {
- transform: translateX(calc(-100% + 100cqw));
- }
100% {
- transform: translateX(0%);
+ transform: translateX(calc(-100%));
}
}
@container (width < 1115px) {
.autoscrolling-images__arrow-carousel-container {
right: 0;
}
}
@container (width < 800px) {
.autoscrolling-images__arrow-carousel-container {
display: none;
}
.autoscrolling-images__dots-container {
display: none;
}
.autoscrolling-images__carousel {
max-width: none;
width: max-content;
}
.autoscrolling-images__carousel-container {
margin: 0;
max-width: calc(100cqw - 20px);
}
.autoscrolling-images__carousel-page {
display: flex;
flex: none !important;
margin: 0;
flex-wrap: nowrap !important;
max-width: none;
}
.autoscrolling-images__img-wrapper {
min-width: 288px;
}
.autoscrolling-images__carousel {
animation-name: autoscrolling-images-infiniteScroll;
animation-duration: var(--animation-length);
animation-iteration-count: infinite;
- animation-timing-function: ease-in-out;
+ animation-timing-function: linear;
+ }
+
+ .autoscrolling-images__carousel-page--looping-head,
+ .autoscrolling-images__carousel-page--looping-tail {
+ display: flex;
}
}
diff --git a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.jdd.tsx b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.jdd.tsx
index 72fbe66..b490508 100644
--- a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.jdd.tsx
+++ b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.jdd.tsx
@@ -1,158 +1,254 @@
import { TempstreamJSX } from "tempstream";
-import type { ComponentToHTMLArgs } from "@sealcode/jdd";
+import type {
+ ComponentToHTMLArgs,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
import { Component, ComponentArguments } from "@sealcode/jdd";
import arrow from "./autoscrolling-images-arrow.svg";
+import type { FilePointer } from "@sealcode/file-manager";
+import type { makeJDDContext } from "../../jdd-context.js";
+import _locreq from "locreq";
+const locreq = _locreq(new URL("./", import.meta.url).pathname);
+
+const images = new ComponentArguments.List(
+ new ComponentArguments.Structured({
+ image: new ComponentArguments.Image().setExampleImages(
+ [
+ "logo1.png",
+ "logo2.png",
+ "logo3.png",
+ "logo4.png",
+ "logo5.png",
+ "logo6.png",
+ "logo7.png",
+ "logo8.png",
+ "logo9.png",
+ ].map((name) => locreq.resolve("assets/" + name))
+ ),
+ alt: new ComponentArguments.ShortText(),
+ })
+);
+
+images.getExampleCount = () => {
+ return Math.round(4 + Math.random() * 9);
+};
+
const component_arguments = {
title: new ComponentArguments.ShortText(),
- interval: new ComponentArguments.ShortText().setExampleValues(["5"]),
imagesPerPage: new ComponentArguments.ShortText().setExampleValues(["6"]),
- images: new ComponentArguments.List(
- new ComponentArguments.Structured({
- image: new ComponentArguments.Image(),
- alt: new ComponentArguments.ShortText(),
- })
- ),
+ speed: new ComponentArguments.ShortText().setExampleValues(["50"]),
+ desktop_interval: new ComponentArguments.ShortText().setExampleValues(["5"]),
+ images,
} as const;
+function renderimagePageArrows({
+ radioButtonIdPrefix,
+ pageIndex,
+ imagePages,
+}: {
+ radioButtonIdPrefix: string;
+ pageIndex: number;
+ imagePages: Array<Array<Record<string, unknown>>>;
+}) {
+ return (
+ <div class="autoscrolling-images__arrow-container">
+ <label
+ for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${
+ pageIndex == 0 ? imagePages.length - 1 : pageIndex - 1
+ }`}
+ class="autoscrolling-images__arrow"
+ >
+ <img
+ class="autoscrolling-images__img-arrow-left"
+ src={arrow.url}
+ alt="←"
+ />
+ </label>
+ <label
+ for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${
+ pageIndex == imagePages.length - 1 ? 0 : pageIndex + 1
+ }`}
+ class="autoscrolling-images__arrow"
+ >
+ <img src={arrow.url} alt="→" />
+ </label>
+ </div>
+ );
+}
+
+export function renderImagePage({
+ page,
+ render_image,
+ mode = "regular",
+}: {
+ page: Array<{ image: FilePointer | null; alt: string }>;
+ render_image: ReturnType<typeof makeJDDContext>["render_image"];
+ mode?: "regular" | "looping-tail" | "looping-head";
+}): JSX.Element {
+ return (
+ <div
+ class={[
+ "autoscrolling-images__carousel-page",
+ `autoscrolling-images__carousel-page--${mode}`,
+ ]}
+ >
+ {page.map((image) => (
+ <div class="autoscrolling-images__img-wrapper">
+ {render_image(image.image, {
+ container: {
+ width: 212,
+ height: 150,
+ objectFit: "contain",
+ },
+ alt: image.alt,
+ lossless: true,
+ thumbnailSize: 0,
+ })}
+ </div>
+ ))}
+ </div>
+ );
+}
+
export class AutoscrollingImages extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.title || null;
+ }
+
toHTML({
- args: { title, interval, imagesPerPage, images },
+ args: { title, imagesPerPage, images, speed, desktop_interval },
jdd_context: { render_image },
+ classes,
+ index,
}: ComponentToHTMLArgs<typeof component_arguments>) {
const imageNumberPerPage = parseInt(imagesPerPage);
- const parsedImagesArray = [];
+ const imagePages: (typeof images)[] = [];
for (let i = 0; i < images.length; i += imageNumberPerPage) {
- parsedImagesArray.push(images.slice(i, i + imageNumberPerPage));
+ imagePages.push(images.slice(i, i + imageNumberPerPage));
}
const radioButtonIdPrefix = "r" + Math.floor(100 + Math.random() * 900);
const radioButton_name = `autoscrolling-images__radio--${radioButtonIdPrefix}`;
- const numberOfImages = images.length * 5;
const titleUpperCase = title.toUpperCase();
return (
<div
- class="autoscrolling-images"
+ class={["autoscrolling-images", ...classes]}
+ style={`--jdd-index: ${index}`}
data-controller="autoscrolling-images"
- data-autoscrolling-images-interval={interval}
+ data-autoscrolling-images-interval={desktop_interval}
>
<style>
- {parsedImagesArray
+ {imagePages
.map(
(_, pageIndex) =>
`#${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}:checked ~ .autoscrolling-images__imgs-carousel > .autoscrolling-images__carousel {
transform: translateX(calc(${pageIndex} * (-100%)));
}
#${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}:checked ~ .autoscrolling-images__arrow-carousel-container
> .autoscrolling-images__arrow-carousel {
transform: translateX(calc(${pageIndex} * (-100%)));
}
#${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}:checked ~ .autoscrolling-images__dots-container
> label:nth-child(${pageIndex + 1}) {
background-color: #0d4d69;
}`
)
.join("\n")}
</style>
<div
class="autoscrolling-images-wrapper"
data-carousel-id-prefix={radioButtonIdPrefix}
>
<div class="autoscrolling-images__title-wrapper">
<h2 class="autoscrolling-images__title">{titleUpperCase}</h2>
</div>
<div class="autoscrolling-images__carousel-container">
- {parsedImagesArray.map((_, pageIndex) => (
+ {imagePages.map((_, pageIndex) => (
<input
class="autoscrolling-images__radio"
type="radio"
name={radioButton_name}
title={`page ${pageIndex + 1}`}
value={pageIndex}
id={`${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}`}
checked={pageIndex === 0}
- data-action="autoscrolling-images#handleRadiochange"
+ data-action="autoscrolling-images#handleRadioChange"
/>
))}
- <div class="autoscrolling-images__arrow-carousel-container">
- <div class="autoscrolling-images__arrow-carousel">
- {parsedImagesArray.map((_, pageIndex) => (
- <div class="autoscrolling-images__arrow-container">
- <label
- for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${
- pageIndex == 0
- ? parsedImagesArray.length - 1
- : pageIndex - 1
- }`}
- class="autoscrolling-images__arrow"
- >
- <img
- class="autoscrolling-images__img-arrow-left"
- src={arrow.url}
- alt="←"
- />
- </label>
- <label
- for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${
- pageIndex == parsedImagesArray.length - 1
- ? 0
- : pageIndex + 1
- }`}
- class="autoscrolling-images__arrow"
- >
- <img src={arrow.url} alt="→" />
- </label>
- </div>
- ))}
+
+ {imagePages.length > 1 ? (
+ <div class="autoscrolling-images__arrow-carousel-container">
+ <div class="autoscrolling-images__arrow-carousel">
+ {imagePages.map((_, pageIndex) =>
+ renderimagePageArrows({
+ pageIndex,
+ imagePages,
+ radioButtonIdPrefix,
+ })
+ )}
+ </div>
</div>
- </div>
+ ) : (
+ ""
+ )}
<div class="autoscrolling-images__imgs-carousel">
<div
class="autoscrolling-images__carousel"
- style={`--animation-length: ${numberOfImages}s`}
+ style={`--animation-length: ${
+ 100 / parseInt(speed || "15")
+ }s`}
>
- {parsedImagesArray.map((page) => (
- <div class="autoscrolling-images__carousel-page">
- {page.map((image) => (
- <div class="autoscrolling-images__img-wrapper">
- {render_image(image.image, {
- container: {
- width: 288,
- height: 150,
- objectFit: "contain",
- },
- alt: image.alt,
- })}
- </div>
- ))}
- </div>
- ))}
+ {renderImagePage({
+ page: imagePages.at(-1)!,
+ render_image,
+ mode: "looping-head",
+ })}
+ {imagePages.map((page) =>
+ renderImagePage({ page, render_image })
+ )}
+ {/* for looping endless scroll*/}
+ {imagePages[0]
+ ? renderImagePage({
+ page: imagePages[0],
+ render_image,
+ mode: "looping-tail",
+ })
+ : ""}
</div>
</div>
- <div class="autoscrolling-images__dots-container">
- {parsedImagesArray.map((_, pageIndex) => (
- <label
- for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}`}
- class="autoscrolling-images__dots"
- ></label>
- ))}
- </div>
+ {imagePages.length > 1 ? (
+ <div class="autoscrolling-images__dots-container">
+ {imagePages.map((_, pageIndex) => (
+ <label
+ for={`${radioButtonIdPrefix}-autoscrolling-images__radio-${pageIndex}`}
+ class="autoscrolling-images__dots"
+ ></label>
+ ))}
+ </div>
+ ) : (
+ ""
+ )}
</div>
</div>
</div>
);
}
}
diff --git a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.stimulus.ts b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.stimulus.ts
index d4b1934..933a46b 100644
--- a/src/back/jdd-components/autoscrolling-images/autoscrolling-images.stimulus.ts
+++ b/src/back/jdd-components/autoscrolling-images/autoscrolling-images.stimulus.ts
@@ -1,67 +1,66 @@
+/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
import { Controller } from "stimulus";
export default class AutoscrollingImages extends Controller {
currentIndex = 0;
interval_id: number;
getInterval(): number {
- return parseInt(
- this.element.getAttribute("data-autoscrolling-images-interval") || "5"
+ const result = parseInt(
+ this.element.getAttribute("data-autoscrolling-images-interval") || "3"
);
+ return result;
}
getRadioButtons(): Array<HTMLInputElement> {
return Array.from(this.element.querySelectorAll(".autoscrolling-images__radio"));
}
handleRadioChange() {
const selectedRadio = this.getRadioButtons().findIndex(
(radio: HTMLInputElement) => radio.checked
);
this.currentIndex = selectedRadio !== -1 ? selectedRadio : 0;
}
async connect() {
this.currentIndex = 0;
let intervalTime: number;
const interval = this.getInterval();
- if (!interval) {
+ if (interval) {
intervalTime = interval * 1000;
} else {
intervalTime = 5000;
}
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
this.interval_id = setInterval(
() => this.next_slide(),
intervalTime
) as unknown as number;
}
async disconnect() {
clearInterval(this.interval_id);
}
next_slide() {
const carouselPages = this.element.querySelectorAll(
- ".autoscrolling-images__carousel-page"
+ ".autoscrolling-images__carousel-page--regular"
);
-
const radioButtonIdPrefix = this.element
.querySelector(".autoscrolling-images-wrapper")
.getAttribute("data-carousel-id-prefix");
-
const nextIndex = (this.currentIndex + 1) % carouselPages.length;
-
- const nextButton =
+ const nextButtonID =
radioButtonIdPrefix + "-autoscrolling-images__radio-" + nextIndex;
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- (document.getElementById(nextButton) as HTMLInputElement).checked = true;
-
- this.currentIndex = nextIndex;
-
- // this.handleRadioChange();
+ const nextButton = this.element.querySelector("#" + nextButtonID);
+ if (nextButton) {
+ (nextButton as HTMLInputElement).checked = true;
+ this.currentIndex = nextIndex;
+ this.handleRadioChange();
+ }
}
}
diff --git a/src/back/jdd-components/dynamic-grid/dynamic-grid.css b/src/back/jdd-components/dynamic-grid/dynamic-grid.css
index 630f094..4f88b6e 100644
--- a/src/back/jdd-components/dynamic-grid/dynamic-grid.css
+++ b/src/back/jdd-components/dynamic-grid/dynamic-grid.css
@@ -1,252 +1,254 @@
.dynamic-grid-component {
.dynamic-grid-title {
text-align: center;
}
.tabs-menu {
display: flex;
align-items: stretch;
list-style: none;
padding: 0;
border-bottom: 1px solid #ccc;
margin-bottom: 36px;
.tabs-menu-button {
display: flex;
margin-bottom: -1px;
border: 1px solid #ccc;
background: #eee;
color: #666;
font-size: 12px;
- cursor: pointer;
transition: border 200ms, color 200ms;
label {
padding: 12px 15px;
+ cursor: pointer;
}
}
.tabs-menu-button:hover {
border-top-color: #333;
color: #333;
}
}
- .tabs-menu-radio:checked ~ .tabs-menu-button label {
- border-bottom-color: #fff;
- border-top-color: #b721ff;
- background: #fff;
- color: #222;
- }
-
.tabs-menu-radio {
display: none;
}
.tab-container {
display: none;
.tiles-container {
display: grid;
grid-gap: 24px;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 1fr;
grid-auto-flow: row dense;
.tile {
position: relative;
overflow: hidden;
+ a {
+ color: #000000;
+ text-decoration: none;
+ }
+
.tile-content {
position: absolute;
background-color: #c3c3c3;
width: 100%;
opacity: 0.9;
padding: 8px;
z-index: 1;
overflow: hidden;
bottom: 0;
box-sizing: border-box;
.tile-content-wrapper {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
line-height: 20px;
height: 103px;
overflow: hidden;
.tile-title {
font-weight: bold;
line-height: 20px;
margin: 10px 0;
}
.tile-subtitle {
line-height: 20px;
}
}
.spacer {
height: 5px;
}
}
.tile-image {
z-index: 0;
width: 100%;
height: 100%;
picture {
height: 100%;
width: 100% !important;
}
}
}
.tile.square {
grid-column: span 1;
grid-row: span 1;
.tile-image--horizontal {
display: none;
}
.tile-image--vertical {
display: none;
}
.tile-image--square {
picture img {
display: block !important;
}
}
}
.tile.horizontal {
grid-column: span 2;
grid-row: span 1;
.tile-image--vertical {
display: none;
}
.tile-image--square {
display: none;
}
.tile-image--horizontal {
picture img {
display: block !important;
}
}
}
.tile.vertical {
grid-row: span 2;
grid-column: span 1;
.tile-image--horizontal {
display: none;
}
.tile-image--square {
display: none;
}
.tile-image--vertical {
picture img {
display: block !important;
}
}
}
}
.buttons-container {
margin-top: 36px;
display: flex;
justify-content: center;
flex-flow: row wrap;
column-gap: 18px;
row-gap: 16px;
.button {
display: inline-block;
text-align: center;
padding: 8px 24px;
border: 1px solid #000000;
color: var(--text-color);
min-width: 240px;
line-height: 23px;
font-size: 16px;
&.dark {
background-color: #000000;
--text-color: #ffffff;
}
&.bright {
background-color: #ffffff;
--text-color: #000000;
}
}
}
}
@container (max-width: 950px) {
.tab-container {
.tiles-container {
grid-template-columns: repeat(2, 1fr);
.tile.vertical {
grid-row: span 1;
grid-column: span 1;
.tile-image--vertical {
display: none;
}
.tile-image--horizontal {
display: none;
}
.tile-image--square {
display: block;
picture img {
display: block !important;
}
}
}
.tile.horizontal {
grid-column: span 1;
}
}
}
}
@container (max-width: 700px) {
.tab-container {
.tiles-container {
grid-template-columns: 1fr;
- max-width: 450px;
+ max-width: 700px;
margin: 0 auto;
+ .tile {
+ max-height: 450px;
+ }
+
.tile.horizontal {
grid-column: span 1;
grid-row: span 1;
.tile-image--vertical {
display: none;
}
.tile-image--horizontal {
display: none;
}
.tile-image--square {
display: block;
picture img {
display: block !important;
}
}
}
}
}
}
}
diff --git a/src/back/jdd-components/dynamic-grid/dynamic-grid.jdd.tsx b/src/back/jdd-components/dynamic-grid/dynamic-grid.jdd.tsx
index 20401a8..c64e66f 100644
--- a/src/back/jdd-components/dynamic-grid/dynamic-grid.jdd.tsx
+++ b/src/back/jdd-components/dynamic-grid/dynamic-grid.jdd.tsx
@@ -1,176 +1,200 @@
import type { FlatTemplatable } from "tempstream";
import { TempstreamJSX } from "tempstream";
-import type { ComponentToHTMLArgs, ExtractParsed, JDDContext } from "@sealcode/jdd";
+import type {
+ ComponentToHTMLArgs,
+ ExtractParsed,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
import { Component, ComponentArguments } from "@sealcode/jdd";
type ExtractArray<T> = T extends Array<infer X> ? X : never;
const generate_id = (function* () {
while (true) {
for (let i = 1; i <= 10000; i++) {
yield i;
}
}
})();
const component_arguments = {
heading: new ComponentArguments.ShortText(),
tabs: new ComponentArguments.List(
new ComponentArguments.Structured({
name: new ComponentArguments.ShortText().setExampleValues([
"Tab 1",
"Tab 2",
"Tab 3",
]),
tiles: new ComponentArguments.List(
new ComponentArguments.Structured({
title: new ComponentArguments.ShortText(),
subtitle: new ComponentArguments.ShortText(),
url: new ComponentArguments.ShortText(),
photo: new ComponentArguments.Structured({
image: new ComponentArguments.Image(),
alt: new ComponentArguments.ShortText(),
}),
shape: new ComponentArguments.Enum([
"square",
"horizontal",
"vertical",
]),
})
),
buttons: new ComponentArguments.List(
new ComponentArguments.Structured({
text: new ComponentArguments.ShortText().setExampleValues([
"Button 1",
"Button 2",
"Button 3",
]),
color: new ComponentArguments.Enum(["dark", "bright"] as const),
link: new ComponentArguments.ShortText(),
})
),
})
),
} as const;
export class DynamicGrid extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.heading || null;
+ }
+
public image_sizes = {
- square: { width: 400, height: 400 },
+ square: { width: 700, height: 700 },
horizontal: { width: 824, height: 400 },
vertical: { width: 400, height: 824 },
};
renderTile(
jdd_context: JDDContext,
tile: ExtractArray<
ExtractArray<ExtractParsed<typeof component_arguments.tabs>>["tiles"]
>
) {
return (
<div class={["tile", tile.shape]}>
- <div class="tile-content">
- <div class="tile-content-wrapper">
- <h3 class="tile-title">{tile.title}</h3>
- <p class="tile-subtitle">{tile.subtitle}</p>
+ <a href={[tile.url]}>
+ <div class="tile-content">
+ <div class="tile-content-wrapper">
+ <h3 class="tile-title">{tile.title}</h3>
+ <p class="tile-subtitle">{tile.subtitle}</p>
+ </div>
+ <div class="spacer"></div>
</div>
- <div class="spacer"></div>
- </div>
- {(["square", "horizontal", "vertical"] as const).map((shape) => (
- <div class={["tile-image", `tile-image--${shape}`]}>
- {jdd_context.render_image(tile.photo.image, {
- sizesAttr: `${this.image_sizes[shape].width}px`,
- alt: tile.photo.alt,
- container: {
- ...this.image_sizes[shape],
- objectFit: "cover",
- },
- crop: this.image_sizes[shape],
- imgStyle: "display: none;",
- })}
- </div>
- ))}
+ {(["square", "horizontal", "vertical"] as const).map((shape) => (
+ <div class={["tile-image", `tile-image--${shape}`]}>
+ {!tile.photo
+ ? ""
+ : jdd_context.render_image(tile.photo.image, {
+ sizesAttr:
+ "(max-width: 730px) 100vw, (max-width: 980px) 50vw, 810px",
+ alt: tile.photo.alt,
+ container: {
+ ...this.image_sizes[shape],
+ objectFit: "cover",
+ },
+ crop: this.image_sizes[shape],
+ imgStyle: "display: none;",
+ })}
+ </div>
+ ))}
+ </a>
</div>
);
}
composeTab(
jdd_context: JDDContext,
tab: ExtractArray<ExtractParsed<typeof component_arguments.tabs>>,
tab_id: string
) {
return (
<div class="tab-container" id={tab_id}>
<div class="tiles-container">
{tab.tiles.map((tile) => this.renderTile(jdd_context, tile))}
</div>
<div class="buttons-container">
{tab.buttons.map((button) => (
<a class={["button", button.color]} href={button.link}>
{button.text}
</a>
))}
</div>
</div>
);
}
- toHTML({
- args: { heading, tabs },
- classes,
- jdd_context,
- }: ComponentToHTMLArgs<typeof component_arguments>): FlatTemplatable {
+ toHTML(
+ {
+ args: { heading, tabs },
+ jdd_context,
+ classes,
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>,
+ tab_style_when_active = `border-bottom-color: #fff;
+ border-top-color: #b721ff;
+ background: #fff;
+ color: #222;`
+ ): FlatTemplatable {
const { value: id } = generate_id.next();
return (
- <div class={["dynamic-grid-component", ...classes]}>
+ <div
+ class={["dynamic-grid-component", ...classes]}
+ style={`--jdd-index: ${index}`}
+ >
<h2 class="dynamic-grid-title">{heading}</h2>
<ul class="tabs-menu">
{tabs.map((tab, index) => {
return (
<li class="tabs-menu-button">
<label for={`input-${id}-${index}`}>{tab.name}</label>
{
/* HTML */ `<style>
body:has(#input-${id}-${index}:checked)
li:has([for="input-${id}-${index}"]) {
- border-bottom-color: #fff;
- border-top-color: #b721ff;
- background: #fff;
- color: #222;
+ ${tab_style_when_active}
}
</style>`
}
</li>
);
})}
</ul>
{tabs.map((tab, index) => {
return (
<section>
{this.composeTab(jdd_context, tab, `tab-${id}-${index}`)}
{
/* HTML */ `<style>
body:has(#input-${id}-${index}:checked)
.tab-container#tab-${id}-${index} {
display: block;
}
</style>`
}
<input
name={`tabs-menu-${id}`}
class="tabs-menu-radio"
type="radio"
id={`input-${id}-${index}`}
checked={index == 0}
/>
</section>
);
})}
</div>
);
}
}
diff --git a/src/back/jdd-components/horizontal-gallery/horizontal-gallery.css b/src/back/jdd-components/horizontal-gallery/horizontal-gallery.css
new file mode 100644
index 0000000..1e78844
--- /dev/null
+++ b/src/back/jdd-components/horizontal-gallery/horizontal-gallery.css
@@ -0,0 +1,79 @@
+.horizontal-gallery {
+ --max-image-width: 600px;
+ .horizontal-gallery__top-bar {
+ display: flex;
+ gap: 16px;
+ width: 100%;
+
+ h2 {
+ font-size: 32px;
+ line-height: 48px;
+ font-family: Exotc350DmBdEU, sans-serif;
+ text-transform: uppercase;
+ text-align: center;
+ color: #0d4d69;
+ flex-grow: 1;
+ margin-top: 0;
+ @container (max-width: 600px) {
+ font-size: 28px;
+ line-height: 34px;
+ }
+ }
+
+ .horizontal-gallery__buttons,
+ &::before {
+ display: flex;
+ width: 92px;
+ content: " ";
+ align-items: center;
+ flex-shrink: 0;
+
+ @container (max-width: 600px) {
+ display: none !important;
+ }
+ }
+
+ @container (max-width: 600px) {
+ &::before {
+ /* repeated from above, as the above selector somehow does
+ not apply to the :before pseudo-element */
+ display: none !important;
+ }
+ }
+
+ button {
+ border: none;
+ background: none;
+ cursor: pointer;
+ }
+ }
+
+ .horizontal-scroller__element-container {
+ scrollbar-width: none;
+ &::-webkit-scrollbar {
+ width: 0px;
+ height: 0;
+ background: transparent; /* make scrollbar transparent */
+ }
+ }
+
+ .horizontal-scroller__element {
+ max-width: 100cqw;
+ align-items: center;
+
+ &,
+ picture,
+ img {
+ border-radius: 10px;
+ max-height: min(75vh, 700px);
+ width: auto !important;
+ max-width: 100cqw;
+ }
+
+ picture {
+ height: auto;
+ width: 100% !important;
+ background-image: none !important;
+ }
+ }
+}
diff --git a/src/back/jdd-components/horizontal-gallery/horizontal-gallery.jdd.tsx b/src/back/jdd-components/horizontal-gallery/horizontal-gallery.jdd.tsx
new file mode 100644
index 0000000..1015055
--- /dev/null
+++ b/src/back/jdd-components/horizontal-gallery/horizontal-gallery.jdd.tsx
@@ -0,0 +1,83 @@
+import type { FlatTemplatable } from "tempstream";
+import { TempstreamJSX } from "tempstream";
+import type {
+ ComponentToHTMLArgs,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
+import { Component, ComponentArguments, insert_nbsp } from "@sealcode/jdd";
+import { horizontalScroller } from "../../routes/common/horizontal-scroller/horizontal-scroller.js";
+
+const component_arguments = {
+ title: new ComponentArguments.ShortText(),
+ images: new ComponentArguments.List(
+ new ComponentArguments.Structured({
+ image: new ComponentArguments.Image(),
+ alt: new ComponentArguments.ShortText(),
+ })
+ ),
+} as const;
+
+export class HorizontalGallery extends Component<typeof component_arguments> {
+ getArguments() {
+ return component_arguments;
+ }
+
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.title || null;
+ }
+
+ toHTML({
+ args: { title, images },
+ classes,
+ jdd_context: { render_image },
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>): FlatTemplatable {
+ return (
+ <div
+ class={["horizontal-gallery", ...classes]}
+ style={`--jdd-index: ${index}`}
+ >
+ {horizontalScroller({
+ elements: (images || []).map((image) =>
+ render_image(image.image, {
+ sizesAttr: "100vw",
+ container: { width: 800, height: 500, objectFit: "contain" },
+ alt: image.alt,
+ })
+ ),
+ render: async ({ scroller, markers }) => (
+ <div>
+ <div class="horizontal-gallery__top-bar">
+ <h2>{insert_nbsp(title)}</h2>
+ <div class="horizontal-gallery__buttons">
+ <button
+ class="prev-button"
+ data-action="horizontal-scroller#scrollLeft"
+ type="button"
+ >
+ <span style="transform: rotate(180deg); margin-right: 16px;">
+ →
+ </span>
+ </button>
+ <button
+ class="next-button"
+ data-action="horizontal-scroller#scrollRight"
+ type="button"
+ >
+ <span>→</span>
+ </button>
+ </div>
+ </div>
+ {scroller}
+ {markers}
+ </div>
+ ),
+ })}
+ </div>
+ );
+ }
+}
diff --git a/src/back/jdd-components/image-demo/image-demo.css b/src/back/jdd-components/image-demo/image-demo.css
index b6967aa..3bc8d85 100644
--- a/src/back/jdd-components/image-demo/image-demo.css
+++ b/src/back/jdd-components/image-demo/image-demo.css
@@ -1,6 +1,6 @@
.image-demo {
- picture {
- width: 200px;
- height: 200px;
- }
+ picture {
+ width: 200px;
+ height: 200px;
+ }
}
diff --git a/src/back/jdd-components/image-demo/image-demo.jdd.tsx b/src/back/jdd-components/image-demo/image-demo.jdd.tsx
index 9eaddf1..eabaada 100644
--- a/src/back/jdd-components/image-demo/image-demo.jdd.tsx
+++ b/src/back/jdd-components/image-demo/image-demo.jdd.tsx
@@ -1,62 +1,64 @@
import type { FlatTemplatable } from "tempstream";
import { TempstreamJSX } from "tempstream";
import type { ComponentToHTMLArgs } from "@sealcode/jdd";
import { Component, ComponentArguments } from "@sealcode/jdd";
const component_arguments = {
image_with_alt: new ComponentArguments.Structured({
image: new ComponentArguments.Image(),
alt: new ComponentArguments.ShortText(),
}),
multiple_images: new ComponentArguments.List(new ComponentArguments.Image()),
} as const;
export class ImageDemo extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
toHTML({
args: { image_with_alt, multiple_images },
jdd_context: { render_image },
+ classes,
+ index,
}: ComponentToHTMLArgs<typeof component_arguments>): FlatTemplatable {
return (
- <div class="image-demo">
+ <div class={["image-demo", ...classes]} style={`--jdd-index: ${index}`}>
<h2>Image with alt text</h2>
{render_image(image_with_alt.image, {
container: { width: 200, height: 200 },
alt: image_with_alt.alt,
})}
<h2>Multiple images</h2>
<div class="image-grid">
{multiple_images.map((image) =>
render_image(image, {
container: {
width: 200,
height: 200,
objectFit: "cover",
},
alt: "demo",
})
)}
</div>
<h2>The same images but cropped with smartcrop</h2>
<div class="image-grid">
{multiple_images.map((image) =>
render_image(image, {
container: {
width: 200,
height: 200,
objectFit: "cover",
},
crop: { width: 200, height: 200 },
alt: "demo",
})
)}
</div>
</div>
);
}
}
diff --git a/src/back/jdd-components/map-with-pins/map-with-pins.jdd.tsx b/src/back/jdd-components/map-with-pins/map-with-pins.jdd.tsx
index 034046c..cf0b87c 100644
--- a/src/back/jdd-components/map-with-pins/map-with-pins.jdd.tsx
+++ b/src/back/jdd-components/map-with-pins/map-with-pins.jdd.tsx
@@ -1,62 +1,59 @@
import { TempstreamJSX } from "tempstream";
import type { ComponentToHTMLArgs } from "@sealcode/jdd";
import { Component, ComponentArguments } from "@sealcode/jdd";
-const coordinates = new ComponentArguments.ShortText();
-coordinates.setExampleValues([
- "52.39706859245613, 16.898251247012197",
- "52.8, 16.6",
- "52.5, 16.1",
- "52.1, 16.35",
-]);
-
const component_arguments = {
pins: new ComponentArguments.List(
new ComponentArguments.Structured({
title: new ComponentArguments.ShortText(),
address: new ComponentArguments.ShortText(),
- coordinates,
+ coordinates: new ComponentArguments.ShortText(),
button: new ComponentArguments.Structured({
text: new ComponentArguments.ShortText(),
link: new ComponentArguments.ShortText(),
}),
})
),
} as const;
export class MapWithPins extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
async getEarlyAssets() {
return [
{
type: "script" as const,
url: "https://unpkg.com/leaflet@1.9.4/dist/leaflet.js",
identity: "https://unpkg.com/leaflet@1.9.4/dist/leaflet.js",
integrity:
"sha512-BwHfrr4c9kmRkLw6iXFdzcdWV/PGkVgiIyIWLLlTSXzWQzxuSg4DiQUCpauz/EWjgk5TYQqX/kvn9pG1NpYfqg==",
},
{
type: "style" as const,
url: "https://unpkg.com/leaflet@1.9.4/dist/leaflet.css",
integrity:
"sha512-Zcn6bjR/8RZbLEpLIeOwNtzREBAJnUKESxces60Mpoj+2okopSAcSUIUOseddDm0cxnGQzxIR7vJgsLZbdLE3w==",
identity: "https://unpkg.com/leaflet@1.9.4/dist/leaflet.css",
},
];
}
- toHTML({ args: { pins } }: ComponentToHTMLArgs<typeof component_arguments>) {
+ toHTML({
+ args: { pins },
+ classes,
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>) {
return (
<div
- class="map-with-pins"
+ class={["map-with-pins bleed-out", ...classes]}
+ style={`--jdd-index: ${index}`}
data-controller="map-with-pins"
data-map-with-pins-pins-value={JSON.stringify(pins)
.replaceAll("\n", "\\n")
.replaceAll('"', "&quot;")}
></div>
);
}
}
diff --git a/src/back/jdd-components/map-with-pins/map-with-pins.stimulus.ts b/src/back/jdd-components/map-with-pins/map-with-pins.stimulus.ts
index 8bc642d..66046b5 100644
--- a/src/back/jdd-components/map-with-pins/map-with-pins.stimulus.ts
+++ b/src/back/jdd-components/map-with-pins/map-with-pins.stimulus.ts
@@ -1,140 +1,151 @@
+/* eslint-disable @typescript-eslint/no-unsafe-member-access */
+/* eslint-disable @typescript-eslint/no-unsafe-call */
+/* eslint-disable @typescript-eslint/consistent-type-assertions */
+/* eslint-disable @typescript-eslint/no-explicit-any */
import { Controller } from "stimulus";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
declare global {
interface Window {
L: typeof import("leaflet");
}
}
type Pin = {
title: string;
address: string;
coordinates: string;
button: { link: string; text: string };
};
function parseCoords(s: string): [number, number] {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
return s.split(", ").map((x) => parseFloat(x)) as [number, number];
}
function decodeHTMLEntities(text) {
var entities = [
["amp", "&"],
["apos", "'"],
["#x27", "'"],
["#x2F", "/"],
["#39", "'"],
["#47", "/"],
["lt", "<"],
["gt", ">"],
["nbsp", " "],
["quot", '"'],
];
for (var i = 0, max = entities.length; i < max; ++i)
text = text.replace(new RegExp("&" + entities[i][0] + ";", "g"), entities[i][1]);
return text;
}
export default class MapWithPins extends Controller {
id: string;
map: L.Map;
initiated = false;
resizeObserver: ResizeObserver;
static values = {
pins: String,
};
async connect() {
if (this.initiated) {
this.map.remove();
}
if (window.L) {
this.initiateMap();
} else {
document.addEventListener(
"loaded-https://unpkg.com/leaflet@1.9.4/dist/leaflet.js",
() => {
this.initiateMap();
+ (window as any).externalLinks();
}
);
}
}
disconnect() {
this.map.remove();
this.initiated = false;
- this.resizeObserver.disconnect();
+ this.resizeObserver?.disconnect();
}
initiateMap() {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- this.map = window.L.map(this.element as HTMLElement);
- this.resizeObserver = new ResizeObserver(() => {
- this.map.invalidateSize();
+ this.map = window.L.map(this.element as HTMLElement, {
+ dragging: "ontouchstart" in document.documentElement,
+ scrollWheelZoom: false,
});
- this.resizeObserver.observe(this.element);
+ if (window.ResizeObserver) {
+ this.resizeObserver = new ResizeObserver(() => {
+ this.map.invalidateSize();
+ });
+ }
+
+ this.resizeObserver?.observe(this.element);
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
window.L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution:
'&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
}).addTo(this.map);
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const pins = JSON.parse(
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument
decodeHTMLEntities(
this.element.attributes["data-map-with-pins-pins-value"].value
)
) as Pin[];
pins.forEach((pin) => this.addPin(pin));
this.initiated = true;
}
async pinsValueChanged() {
if (this.initiated) {
await this.connect();
}
}
addPin(pin: Pin) {
const pinIcon = window.L.icon({
iconUrl: "/pin-icon.svg",
iconSize: [29, 41],
iconAnchor: [14, 40],
popupAnchor: [-3, 14],
});
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
window.L.marker(parseCoords(pin.coordinates), {
icon: pinIcon,
}).addTo(this.map);
window.L.popup({
closeButton: false,
autoClose: false,
closeOnEscapeKey: false,
closeOnClick: false,
className: "popup",
offset: [0, -32],
})
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
.setLatLng(parseCoords(pin.coordinates))
.setContent(
/* HTML */ `<div class="popup-content">
<p class="title">${pin.title}</p>
<p class="address">${pin.address}</p>
<a class="button" href="${pin.button.link}"> ${pin.button.text} </a>
</div> `
)
.addTo(this.map);
this.map.setView(parseCoords(pin.coordinates), 13);
}
}
diff --git a/src/back/jdd-components/nice-box/nice-box.jdd.tsx b/src/back/jdd-components/nice-box/nice-box.jdd.tsx
index 792b351..3b48519 100644
--- a/src/back/jdd-components/nice-box/nice-box.jdd.tsx
+++ b/src/back/jdd-components/nice-box/nice-box.jdd.tsx
@@ -1,43 +1,55 @@
import { TempstreamJSX } from "tempstream";
-import type { ComponentToHTMLArgs } from "@sealcode/jdd";
+import type {
+ ComponentToHTMLArgs,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
import { Component, ComponentArguments } from "@sealcode/jdd";
const component_arguments = {
title: new ComponentArguments.ShortText(),
content: new ComponentArguments.Markdown(),
images: new ComponentArguments.List(
new ComponentArguments.Structured({
image: new ComponentArguments.Image(),
alt: new ComponentArguments.ShortText(),
})
),
} as const;
export class NiceBox extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.title || null;
+ }
+
async toHTML({
args: { title, content, images },
classes,
jdd_context: { render_markdown, render_image, language },
+ index,
}: ComponentToHTMLArgs<typeof component_arguments>): Promise<string> {
return (
- <div class={["nice-box", ...classes]}>
+ <div class={["nice-box", ...classes]} style={`--jdd-index: ${index}`}>
<h2>{title}</h2>
<div>{render_markdown(language, content)}</div>
{images.map((image) =>
render_image(image.image, {
container: {
width: 200,
height: 200,
objectFit: "contain",
},
alt: image?.alt || "",
})
)}
</div>
);
}
}
diff --git a/src/back/jdd-components/photo/photo.css b/src/back/jdd-components/photo/photo.css
new file mode 100644
index 0000000..a5aeb26
--- /dev/null
+++ b/src/back/jdd-components/photo/photo.css
@@ -0,0 +1,9 @@
+.image-jdd {
+ picture {
+ border-radius: 10px;
+ img {
+ width: auto;
+ border-radius: 10px;
+ }
+ }
+}
diff --git a/src/back/jdd-components/photo/photo.jdd.tsx b/src/back/jdd-components/photo/photo.jdd.tsx
new file mode 100644
index 0000000..3dff5f9
--- /dev/null
+++ b/src/back/jdd-components/photo/photo.jdd.tsx
@@ -0,0 +1,56 @@
+import type { FlatTemplatable } from "tempstream";
+import { TempstreamJSX } from "tempstream";
+import type {
+ ComponentToHTMLArgs,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
+import { Component, ComponentArguments } from "@sealcode/jdd";
+
+import _locreq from "locreq";
+
+const locreq = _locreq(new URL("./", import.meta.url).pathname);
+
+const component_arguments = {
+ image: new ComponentArguments.Structured({
+ image: new ComponentArguments.Image().setExampleImages(
+ ["image1.jpg", "image2.jpg", "image3.jpg", "image5.jpg"].map((name) =>
+ locreq.resolve("assets/" + name)
+ )
+ ),
+ alt: new ComponentArguments.ShortText(),
+ }),
+} as const;
+
+export class Photo extends Component<typeof component_arguments> {
+ getArguments() {
+ return component_arguments;
+ }
+
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.image.alt || null;
+ }
+
+ getHeadings() {
+ return [];
+ }
+
+ toHTML({
+ args: { image },
+ classes,
+ jdd_context: { render_image },
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>): FlatTemplatable {
+ return (
+ <div class={["image-jdd", ...classes]} style={`--jdd-index: ${index}`}>
+ {render_image(image.image, {
+ sizesAttr: "100vw",
+ alt: image.alt,
+ })}
+ </div>
+ );
+ }
+}
diff --git a/src/back/jdd-components/table/table.jdd.tsx b/src/back/jdd-components/table/table.jdd.tsx
index ab0b41a..39b1d7e 100644
--- a/src/back/jdd-components/table/table.jdd.tsx
+++ b/src/back/jdd-components/table/table.jdd.tsx
@@ -1,54 +1,52 @@
import { TempstreamJSX } from "tempstream";
import type { ComponentToHTMLArgs } from "@sealcode/jdd";
import { Component, ComponentArguments, isTableHeader } from "@sealcode/jdd";
const component_arguments = {
table: new ComponentArguments.Table(
new ComponentArguments.ShortText(),
new ComponentArguments.Structured({
- color: new ComponentArguments.Enum(["red", "blue", "green", "aquamarine"]),
- word: new ComponentArguments.ShortText().setExampleValues([
- "apple",
- "banana",
- "pineapple",
- "carrot",
- ]),
+ content: new ComponentArguments.ShortText().setExampleValues([""]),
})
),
} as const;
export class Table extends Component<typeof component_arguments> {
getArguments() {
return component_arguments;
}
- toHTML({ args: { table } }: ComponentToHTMLArgs<typeof component_arguments>) {
+ toHTML({
+ args: { table },
+ classes,
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>) {
return (
- <div class="table">
+ <div class={["table", ...classes]} style={`--jdd-index: ${index}`}>
<table>
<tbody>
{table.rows.map((row) =>
isTableHeader(row) ? (
<tr>
<th
colspan={this.getArguments()
.table.getColumnsCount(table)
.toString()}
>
{row.header_content}
</th>
</tr>
) : (
<tr>
- {row.cells.map(({ color, word }) => (
- <td style={`color: ${color}`}>{word}</td>
+ {row.cells.map(({ content }) => (
+ <td style>{content}</td>
))}
</tr>
)
)}
</tbody>
</table>
</div>
);
}
}
diff --git a/src/back/jdd-components/tekst/tekst.css b/src/back/jdd-components/tekst/tekst.css
new file mode 100644
index 0000000..7634cee
--- /dev/null
+++ b/src/back/jdd-components/tekst/tekst.css
@@ -0,0 +1,6 @@
+.tekst.markdown {
+ font-family: Poppins, sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ color: #0d4d69;
+}
diff --git a/src/back/jdd-components/tekst/tekst.jdd.tsx b/src/back/jdd-components/tekst/tekst.jdd.tsx
new file mode 100644
index 0000000..8822186
--- /dev/null
+++ b/src/back/jdd-components/tekst/tekst.jdd.tsx
@@ -0,0 +1,47 @@
+import type { FlatTemplatable } from "tempstream";
+import { TempstreamJSX } from "tempstream";
+import type {
+ ComponentToHTMLArgs,
+ ExtractStructuredComponentArgumentsParsed,
+ JDDContext,
+} from "@sealcode/jdd";
+import { Component, ComponentArguments } from "@sealcode/jdd";
+
+const component_arguments = {
+ content: new ComponentArguments.Markdown(),
+} as const;
+
+export class Tekst extends Component<typeof component_arguments> {
+ getArguments() {
+ return component_arguments;
+ }
+
+ getTitle(
+ _: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<typeof component_arguments>
+ ) {
+ return args.content.slice(0, 20) + "..." || null;
+ }
+
+ toHTML({
+ args: { content },
+ classes,
+ jdd_context: { render_markdown, language },
+ index,
+ }: ComponentToHTMLArgs<typeof component_arguments>): FlatTemplatable {
+ return (
+ <div class={["tekst markdown", ...classes]} style={`--jdd-index: ${index}`}>
+ {render_markdown(language, content)}
+ </div>
+ );
+ }
+
+ getHeadings(
+ context: JDDContext,
+ args: ExtractStructuredComponentArgumentsParsed<{
+ readonly content: ComponentArguments.Markdown;
+ }>
+ ) {
+ return this.getArguments().content.extractHeadings(args.content);
+ }
+}
diff --git a/src/back/jdd-context.ts b/src/back/jdd-context.ts
index 432afb2..505fd4a 100644
--- a/src/back/jdd-context.ts
+++ b/src/back/jdd-context.ts
@@ -1,21 +1,21 @@
-import type { BaseContext } from "koa";
+import type { Context } from "koa";
import type { JDDContext } from "@sealcode/jdd";
import type { FilePointer } from "@sealcode/file-manager";
import { makeSimpleJDDContext } from "@sealcode/jdd";
import { TheFileManager } from "./file-manager.js";
import { imageRouter } from "./image-router.js";
-export function makeJDDContext(ctx: BaseContext): JDDContext {
+export function makeJDDContext(ctx: Context): JDDContext {
return {
language: "pl",
...makeSimpleJDDContext(TheFileManager),
render_image: async (image: string | FilePointer | null, args) => {
if (!image) {
return "";
}
const file = await TheFileManager.toPointer(image);
return imageRouter.image(await file.getPath(), args);
},
ctx,
};
}
diff --git a/src/back/main.admin.css b/src/back/main.admin.css
new file mode 100644
index 0000000..0f1c327
--- /dev/null
+++ b/src/back/main.admin.css
@@ -0,0 +1,5 @@
+table td .list-actions {
+ display: flex;
+ flex-flow: row wrap;
+ gap: 8px;
+}
diff --git a/src/back/policy-types/roles.test.ts b/src/back/policy-types/roles.test.ts
index dae1e8d..22debf4 100644
--- a/src/back/policy-types/roles.test.ts
+++ b/src/back/policy-types/roles.test.ts
@@ -1,24 +1,26 @@
+import { LONG_TEST_TIMEOUT } from "../test_utils/webhint.js";
import { withProdApp } from "../test_utils/with-prod-app.js";
describe("roles", () => {
it("allows access to users with designated role and denies access to users without it", async () =>
withProdApp(async ({ app }) => {
await app.collections.users.suCreate({
username: "regular-user",
password: "password",
email: "regular@example.com",
roles: [],
});
const admin = await app.collections.users.suCreate({
username: "someadmin",
password: "admin-password",
email: "admin@example.com",
roles: [],
});
+
await app.collections["user-roles"].suCreate({
user: admin.id,
role: "admin",
});
- }));
+ })).timeout(LONG_TEST_TIMEOUT);
});
diff --git a/src/back/policy-types/roles.ts b/src/back/policy-types/roles.ts
index 563d9c2..297e8cf 100644
--- a/src/back/policy-types/roles.ts
+++ b/src/back/policy-types/roles.ts
@@ -1,62 +1,90 @@
-import type { Context } from "sealious";
+/* eslint-disable @typescript-eslint/consistent-type-assertions */
+import type { ActionName, Collection, Context } from "sealious";
+import { Policies } from "sealious";
import { Policy, QueryTypes } from "sealious";
export class Roles extends Policy {
static type_name = "roles";
allowed_roles: string[];
constructor(allowed_roles: string[]) {
super(allowed_roles);
this.allowed_roles = allowed_roles;
}
async countMatchingRoles(context: Context) {
const user_id = context.user_id;
context.app.Logger.debug2("ROLES", "Checking the roles for user", user_id);
- if (!context.app.collections["user-roles"]) {
- throw new Error(`context.app.collections["user-roles"] undefined`);
- }
- const user_roles = await context.app.collections["user-roles"]
- .list(context)
- .filter({ user: user_id })
- .fetch();
- const roles = user_roles.items.map(
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- (user_role) => user_role.get("role") as string
- );
+ const roles = await context.cache("roles_for_this_user", async () => {
+ const { items: user_roles } = await (
+ context.app.collections["user-roles"] as Collection
+ )
+ .suList()
+ .filter({ user: user_id })
+ .fetch();
+ const roles = user_roles.map(
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ (user_role) => user_role.get("role") as string
+ );
+ return roles;
+ });
return this.allowed_roles.filter((allowed_role) => roles.includes(allowed_role))
.length;
}
async _getRestrictingQuery(context: Context) {
if (context.is_super) {
return new QueryTypes.AllowAll();
}
if (context.user_id === null) {
return new QueryTypes.DenyAll();
}
const matching_roles_count = await this.countMatchingRoles(context);
return matching_roles_count > 0
? new QueryTypes.AllowAll()
: new QueryTypes.DenyAll();
}
async checkerFunction(context: Context) {
if (context.user_id === null) {
return Policy.deny(context.app.i18n("policy_logged_in_deny"));
}
const matching_roles_count = await this.countMatchingRoles(context);
return matching_roles_count > 0
? Policy.allow(
context.app.i18n("policy_roles_allow", [
this.allowed_roles.join(", "),
])
)
: Policy.deny(
context.app.i18n("policy_roles_deny", [this.allowed_roles.join(", ")])
);
}
}
+export function CRUDRoles(
+ collection_names: string[],
+ fallbacks: Partial<Record<ActionName, Policy>> = {}
+) {
+ const result = Object.fromEntries(
+ (["show", "create", "edit", "delete"] as ActionName[]).map((action_name) => {
+ const crud_policy = new Roles([
+ "admin",
+ ...collection_names.map(
+ (collection_name) => collection_name + "_" + action_name
+ ),
+ ]);
+ const fallback_policy = fallbacks[action_name];
+ return [
+ action_name,
+ fallback_policy
+ ? new Policies.Or([crud_policy, fallback_policy])
+ : crud_policy,
+ ];
+ })
+ );
+ // console.log(collection_names, result);
+ return result;
+}
diff --git a/src/back/routes/tabs-demo.test.ts b/src/back/routes/.test.ts
similarity index 77%
rename from src/back/routes/tabs-demo.test.ts
rename to src/back/routes/.test.ts
index 7413bc7..7b840ab 100644
--- a/src/back/routes/tabs-demo.test.ts
+++ b/src/back/routes/.test.ts
@@ -1,40 +1,40 @@
import { withProdApp } from "../test_utils/with-prod-app.js";
import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { TabsDemoURL } from "./urls.js";
+import { HomeURL } from "./urls.js";
import { getBrowser } from "../test_utils/browser-creator.js";
import type { Browser, BrowserContext, Page } from "@playwright/test";
-describe("TabsDemo webhint", () => {
+describe("Home webhint", () => {
it("doesn't crash", async function () {
return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(TabsDemoURL);
- await webhintURL(base_url + TabsDemoURL);
+ await rest_api.get(HomeURL);
+ await webhintURL(base_url + HomeURL);
// alternatively you can use webhintHTML for faster but less precise scans
// or for scanning responses of requests that use some form of authorization:
- // const response = await rest_api.get(TabsDemoURL);
+ // const response = await rest_api.get(HomeURL);
// await webhintHTML(response);
});
}).timeout(VERY_LONG_TEST_TIMEOUT);
});
-describe("TabsDemo", () => {
+describe("Home", () => {
let page: Page;
let browser: Browser;
let context: BrowserContext;
beforeEach(async () => {
browser = await getBrowser();
context = await browser.newContext();
page = await context.newPage();
});
afterEach(async () => {
await context.close();
});
it("works as expected", async function () {
return withProdApp(async ({ base_url }) => {
- await page.goto(base_url + TabsDemoURL);
+ await page.goto(base_url + HomeURL);
});
}).timeout(VERY_LONG_TEST_TIMEOUT);
});
diff --git a/src/back/routes/all-components.page.tsx b/src/back/routes/all-components.page.tsx
deleted file mode 100644
index 01974ef..0000000
--- a/src/back/routes/all-components.page.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import type { Context } from "koa";
-import { tempstream, TempstreamJSX } from "tempstream";
-import { Page } from "@sealcode/sealgen";
-import html, { defaultHead } from "../html.js";
-import { registry } from "../jdd-components/components.js";
-import { documentContainerFromParsed, render, renderEarlyAssets } from "@sealcode/jdd";
-import { shuffle } from "../util.js";
-import { makeJDDContext } from "../jdd-context.js";
-
-export const actionName = "AllComponents";
-
-export default new (class AllComponentsPage extends Page {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- async canAccess(_: Context) {
- return { canAccess: true, message: "" };
- }
-
- async render(ctx: Context) {
- const components = registry.getAll();
- const jdd_context = makeJDDContext(ctx);
- const document = await Promise.all(
- shuffle(Object.entries(components)).map(
- async ([component_name, component]) => {
- return {
- component_name,
- args: await component.getExampleValues(jdd_context),
- };
- }
- )
- );
- return html(
- ctx,
- "AllComponents",
- <div style="max-width: 1024px; margin: 0 auto; container-type: inline-size;">
- {render(registry, documentContainerFromParsed(document), jdd_context)}
- </div>,
- {},
- (...args) =>
- tempstream`${defaultHead(...args)}${renderEarlyAssets(
- registry,
- documentContainerFromParsed(document),
- jdd_context
- )}`
- );
- }
-})();
diff --git a/src/back/routes/all-components.test.ts b/src/back/routes/all-components.test.ts
deleted file mode 100644
index 833d3ee..0000000
--- a/src/back/routes/all-components.test.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { AllComponentsURL } from "./urls.js";
-import { getBrowser } from "../test_utils/browser-creator.js";
-import type { Browser, BrowserContext, Page } from "@playwright/test";
-
-describe("AllComponents webhint", () => {
- it("doesn't crash", async function () {
- return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(AllComponentsURL);
- await webhintURL(base_url + AllComponentsURL);
- // alternatively you can use webhintHTML for faster but less precise scans
- // or for scanning responses of requests that use some form of authorization:
- // const response = await rest_api.get(AllComponentsURL);
- // await webhintHTML(response);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
-
-describe("AllComponents", () => {
- let page: Page;
- let browser: Browser;
- let context: BrowserContext;
-
- beforeEach(async () => {
- browser = await getBrowser();
- context = await browser.newContext();
- page = await context.newPage();
- });
-
- afterEach(async () => {
- await context.close();
- });
-
- it("works as expected", async function () {
- return withProdApp(async ({ base_url }) => {
- await page.goto(base_url + AllComponentsURL);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
diff --git a/src/back/routes/common/fullscreen-menu/fullscreen-menu.tsx b/src/back/routes/common/fullscreen-menu/fullscreen-menu.tsx
index 6d02720..3b26a08 100644
--- a/src/back/routes/common/fullscreen-menu/fullscreen-menu.tsx
+++ b/src/back/routes/common/fullscreen-menu/fullscreen-menu.tsx
@@ -1,101 +1,101 @@
/* eslint-disable @typescript-eslint/consistent-type-assertions */
import type { FlatTemplatable } from "tempstream";
import { TempstreamJSX } from "tempstream";
type Styles = {
menu_open: string;
body_when_open: string;
panel_open: string;
};
const default_styles: Styles = {
menu_open: `opacity: 1; visibility: visible; pointer-events: all; transform: scale(1); transition: opacity 200ms, transform 200ms, visibility 0ms 0ms;`,
body_when_open: "overflow: hidden;",
panel_open:
"opacity: 1; transform: translateX(0); visibility: visible; pointer-events: all; transition: opacity 200ms, transform 200ms, visibility 0ms 0ms;",
};
export function fullscreenMenu({
id: menu_id,
panels,
default_panel,
styles = {},
inner_wrapper = (menu_id, content) => (
<div style="width: 100%;">
<div>
<label for={`${menu_id}--visible`}>Close with checkbox label</label>
</div>
<div>{content}</div>
</div>
),
outer_wrapper = (_menu_id: string, content: FlatTemplatable) => content,
}: {
id: string;
panels: Record<string, FlatTemplatable>;
default_panel: string;
styles?: Partial<Styles>;
outer_wrapper?: (menu_id: string, inner: FlatTemplatable) => FlatTemplatable;
inner_wrapper?: (menu_id: string, inner: FlatTemplatable) => FlatTemplatable;
}) {
const full_styles = { ...default_styles, ...styles };
return outer_wrapper(
menu_id,
<div class={`fullscreen-menu fullscreen-menu--${menu_id}`} id={menu_id}>
<input
type="checkbox"
id={`${menu_id}--visible`}
autocomplete="off"
style="display: none"
/>
{
/* HTML */ `<style>
body:has(#${menu_id}--visible:checked) .fullscreen-menu--${menu_id},
.fullscreen-menu--${menu_id}[open]{
${full_styles.menu_open}
}
body:has(#${menu_id}--visible:checked),
body:has(.fullscreen-menu--${menu_id}[open]) {
${full_styles.body_when_open}
}
</style>`
}
<div>
{Object.keys(panels).map((panel_id) => (
- <span>
+ <>
<input
type="radio"
name={`${menu_id}__active_panel`}
value={panel_id}
checked={panel_id == default_panel}
id={`${menu_id}__activate--${panel_id}`}
autocomplete="off"
style="display: none"
/>
{`<style>
body:has(#${menu_id}--visible:checked) .fullscreen-menu:has(input[value="${panel_id}"]:checked) .fullscreen-menu__panel--${panel_id},
body:has(.fullscreen-menu--${menu_id}[open]) .fullscreen-menu:has(input[value="${panel_id}"]:checked) .fullscreen-menu__panel--${panel_id} {
${full_styles.panel_open}
}
</style>`}
- </span>
+ </>
))}
</div>
<div class="fullscreen-menu__content">
{inner_wrapper(
menu_id,
<div class="fullscreen-menu__panel-container">
{Object.entries(panels).map(([panel_id, panel_content]) => (
<div
class={`fullscreen-menu__panel fullscreen-menu__panel--${panel_id}`}
>
{panel_content}
</div>
))}
</div>
)}
</div>
</div>
);
}
diff --git a/src/back/routes/common/horizontal-scroller/horizontal-scroller.tsx b/src/back/routes/common/horizontal-scroller/horizontal-scroller.tsx
index 77a8f40..ab9cbaa 100644
--- a/src/back/routes/common/horizontal-scroller/horizontal-scroller.tsx
+++ b/src/back/routes/common/horizontal-scroller/horizontal-scroller.tsx
@@ -1,64 +1,65 @@
import type { FlatTemplatable } from "tempstream";
import { tempstream, TempstreamJSX } from "tempstream";
+import type { Stringifiable } from "tempstream/@types/stringify.js";
-const make_id = function* () {
+const make_id = (function* () {
let i = 0;
while (true) {
yield i++;
if (i == 999999999) {
i = 0;
}
}
-};
+})();
export async function horizontalScroller({
classes = [],
elements,
render = async ({ scroller, markers }) => tempstream`${scroller}${markers}`,
}: {
classes?: string[];
- elements: FlatTemplatable[];
+ elements: (Stringifiable | Promise<Stringifiable>)[];
render?: (options: {
scroller: FlatTemplatable;
markers: FlatTemplatable;
}) => Promise<FlatTemplatable>;
}) {
- const id = make_id().next().value;
+ const id = make_id.next().value;
const scroller_id = `horizontal-scroller-${id}`;
const scroller = (
<div
class="horizontal-scroller__element-container"
data-horizontal-scroller-target="scroller"
>
{elements.map((e, index) => (
<div
id={scroller_id + "__element--number-" + index}
class={"horizontal-scroller__element"}
data-horizontal-scroller-target="element"
data-index={index}
>
<span>{e}</span>
</div>
))}
</div>
);
const markers = (
<div class="horizontal-scroller__markers">
{elements.map(() => (
<div
class="horizontal-scroller__marker"
data-horizontal-scroller-target="marker"
></div>
))}
</div>
);
return (
<div
id={scroller_id}
class={["horizontal-scroller", ...classes]}
data-controller="horizontal-scroller"
>
{render({ scroller, markers })}
</div>
);
}
diff --git a/src/back/routes/common/main-view.ts b/src/back/routes/common/main-view.ts
deleted file mode 100644
index a9c749c..0000000
--- a/src/back/routes/common/main-view.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import html from "../../html.js";
-import type { BaseContext } from "koa";
-import type { Readable } from "stream";
-import { tempstream } from "tempstream";
-
-export function MainView(ctx: BaseContext): Readable {
- return html(
- ctx,
- "",
- tempstream/* HTML */ `
- <title>My Own ToDo App</title>
-
- <h1>Sealious App</h1>
- `
- );
-}
diff --git a/src/back/routes/common/navbar.ts b/src/back/routes/common/navbar.ts
index e3579d5..7f17b61 100644
--- a/src/back/routes/common/navbar.ts
+++ b/src/back/routes/common/navbar.ts
@@ -1,40 +1,34 @@
import type { BaseContext } from "koa";
import type { FlatTemplatable } from "tempstream";
-import { SignUpURL, SignInURL, TodoURL, LogoutURL } from "../urls.js";
+import { SignInURL, LogoutURL } from "../urls.js";
export async function default_navbar(ctx: BaseContext): Promise<FlatTemplatable> {
const isLoggedIn = !!ctx.$context.session_id;
const linkData = isLoggedIn
- ? [
- { text: "Logout", url: LogoutURL },
- { text: "To do app", url: TodoURL },
- ]
- : [
- { text: "Sign in", url: SignInURL },
- { text: "Sign up", url: SignUpURL },
- ];
+ ? [{ text: "Logout", url: LogoutURL }]
+ : [{ text: "Sign in", url: SignInURL }];
const linksHTML = linkData
.map((link) =>
link.url === new URL(ctx.url, "https://a.com").pathname
? `<li class="active"><span>${link.text}</span></li>`
: /* HTML */ `<li><a href="${link.url}">${link.text}</a></li>`
)
.join("\n");
return /* HTML */ ` <nav>
<a href="/" class="nav-logo">
<img
src="/assets/logo"
alt="${ctx.$app.manifest.name} - logo"
width="50"
height="50"
/>
${ctx.$app.manifest.name}
</a>
<ul>
${linksHTML}
</ul>
</nav>`;
}
diff --git a/src/back/routes/common/tabs/tabs.tsx b/src/back/routes/common/tabs/tabs.tsx
index 57eebb6..bbecad2 100644
--- a/src/back/routes/common/tabs/tabs.tsx
+++ b/src/back/routes/common/tabs/tabs.tsx
@@ -1,77 +1,77 @@
import type { FlatTemplatable } from "tempstream";
import { TempstreamJSX } from "tempstream";
const ids = (function* () {
let i = 0;
while (true) {
yield i++;
if (i >= 100000) {
i = 0;
}
}
})();
export function tabs({
tabs,
default_tab,
tab_bar,
remember_tab = false,
active_navbar_tab_style = "",
}: {
tabs: {
id: string;
label?: string;
content: FlatTemplatable | Promise<FlatTemplatable>;
}[];
default_tab: string;
- tab_bar?: FlatTemplatable;
+ tab_bar?: FlatTemplatable | Promise<FlatTemplatable>;
remember_tab?: boolean;
active_navbar_tab_style?: string;
}) {
const tab_section_id = ids.next().value;
return (
<section class={`tabs tabs__${tab_section_id}`}>
{tab_bar || (
<nav>
{tabs.map(({ id, label }) => (
<div class="tabs__tab-label">
<label>
<input
type="radio"
id={`tabs__${tab_section_id}__tab__${id}`}
name={`tabs__${tab_section_id}`}
checked={id == default_tab}
autocomplete={remember_tab ? false : "off"}
/>
{label || id}
{
/* HTML */ `<style>
.tabs__${tab_section_id} nav label:has(input:checked) {
${active_navbar_tab_style}
}
</style>`
}
</label>
</div>
))}
</nav>
)}
{tabs.map(({ id, content }) => {
const tab_id = `tabs__${tab_section_id}__tab__${id}`;
return (
<div class={`tabs__tab tabs__${tab_section_id}__tab ` + tab_id}>
{
/* HTML */ `<style>
body:has(#tabs__${tab_section_id}__tab__${id}:checked)
.${tab_id} {
display: block;
}
</style>`
}
{content}
</div>
);
})}
</section>
);
}
diff --git a/src/back/routes/common/tasks-view.ts b/src/back/routes/common/tasks-view.ts
deleted file mode 100644
index c4c33b0..0000000
--- a/src/back/routes/common/tasks-view.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import type { BaseContext } from "koa";
-import type { CollectionItem } from "sealious";
-import frame from "../../frame.js";
-import type { Tasks } from "../../collections/collections.js";
-
-export function Task(task: CollectionItem<typeof Tasks>) {
- const title = task.get("title");
- const title_string = title ? title : "";
- return frame(
- `task-${task.id}`,
- /* HTML */ `<li class="task">
- <input
- type="checkbox"
- data-controller="task"
- data-action="task#toggle"
- data-id="${task.id}"
- ${task.get("done") ? "checked" : ""}
- />
- ${title_string}
- <form method="POST" action="/todo/">
- <input class="delete-button" type="submit" value="Delete" />
- <input
- class="hidden-button"
- type="hidden"
- name="taskId"
- value="${task.id}"
- />
- <input
- class="hidden-button"
- type="hidden"
- id="action"
- name="action"
- value="delete"
- />
- </form>
- </li>`
- );
-}
-
-/*
- <form method="DELETE" action="/todo/${task.id}">
- <input class="delete-button" type="submit" value="Delete" />
- </form>
-*/
-
-export async function TaskList(ctx: BaseContext) {
- const { items: tasks } = await ctx.$app.collections.tasks.list(ctx.$context).fetch();
-
- const tasksTemplate = tasks.map(Task).join("\n");
- return `
- <ul>
- ${tasksTemplate}
- </ul>
- `;
-}
diff --git a/src/back/routes/component-preview/autogrow-textarea.stimulus.ts b/src/back/routes/component-preview/autogrow-textarea.stimulus.ts
deleted file mode 100644
index c0ace01..0000000
--- a/src/back/routes/component-preview/autogrow-textarea.stimulus.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/* eslint-disable @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-assignment */
-import { Controller } from "stimulus";
-
-export default class AutogrowTextarea extends Controller<HTMLTextAreaElement> {
- connect() {
- this.autogrow();
- }
-
- autogrow() {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
- (this.element.parentNode as any).dataset.replicatedValue = this.element.value;
- }
-}
diff --git a/src/back/routes/component-preview/component-debugger.stimulus.ts b/src/back/routes/component-preview/component-debugger.stimulus.ts
deleted file mode 100644
index fafe78c..0000000
--- a/src/back/routes/component-preview/component-debugger.stimulus.ts
+++ /dev/null
@@ -1,165 +0,0 @@
-/* eslint-disable @typescript-eslint/consistent-type-assertions */
-/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
-import { Controller } from "stimulus";
-
-export default class ComponentDebugger extends Controller {
- declare gutterTarget: HTMLDivElement;
- declare checkboxTarget: HTMLInputElement;
- declare checkboxTargets: HTMLInputElement[];
- declare previewTarget: HTMLDivElement;
- declare componentBlockTargets: HTMLDivElement[];
- declare componentBlockTargetDisconnected: (e: HTMLDivElement) => void;
- static targets = ["gutter", "componentBlock", "checkbox", "preview"];
-
- id: string;
- main_form: HTMLFormElement;
- is_resizing = false;
- origin_x: number;
- origin_width: number;
-
- connect() {
- this.main_form = document.querySelector("#component-debugger").closest("form");
- document.documentElement.addEventListener("ts-rebuilt", () => {
- this.main_form.requestSubmit();
- });
- this.main_form.addEventListener("turbo:submit-end", () => {
- // this clears the values of file inputs, so they don't get unecessarily
- // re-uploaded on future submissions - the file is alreade there on the server
- this.main_form
- .querySelectorAll("input[type=file]")
- .forEach((input: HTMLInputElement) => (input.value = ""));
- });
-
- window.addEventListener("load", () => {
- this.update_width_display();
- });
- document.addEventListener("turbo:render", () => this.update_width_display());
-
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const gutter = this.gutterTarget;
- gutter.addEventListener("mousedown", (e) => {
- this.is_resizing = true;
- this.origin_x = e.clientX;
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const resizable = this.targets.find("preview") as HTMLSpanElement;
- this.origin_width = resizable.getBoundingClientRect().width;
- const handler = (e: MouseEvent) => this.resizeHandler(e);
- document.addEventListener("mousemove", handler);
- document.addEventListener("mouseup", () => {
- document.removeEventListener("mousemove", handler);
- });
- e.preventDefault();
- });
- }
-
- update_width_display() {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const preview = this.targets.find("preview") as HTMLSpanElement;
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const component_width_element = this.targets.find(
- "component-width"
- ) as HTMLSpanElement;
- const component_width = preview.offsetWidth;
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- component_width_element.innerHTML = `(width: ${component_width}px)`;
- }
-
- resizeHandler(e: MouseEvent) {
- const width_offset = this.origin_x - e.clientX;
- const new_width = Math.max(this.origin_width + width_offset, 1);
- this.setPreviewWidth(new_width);
- this.update_width_display();
- }
-
- setPreviewWidth(width: number) {
- document
- .getElementById("component-debugger")
- .style.setProperty("--resizable-column-width", width.toString() + "px");
- this.update_width_display();
- }
-
- handleWidthDropdown() {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const dropdown = this.targets.find("size-select") as HTMLSelectElement;
- const value = dropdown.value;
- this.setPreviewWidth(parseInt(value));
- }
-
- componentBlockTargetConnected(block_element: HTMLDivElement) {
- const index = parseInt(block_element.getAttribute("data-component-index"));
- block_element.addEventListener("focusin", () => {
- this.scrollToComponentPreview(index);
- });
- }
-
- previewTargetConnected(preview_element: HTMLDivElement) {
- preview_element.addEventListener("click", ({ target }) => {
- if (!(target instanceof HTMLElement)) {
- return;
- }
- const closest = target.closest(".jdd-component");
- if (!closest) {
- return;
- }
- const index = parseInt(
- Array.from(closest.classList)
- .find((c) => c.startsWith("component-number-"))
- ?.replace("component-number-", "")
- );
- if (isNaN(index)) {
- return;
- }
- this.focusComponentBlock(index);
- });
- }
-
- focusComponentBlock(index: number) {
- const block = this.componentBlockTargets[index];
- if (!block) {
- return;
- }
- this.checkboxTargets[index].checked = true;
- block.scrollIntoView({ behavior: "smooth" });
- (
- block.querySelector(".component-preview-parameters input") as HTMLInputElement
- )?.focus();
- }
-
- getIndex(block_element: HTMLDivElement) {
- const index = parseInt(block_element.getAttribute("data-component-index"));
- return index;
- }
-
- labelClicked(element: MouseEvent) {
- const block_element = (element.target as HTMLDivElement).closest(
- `[data-component-debugger-target="componentBlock"]`
- ) as HTMLDivElement;
- const index = this.getIndex(block_element);
- if (!this.checkboxTargets?.[index].checked) {
- this.scrollToComponentPreview(index);
- }
- }
-
- getPreviewElementForComponentIndex(index: number) {
- const element = this.element.querySelector(
- `.component-number-${index}`
- ) as HTMLDialogElement;
- return element;
- }
-
- scrollToComponentPreview(index: number) {
- const element = this.getPreviewElementForComponentIndex(index);
- if (!element) {
- return;
- }
- const preview_element = this.element.querySelector(".component-preview");
- if (element.clientHeight > preview_element.clientHeight) {
- preview_element.scrollTop = element.offsetTop - 44;
- } else {
- preview_element.scrollTop =
- element.offsetTop -
- (preview_element.clientHeight - element.clientHeight) / 2 -
- 44;
- }
- }
-}
diff --git a/src/back/routes/component-preview/component-input-enum.tsx b/src/back/routes/component-preview/component-input-enum.tsx
deleted file mode 100644
index 650fbf1..0000000
--- a/src/back/routes/component-preview/component-input-enum.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Enum } from "@sealcode/jdd";
-import { TempstreamJSX } from "tempstream";
-import { printArgPath } from "./print-arg-path.js";
-
-export function ComponentInputEnum<State, S extends string, T extends Enum<S>>({
- arg_path,
- arg,
- value,
- onchange,
-}: {
- state: State;
- arg_path: string[];
- arg: T;
- value: string;
- onchange?: string;
-}) {
- return (
- <div>
- <label>
- {arg_path.at(-1) || ""}
- <select name={`$${printArgPath(arg_path)}`} onchange={onchange}>
- {arg.values.map((v: S) => (
- <option value={v} selected={value == v}>
- {v}
- </option>
- ))}
- </select>
- </label>
- </div>
- );
-}
diff --git a/src/back/routes/component-preview/component-input-image.tsx b/src/back/routes/component-preview/component-input-image.tsx
deleted file mode 100644
index 081ccdf..0000000
--- a/src/back/routes/component-preview/component-input-image.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import type { BaseContext } from "koa";
-import { TempstreamJSX } from "tempstream";
-import type { FilePointer } from "@sealcode/file-manager";
-import type { Image } from "@sealcode/jdd";
-import type { StatefulPage } from "@sealcode/sealgen";
-import type { ComponentPreviewActions } from "./component-preview-actions.js";
-import type { JDDPageState } from "./jdd-page.js";
-import { makeJDDContext } from "../../jdd-context.js";
-import { printArgPath } from "./print-arg-path.js";
-import { htmlEscape } from "escape-goat";
-
-export function ComponentInputImage<State extends JDDPageState>({
- arg_path,
- arg,
- value,
- ctx,
- page,
- state,
-}: {
- state: State;
- arg_path: string[];
- arg: Image;
- value: FilePointer | null;
- page: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;
- ctx: BaseContext;
-}): JSX.Element {
- const jdd_context = makeJDDContext(ctx);
- return (
- <div style="margin-bottom: 10px">
- <label
- style="display: flex; align-items: center; column-gap: 10px;"
- data-controller="input-image-preview"
- >
- {arg_path.at(-1) || ""}
- <div class="image-preview-container">
- {value &&
- jdd_context.render_image(value, {
- container: { width: 40, height: 40, objectFit: "cover" },
- crop: { width: 40, height: 40 },
- style: "height: 40px; width: 40px;",
- alt: "",
- })}
- </div>
-
- <input
- type="file"
- name={`$${printArgPath(arg_path)}.new`}
- value=""
- autocomplete="off"
- data-action="change->input-image-preview#handleChange"
- multiple={arg.hasParent("list")}
- />
- </label>
- <div>
- <input
- type="hidden"
- name={`$${printArgPath(arg_path)}.old`}
- value={htmlEscape(value?.token || "")}
- autocomplete="off"
- />
- </div>
- {page.makeActionButton(
- state,
- {
- action: "remove_file",
- label: "❌",
- },
- arg_path
- )}
- </div>
- );
-}
diff --git a/src/back/routes/component-preview/component-input-list.tsx b/src/back/routes/component-preview/component-input-list.tsx
deleted file mode 100644
index 1508d28..0000000
--- a/src/back/routes/component-preview/component-input-list.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import type { BaseContext } from "koa";
-import { TempstreamJSX } from "tempstream";
-import type { ComponentArgument, List } from "@sealcode/jdd";
-import type { JDDPageState } from "./jdd-page.js";
-import type { StatefulPage } from "@sealcode/sealgen";
-import { ComponentInput } from "./component-input.js";
-import type { ComponentPreviewActions } from "./component-preview-actions.js";
-
-export async function ComponentInputList<
- State extends JDDPageState,
- T extends ComponentArgument<unknown>
->({
- state,
- ctx,
- arg_path,
- arg,
- value,
- page,
-}: {
- state: State;
- ctx: BaseContext;
- arg_path: string[];
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- arg: List<T, any>;
- value: T[];
- page: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;
-}): Promise<string> {
- if (!value) {
- value = [];
- }
- return (
- <fieldset>
- <legend>{arg_path.at(-1)}</legend>
- {value.map((value, i, all_values) => (
- <div style="display: flex">
- <ComponentInput
- {...{
- ctx,
- state,
- arg_path: [...arg_path, i.toString()],
- arg: arg.item_type,
- value,
- page,
- }}
- />
- {page.makeActionButton(
- state,
- {
- action: "move_array_item_down",
- label: "↓",
- disabled: i == all_values.length - 1,
- },
- arg_path,
- i
- )}
- {page.makeActionButton(
- state,
- { action: "move_array_item_up", label: "↑", disabled: i == 0 },
- arg_path,
- i
- )}
-
- {page.makeActionButton(
- state,
- { action: "remove_array_item", label: "❌" },
- arg_path,
- i
- )}
- </div>
- ))}
- {page.makeActionButton(
- state,
- {
- action: "add_array_item",
- label: "➕",
- },
- arg_path
- )}
- </fieldset>
- );
-}
diff --git a/src/back/routes/component-preview/component-input-single-reference.tsx b/src/back/routes/component-preview/component-input-single-reference.tsx
deleted file mode 100644
index fed6efe..0000000
--- a/src/back/routes/component-preview/component-input-single-reference.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import type { BaseContext } from "koa";
-import type { SingleReference } from "@sealcode/jdd";
-import { TempstreamJSX } from "tempstream";
-import { makeJDDContext } from "../../jdd-context.js";
-import { printArgPath } from "./print-arg-path.js";
-
-export async function ComponentInputSingleReference<
- State,
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- T extends SingleReference<any>
->({
- ctx,
- arg_path,
- arg,
- value,
- onchange,
-}: {
- ctx: BaseContext;
- state: State;
- arg_path: string[];
- arg: T;
- value: string;
- onchange?: string;
-}): Promise<string> {
- return (
- <div>
- <label>
- {arg_path.at(-1) || ""}
- <select name={`$${printArgPath(arg_path)}`} onchange={onchange}>
- {(await arg.getValues(makeJDDContext(ctx))).map((v) => (
- <option value={v.value} selected={value == v.value}>
- {v.label}
- </option>
- ))}
- </select>
- </label>
- </div>
- );
-}
diff --git a/src/back/routes/component-preview/component-input-structured.tsx b/src/back/routes/component-preview/component-input-structured.tsx
deleted file mode 100644
index ac643da..0000000
--- a/src/back/routes/component-preview/component-input-structured.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import type { BaseContext } from "koa";
-import type { ComponentArgument, Structured } from "@sealcode/jdd";
-import type { StatefulPage } from "@sealcode/sealgen";
-import { TempstreamJSX } from "tempstream";
-import { ComponentInput } from "./component-input.js";
-import type { JDDPageState } from "./jdd-page.js";
-import type { ComponentPreviewActions } from "./component-preview-actions.js";
-
-export function ComponentInputStructured<
- T extends Structured<Record<string, ComponentArgument<unknown>>>
->({
- state,
- ctx,
- arg_path,
- arg,
- value,
- rerender_callback,
- page,
-}: {
- state: JDDPageState;
- ctx: BaseContext;
- arg_path: string[];
- arg: T;
- value: Record<string, unknown>;
- rerender_callback?: string;
- page: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;
-}) {
- return (
- <fieldset>
- <legend>{arg_path.at(-1)}</legend>
- {Object.entries(arg.structure).map(([arg_name, arg]) => (
- <div>
- <ComponentInput
- {...{
- ctx,
- state,
- arg_path: [...arg_path, arg_name],
- arg,
- value: value[arg_name],
- rerender_callback,
- page,
- }}
- />
- </div>
- ))}
- </fieldset>
- );
-}
diff --git a/src/back/routes/component-preview/component-input-table.tsx b/src/back/routes/component-preview/component-input-table.tsx
deleted file mode 100644
index 9b096ea..0000000
--- a/src/back/routes/component-preview/component-input-table.tsx
+++ /dev/null
@@ -1,225 +0,0 @@
-import type { Table, TableData } from "@sealcode/jdd";
-import { isTableHeader } from "@sealcode/jdd";
-import type { StatefulPage } from "@sealcode/sealgen";
-import type { BaseContext } from "koa";
-import { TempstreamJSX } from "tempstream";
-import { makeJDDContext } from "../../jdd-context.js";
-import { ComponentInput } from "./component-input.js";
-import type { ComponentPreviewActions } from "./component-preview-actions.js";
-import type { JDDPageState } from "./jdd-page.js";
-import add_column_right_icon from "./table-add-column-right.svg";
-import add_row_below_icon from "./table-add-row-below.svg";
-import add_column_header_icon from "./table-add-row-header-below.svg";
-import delete_column_icon from "./table-delete-column.svg";
-import delete_row_icon from "./table-delete-row.svg";
-import move_column_right_icon from "./table-move-column-right.svg";
-import move_row_down_icon from "./table-move-row-down.svg";
-
-export async function ComponentInputTable<
- State extends JDDPageState,
- CellType,
- HeaderType
->({
- state,
- arg_path,
- ctx,
- arg,
- value,
- page,
-}: {
- state: State;
- ctx: BaseContext;
- arg_path: string[];
- arg: Table<CellType, HeaderType>;
- value: TableData<CellType, HeaderType>;
- page: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;
-}): Promise<string> {
- if (!value) {
- value = await arg.getEmptyValue(makeJDDContext(ctx));
- }
-
- return (
- <fieldset>
- <legend>{arg_path.at(-1)}</legend>
- <div>
- <table style="position: relative; /* necessary for sticky th*/">
- <tbody>
- <tr>
- <td></td>
- {[...Array(arg.getColumnsCount(value)).keys()].map(
- (column_index) => (
- <th class="sticky sticky--top subdued">
- {page.makeActionButton(
- state,
- {
- action: "remove_table_column",
- label: "Remove column",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${delete_column_icon.url}"
- />`,
- },
- arg_path,
- column_index
- )}
- {column_index >= arg.getColumnsCount(value) - 1
- ? ""
- : page.makeActionButton(
- state,
- {
- action: "move_table_column_right",
- label: "Move column to the right",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${move_column_right_icon.url}"
- />`,
- },
- arg_path,
- column_index
- )}
- </th>
- )
- )}
- </tr>
- {value.rows.map((row, row_index) => (
- <tr>
- <td class="sticky sticky--left subdued">
- <div style="display: flex; flex-flow: column; row-gap: 5px;">
- {page.makeActionButton(
- state,
- {
- action: "remove_table_row",
- label: "Remove row",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${delete_row_icon.url}"
- />`,
- },
- arg_path,
- row_index
- )}
- {page.makeActionButton(
- state,
- {
- action: "move_table_row_down",
- label: "Move this row down",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${move_row_down_icon.url}"
- />`,
- },
- arg_path,
- row_index
- )}
- </div>
- </td>
- {isTableHeader(row) ? (
- <th colspan={arg.getColumnsCount(value).toString()}>
- <ComponentInput
- {...{
- state,
- ctx,
- arg_path: [
- ...arg_path,
- "rows",
- row_index.toString(),
- "header_content",
- ],
- arg: arg.header_type,
- value: row.header_content,
- page,
- }}
- />
- </th>
- ) : (
- row.cells.map((cell, cell_index) => (
- <td>
- <ComponentInput
- {...{
- ctx,
- state,
- arg_path: [
- ...arg_path,
- "rows",
- row_index.toString(),
- "cells",
- cell_index.toString(),
- ],
- arg: arg.cell_type,
- value: cell,
- page,
- }}
- />
- </td>
- ))
- )}
- {row_index == 0 ? (
- <td
- class="subdued"
- rowspan={value.rows.length.toString()}
- >
- {page.makeActionButton(
- state,
- {
- action: "add_table_column",
- label: "Add column",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${add_column_right_icon.url}"
- />`,
- },
- arg_path
- )}
- </td>
- ) : (
- ""
- )}
- </tr>
- ))}
- <tr>
- <td
- class="subdued"
- colspan={(arg.getColumnsCount(value) + 1).toString()}
- >
- {page.makeActionButton(
- state,
- {
- action: "add_table_row",
- label: "Add table row",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${add_row_below_icon.url}"
- />`,
- },
- arg_path,
- arg.getColumnsCount(value)
- )}
- {page.makeActionButton(
- state,
- {
- action: "add_table_row",
- label: "Add table header",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${add_column_header_icon.url}"
- />`,
- },
- arg_path,
- arg.getColumnsCount(value),
- "header"
- )}
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </fieldset>
- );
-}
diff --git a/src/back/routes/component-preview/component-input.tsx b/src/back/routes/component-preview/component-input.tsx
deleted file mode 100644
index eead5db..0000000
--- a/src/back/routes/component-preview/component-input.tsx
+++ /dev/null
@@ -1,150 +0,0 @@
-import { printArgPath } from "./print-arg-path.js";
-import type { BaseContext } from "koa";
-import type { ComponentArgument, TableData } from "@sealcode/jdd";
-import { SingleReference } from "@sealcode/jdd";
-import { ComponentArguments, Enum, Image, List, Structured, Table } from "@sealcode/jdd";
-import { ComponentInputStructured } from "./component-input-structured.js";
-import type { StatefulPage } from "@sealcode/sealgen";
-import type { ComponentPreviewActions } from "./component-preview-actions.js";
-import { ComponentInputList } from "./component-input-list.js";
-import type { JDDPageState } from "./jdd-page.js";
-import { ComponentInputEnum } from "./component-input-enum.js";
-import { ComponentInputImage } from "./component-input-image.js";
-import { ComponentInputTable } from "./component-input-table.js";
-import { TempstreamJSX } from "tempstream";
-import type { FilePointer } from "@sealcode/file-manager";
-import { is, predicates } from "@sealcode/ts-predicates";
-import { makeJDDContext } from "../../jdd-context.js";
-import { ComponentInputSingleReference } from "./component-input-single-reference.js";
-
-export const actionName = "Components";
-const absoluteUrlPattern = "http(s?)(://)((www.)?)(([^.]+).)?([a-zA-z0-9-_]+)";
-
-export async function ComponentInput<State extends JDDPageState, T>({
- ctx,
- state,
- arg_path,
- arg,
- value,
- page,
-}: {
- state: State;
- ctx: BaseContext;
- arg_path: string[];
- arg: ComponentArgument<T>;
- value: T;
- page: StatefulPage<JDDPageState, typeof ComponentPreviewActions>;
-}): Promise<string> {
- if (value === undefined) {
- value = await arg.getEmptyValue(makeJDDContext(ctx));
- }
- if (arg instanceof List) {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- return ComponentInputList({
- ctx,
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as T[],
- page,
- });
- }
-
- const argType = arg.getTypeName();
- const isUrlAbsolute =
- arg instanceof ComponentArguments.URL && arg.urlType === "absolute";
- const inputType = isUrlAbsolute ? "url" : "text";
-
- if (arg instanceof Structured) {
- return ComponentInputStructured({
- ctx,
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as Record<string, unknown>,
- page,
- });
- }
-
- if (arg instanceof SingleReference) {
- return ComponentInputSingleReference({
- ctx,
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as string,
- onchange: page.rerender(),
- });
- }
-
- if (arg instanceof Enum) {
- return ComponentInputEnum({
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as string,
- onchange: page.rerender(),
- });
- }
-
- if (arg instanceof Image) {
- return ComponentInputImage({
- ctx,
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as FilePointer,
- page,
- });
- }
-
- if (arg instanceof Table) {
- return ComponentInputTable({
- ctx,
- state,
- arg_path,
- arg,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- value: value as TableData<unknown, unknown>,
- page,
- });
- }
-
- return (
- <div>
- <label>
- {arg_path.at(-1) || ""}
- {argType == "markdown" ? (
- <div
- class="grow-wrap"
- data-replicated-value={is(value, predicates.string) ? value : ""}
- >
- {/* putting the content in the attribute to enable autogrow */}
- <textarea
- name={`$${printArgPath(arg_path)}`}
- onblur={page.rerender()}
- cols="40"
- data-controller="autogrow-textarea submit-on-input paste-to-markdown"
- data-action="autogrow-textarea#autogrow blur->autogrow-textarea#autogrow resize->autogrow-textarea#autogrow submit-on-input#sendValues focus->submit-on-input#makePermanent blur->submit-on-input#makeNotPermanent"
- >
- {is(value, predicates.string) ? value : ""}
- </textarea>
- </div>
- ) : (
- <input
- type={inputType}
- name={`$${printArgPath(arg_path)}`}
- value={is(value, predicates.string) ? value : ""}
- size="40"
- pattern={isUrlAbsolute ? absoluteUrlPattern : undefined}
- />
- )}
- </label>
- </div>
- );
-}
diff --git a/src/back/routes/component-preview/component-preview-actions.ts b/src/back/routes/component-preview/component-preview-actions.ts
deleted file mode 100644
index b2b831c..0000000
--- a/src/back/routes/component-preview/component-preview-actions.ts
+++ /dev/null
@@ -1,428 +0,0 @@
-/* eslint-disable @typescript-eslint/consistent-type-assertions */
-import type { Registry, TableData } from "@sealcode/jdd";
-import { List, Table } from "@sealcode/jdd";
-import type { BaseContext } from "koa";
-import { isTableData, isTableRegularRow } from "@sealcode/jdd";
-import objectPath from "object-path";
-import type { JDDPageState } from "./jdd-page.js";
-import { registry } from "../../jdd-components/registry.js";
-import { makeJDDContext } from "../../jdd-context.js";
-
-function moveElement<T>(array: Array<T>, fromIndex: number, toIndex: number): Array<T> {
- const element = array.splice(fromIndex, 1)[0];
- if (!element) {
- console.error("element is undefined");
- return array;
- }
- array.splice(toIndex, 0, element);
- return array;
-}
-
-export function getComponentData(
- state: JDDPageState,
- arg_path: string[],
- registry: Registry
-) {
- const index_arg = arg_path[1];
- if (!index_arg) {
- throw new Error("Missing component index in arg path");
- }
- const component_index = parseInt(index_arg);
- const component_args = state.components[component_index]?.args || {};
- const component_name = state.components[component_index]?.component_name || "";
- const component = registry.get(component_name);
- const arg_path_within_component = arg_path.slice(3); // remove "components" and the index of the component and "args"
-
- const [argument, , argument_value] = component?.getArgumentAtPath(
- arg_path_within_component,
- component_args
- ) || [null, null, null];
-
- return {
- component_index,
- component_args,
- component_name,
- component,
- argument,
- argument_value,
- arg_path_within_component,
- };
-}
-
-export const ComponentPreviewActions = <const>{
- add_array_item: async (
- ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[]
- ) => {
- const {
- component_name,
- component,
- argument,
- arg_path_within_component,
- argument_value,
- } = getComponentData(state, arg_path, registry);
- if (!component) {
- console.error("unknown component: ", component_name);
- return state;
- }
- if (!argument) {
- console.error(
- "Didn't find a list argument at this path",
- arg_path_within_component
- );
- return state;
- }
- if (!(argument instanceof List)) {
- throw new Error(
- `Expected argument in path ${arg_path.join(
- "."
- )} to be an instance of List`
- );
- }
- objectPath.insert(
- state,
- arg_path,
- await argument.item_type.getExampleValue(makeJDDContext(ctx)),
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- Array.isArray(argument_value) ? argument_value.length : 0
- );
- return state;
- },
-
- remove_array_item: (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- index_to_remove: number
- ): JDDPageState => {
- objectPath.del(state, [...arg_path, index_to_remove]);
- return state;
- },
-
- move_array_item_up: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- arg_path: string[],
- element_index: number
- ): Promise<JDDPageState> => {
- const array_values = objectPath.get(state, arg_path) as unknown[];
- const curr = array_values[element_index];
- const prev = array_values[element_index - 1];
- if (!prev || !curr) {
- throw new Error("No element at such index or cannot move it up");
- }
- [array_values[element_index - 1], array_values[element_index]] = [curr, prev];
- return state;
- },
-
- move_array_item_down: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- arg_path: string[],
- element_index: number
- ): Promise<JDDPageState> => {
- const array_values = objectPath.get(state, arg_path) as unknown[];
- const curr = array_values[element_index];
- const next = array_values[element_index + 1];
- if (!next || !curr) {
- throw new Error("No element at such index or cannot move it up");
- }
- [array_values[element_index], array_values[element_index + 1]] = [next, curr];
- return state;
- },
-
- change_component: async (
- ctx: BaseContext,
- _state: JDDPageState,
- inputs: Record<string, unknown>
- ): Promise<JDDPageState> => {
- const component_name = inputs.component;
- if (!component_name || typeof component_name !== "string") {
- throw new Error(
- "Missing input: 'component' for action change_component. It should contain the name of the new component type"
- );
- }
- const component = registry.get(component_name);
- if (!component) {
- throw new Error(`Unknown or disallowed component name: ${component_name}`);
- }
- return {
- components: [
- {
- component_name: component_name,
- args: (await component?.getExampleValues(makeJDDContext(ctx))) || {},
- },
- ],
- };
- },
- randomize_args: async (
- ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- component_index_str: string
- ): Promise<JDDPageState> => {
- const { component_index, component } = getComponentData(
- state,
- ["components", component_index_str],
- registry
- );
-
- const component_data = state.components[component_index];
- if (!component_data) {
- throw new Error("Missing component data");
- }
- component_data.args =
- (await component?.getExampleValues(makeJDDContext(ctx))) || {};
- return {
- ...state,
- };
- },
- add_table_row: async (
- ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- columns: number,
- type: "header" | "row" = "row"
- ) => {
- const jdd_context = makeJDDContext(ctx);
- const { component_args, argument } = getComponentData(state, arg_path, registry);
- let row;
-
- if (!argument) {
- console.error("Unknown component at path", arg_path);
- return state;
- }
- if (!(argument instanceof Table)) {
- throw new Error(
- `Expected argument at path ${arg_path.join(".")} to be of type Table`
- );
- }
- if (type == "header") {
- row = {
- type: "header",
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- header_content: await argument.header_type.getExampleValue(jdd_context),
- };
- } else {
- const cells = [];
- for (let i = 0; i < columns; i++) {
- // eslint-disable-next-line no-await-in-loop
- cells.push(await argument.cell_type.getExampleValue(jdd_context));
- }
- row = { type: "row", cells };
- }
- objectPath.insert(
- state,
- [...arg_path, "rows"],
- row,
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- ((objectPath.get(component_args, [...arg_path, "rows"]) as unknown[]) || [])
- .length
- );
- return state;
- },
- add_table_column: async (
- ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[]
- ) => {
- const { argument } = getComponentData(state, arg_path, registry);
- if (!argument) {
- console.error("Unknown component at path", arg_path);
- return state;
- }
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- const tableData: TableData<unknown, unknown> = objectPath.get(state, arg_path);
- if (!isTableData(tableData)) {
- throw new Error("wrong table data");
- }
- // eslint-disable-next-line @typescript-eslint/no-for-in-array
- for (const i in tableData.rows) {
- const row = tableData.rows[i];
- if (isTableRegularRow(row)) {
- // eslint-disable-next-line no-await-in-loop
- row.cells.push(await argument.getExampleValue(makeJDDContext(ctx)));
- }
- }
- objectPath.set(state, arg_path, tableData);
- return state;
- },
-
- remove_table_column: (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- column_index_to_remove: number
- ): JDDPageState => {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- const tableData: TableData<unknown, unknown> = objectPath.get(state, arg_path);
- if (!isTableData(tableData)) {
- throw new Error("wrong table data");
- }
- // eslint-disable-next-line @typescript-eslint/no-for-in-array
- for (const i in tableData.rows) {
- const row = tableData.rows[i];
- if (isTableRegularRow(row)) {
- row.cells = row.cells.filter((_, i) => i != column_index_to_remove);
- }
- }
- objectPath.set(state, arg_path, tableData);
- return state;
- },
-
- remove_table_row: (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- row_index: number
- ): JDDPageState => {
- objectPath.del(state, [...arg_path, "rows", row_index]);
- return state;
- },
-
- move_table_column_right: (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- column_index: number
- ) => {
- const { component_args } = getComponentData(state, arg_path, registry);
-
- const last_path_element = arg_path.at(-1);
- if (!last_path_element) {
- throw new Error("arg path is empty");
- }
- const data = objectPath.get<unknown>(component_args, last_path_element, "");
- if (!isTableData(data)) {
- throw new Error("Expected arg value for a table to be properly shaped");
- }
- for (const row of data.rows) {
- if (row.type == "row") {
- moveElement(row.cells, column_index, column_index + 1);
- }
- }
- objectPath.set(state, [...arg_path, "rows"], data.rows);
- return state;
- },
-
- move_table_row_down: (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[],
- row_index: number
- ) => {
- const { component_args } = getComponentData(state, arg_path, registry);
- const last_path_element = arg_path.at(-1);
- if (!last_path_element) {
- throw new Error("arg path is empty");
- }
- const data = objectPath.get<unknown>(component_args, last_path_element, "");
- if (!isTableData(data)) {
- throw new Error("Expected arg value for a table to be properly shaped");
- }
- moveElement(data.rows, row_index, row_index + 1);
- objectPath.set(state, [...arg_path, "rows"], data.rows);
- return state;
- },
-
- change_size: (
- _ctx: BaseContext,
- state: JDDPageState,
- inputs: Record<string, string>
- ) => {
- return {
- ...state,
- preview_size: inputs.size,
- };
- },
-
- add_component: async (
- ctx: BaseContext,
- state: JDDPageState,
- inputs: Record<string, string>
- ): Promise<JDDPageState> => {
- const component_name = inputs.component;
- if (!component_name) {
- throw new Error("Missing component name");
- }
- const component = registry.get(component_name);
-
- return {
- ...state,
- components: [
- ...state.components,
- {
- component_name: component_name,
- args: (await component?.getExampleValues(makeJDDContext(ctx))) || {},
- },
- ],
- };
- },
-
- remove_component: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- component_index: number
- ): Promise<JDDPageState> => {
- const newComponentState = [...state.components];
- newComponentState.splice(component_index, 1);
- return {
- ...state,
- components: newComponentState,
- };
- },
-
- move_component_up: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- component_index: number
- ): Promise<JDDPageState> => {
- const newComps = [...state.components];
- const prev = newComps[component_index - 1];
- const curr = newComps[component_index];
- if (!prev || !curr) {
- throw new Error("No component at such index or cannot move it up");
- }
- [newComps[component_index], newComps[component_index - 1]] = [prev, curr];
- return { ...state, components: newComps };
- },
-
- move_component_down: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _inputs: Record<string, string>,
- component_index: number
- ): Promise<JDDPageState> => {
- const newComps = [...state.components];
- const next = newComps[component_index + 1];
- const curr = newComps[component_index];
- if (!next || !curr) {
- throw new Error("No component at such index or cannot move it up");
- }
- [newComps[component_index], newComps[component_index + 1]] = [next, curr];
- return { ...state, components: newComps };
- },
-
- remove_file: async (
- _ctx: BaseContext,
- state: JDDPageState,
- _: Record<string, string>,
- arg_path: string[]
- ): Promise<JDDPageState> => {
- objectPath.set(state, arg_path, null);
- return state;
- },
-};
diff --git a/src/back/routes/component-preview/edit-jdd-field.tsx b/src/back/routes/component-preview/edit-jdd-field.tsx
deleted file mode 100644
index 96deaa4..0000000
--- a/src/back/routes/component-preview/edit-jdd-field.tsx
+++ /dev/null
@@ -1,124 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-/* eslint-disable @typescript-eslint/no-unsafe-argument */
-/* eslint-disable @typescript-eslint/consistent-type-assertions */
-/* eslint-disable @typescript-eslint/no-unused-vars */
-import type Router from "@koa/router";
-import type { JDDocumentContainer, RawJDDocument } from "@sealcode/jdd";
-import {
- documentContainerFromStorage,
- documentToParsed,
- documentToStorage,
-} from "@sealcode/jdd";
-import type { BaseContext } from "koa";
-import type { Collection, CollectionItem, FieldNames } from "sealious";
-import { TempstreamJSX } from "tempstream";
-import { registry } from "../../jdd-components/registry.js";
-import { makeJDDContext } from "../../jdd-context.js";
-import JDDCreator from "./jdd-creator.js";
-import type { JDDPageState } from "./jdd-page.js";
-
-export const actionName = "ArticleContentEdit";
-
-export abstract class EditJDDField<C extends Collection> extends JDDCreator {
- async getID(ctx: BaseContext): Promise<string> {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const id = ctx.params["id"] as string;
- if (!id) {
- throw new Error("Missing URL parameter: " + "id");
- }
- return id;
- }
-
- abstract getCollection(ctx: BaseContext): C;
-
- async getItem(ctx: BaseContext): Promise<CollectionItem<C>> {
- const {
- items: [item],
- } = await this.getCollection(ctx)
- .list(ctx.$context)
- .ids([await this.getID(ctx)])
- .fetch();
- if (!item) {
- throw new Error("Couldn't get item of id " + (await this.getID(ctx)));
- }
- return item;
- }
-
- abstract getJDDFieldName(): FieldNames<C["fields"]>;
-
- mount(router: Router, path: string) {
- super.mount(router, path);
-
- router.post(path + "save/", async (ctx) => {
- const { state } = await this.extractState(ctx);
- const item = await this.getItem(ctx);
-
- item.set(
- this.getJDDFieldName(),
- (
- await documentToStorage(registry, makeJDDContext(ctx), {
- value: state.components,
- } as unknown as JDDocumentContainer<"parsed">)
- ).value as any
- );
- await item.save(ctx.$context);
- ctx.type = "html";
- ctx.status = 422;
- if (!state.messages) {
- state.messages = [];
- }
- state.messages.push("Saved!");
- ctx.body = this.render(ctx, state);
- });
- }
-
- async renderHeader(_ctx: BaseContext, _item: CollectionItem<C>) {
- return <h1>Edit JDD</h1>;
- }
-
- async renderPreParameterButtons(ctx: BaseContext) {
- const item = await this.getItem(ctx);
- return <div>{this.renderHeader(ctx, item)}</div>;
- }
-
- renderParameterButtons(state: JDDPageState) {
- {
- /*The below button has to be here in order for it to be the default behavior */
- }
- return (
- <div>
- <input type="submit" value="Preview" />
- <select name="component">
- {Object.keys(this.getRegistryComponents()).map((cmp) => (
- <option value={cmp}>{cmp}</option>
- ))}
- </select>
- {this.makeActionButton(state, {
- action: "add_component",
- label: "Add component",
- })}
- <input type="submit" formaction="./save/" value="zapisz" />
- </div>
- );
- }
-
- async getInitialState(ctx: BaseContext) {
- const article = await this.getItem(ctx);
- const parsed_document = await documentToParsed(
- registry,
- makeJDDContext(ctx),
- documentContainerFromStorage(
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- (article.get(this.getJDDFieldName()) as RawJDDocument) || []
- )
- );
- return {
- components: parsed_document.value.map((e) => ({ ...e, open: true })),
- };
- }
-
- // uncomment to create whitelist of allowed components
- // getAllowedComponents() {
- // return ["nice-box"];
- // }
-}
diff --git a/src/back/routes/component-preview/grow-wrap.css b/src/back/routes/component-preview/grow-wrap.css
deleted file mode 100644
index 0d5a477..0000000
--- a/src/back/routes/component-preview/grow-wrap.css
+++ /dev/null
@@ -1,33 +0,0 @@
-/* https://chriscoyier.net/2023/09/29/css-solves-auto-expanding-textareas-probably-eventually/ */
-
-.grow-wrap {
- /* easy way to plop the elements on top of each other and have them both sized based on the tallest one's height */
- display: grid;
-}
-.grow-wrap::after {
- /* Note the weird space! Needed to preventy jumpy behavior */
- content: attr(data-replicated-value) " ";
-
- /* This is how textarea text behaves */
- white-space: pre-wrap;
-
- /* Hidden from view, clicks, and screen readers */
- visibility: hidden;
-}
-.grow-wrap > textarea {
- /* You could leave this, but after a user resizes, then it ruins the auto sizing */
- resize: none;
-
- /* Firefox shows scrollbar on growth, you can hide like this. */
- overflow: hidden;
-}
-.grow-wrap > textarea,
-.grow-wrap::after {
- /* Identical styling required!! */
- border: 1px solid black;
- padding: 0.5rem;
- font: inherit;
-
- /* Place on top of each other */
- grid-area: 1 / 1 / 2 / 2;
-}
diff --git a/src/back/routes/component-preview/input-image-preview.stimulus.ts b/src/back/routes/component-preview/input-image-preview.stimulus.ts
deleted file mode 100644
index a4098c3..0000000
--- a/src/back/routes/component-preview/input-image-preview.stimulus.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Controller } from "stimulus";
-
-export default class InputImagePreview extends Controller {
- id: string;
-
- handleChange() {
- let img = this.element.querySelector("img");
- if (!img) {
- img = document.createElement("img");
- img.setAttribute("style", "height: 40px; width: 40px");
- this.element.querySelector(".image-preview-container").appendChild(img);
- }
- window.URL.revokeObjectURL(img.src);
- const new_url = window.URL.createObjectURL(
- this.element.querySelector("input").files[0]
- );
- img.src = new_url;
- img.parentNode;
- img.parentElement
- .querySelectorAll("source")
- .forEach((e) => e.parentNode.removeChild(e));
- img.style.aspectRatio = "1";
- }
-}
diff --git a/src/back/routes/component-preview/jdd-creator.tsx b/src/back/routes/component-preview/jdd-creator.tsx
deleted file mode 100644
index 643b6d1..0000000
--- a/src/back/routes/component-preview/jdd-creator.tsx
+++ /dev/null
@@ -1,134 +0,0 @@
-import type { BaseContext } from "koa";
-import { TempstreamJSX } from "tempstream";
-import { ComponentPreviewActions } from "./component-preview-actions.js";
-import type { JDDPageState } from "./jdd-page.js";
-import JDDPage from "./jdd-page.js";
-
-import move_row_down_icon from "./table-move-row-down.svg";
-import move_row_up_icon from "./table-move-row-up.svg";
-
-export default abstract class JDDCreator extends JDDPage {
- actions = ComponentPreviewActions;
-
- /**
- * This method returns list of components allowed in JDD Editor instance.
- * If list is empty it will allow all of the components in registry,
- * if you overide this function you can decide on what components should
- * available.
- */
- getAllowedComponents(): string[] {
- return [];
- }
-
- getRegistryComponents() {
- const all_components = super.getRegistryComponents();
- const allowed_components = this.getAllowedComponents();
-
- if (allowed_components.length > 0) {
- return Object.fromEntries(
- Object.entries(all_components).filter(([name]) =>
- allowed_components.includes(name)
- )
- );
- }
-
- return all_components;
- }
-
- renderParameterButtons(state: JDDPageState) {
- {
- /*The below button has to be here in order for it to be the default behavior */
- }
- return (
- <div>
- <input type="submit" value="Preview" />
- <select name="component">
- {Object.keys(this.getRegistryComponents()).map((cmp) => (
- <option value={cmp}>{cmp}</option>
- ))}
- </select>
- {this.makeActionButton(state, {
- action: "add_component",
- label: "Add component",
- })}
- </div>
- );
- }
-
- renderComponentBlock(
- ctx: BaseContext,
- state: JDDPageState,
- component: {
- component_name: string;
- args: Record<string, unknown>;
- },
- component_index: number
- ) {
- const checkbox_id = `component_${component_index}_open`;
- return (
- <div
- class={[
- "jdd-editor__component-block",
- "jdd-editor__component-block--number-" + component_index,
- ]}
- data-component-debugger-target="componentBlock"
- data-component-index={component_index.toString()}
- >
- <summary class="jdd-editor__component-block__top_bar">
- {this.makeActionButton(
- state,
- { action: "remove_component", label: "❌" },
- component_index
- )}
- {this.makeActionButton(
- state,
- {
- action: "move_component_up",
- label: "Move this row up",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${move_row_up_icon.url}"
- />`,
- },
- component_index
- )}
- {this.makeActionButton(
- state,
- {
- action: "move_component_down",
- label: "Move this row down",
- content: /* HTML */ `<img
- width="20"
- height="20"
- src="${move_row_down_icon.url}"
- />`,
- },
- component_index
- )}
- <span>{component.component_name}</span>
- <label
- class="component-block__handle"
- for={checkbox_id}
- style="flex-grow: 1"
- data-action="click->component-debugger#labelClicked"
- >
- <span class="jdd-editor__component-block__chevron"> &gt; </span>
- </label>
- </summary>
- <input
- type="checkbox"
- class="component-collapse-toggle"
- name={`$[components][${component_index}][open]`}
- data-turbo-permanent
- id={checkbox_id}
- style="display:none"
- data-component-debugger-target="checkbox"
- />
- <div class="jdd-editor__component-block__inner">
- {super.renderComponentBlock(ctx, state, component, component_index)}
- </div>
- </div>
- );
- }
-}
diff --git a/src/back/routes/component-preview/jdd-page.tsx b/src/back/routes/component-preview/jdd-page.tsx
deleted file mode 100644
index 5a33db3..0000000
--- a/src/back/routes/component-preview/jdd-page.tsx
+++ /dev/null
@@ -1,327 +0,0 @@
-import type { Component, RawJDDocument } from "@sealcode/jdd";
-import { documentContainerFromParsed } from "@sealcode/jdd";
-import { render, renderEarlyAssets } from "@sealcode/jdd";
-import { StatefulPage } from "@sealcode/sealgen";
-import { hasFieldOfType, hasShape, predicates } from "@sealcode/ts-predicates";
-import type { BaseContext } from "koa";
-import type { FlatTemplatable, Templatable } from "tempstream";
-import { tempstream, TempstreamJSX } from "tempstream";
-import html, { defaultHead } from "../../html.js";
-import { registry } from "../../jdd-components/components.js";
-import { makeJDDContext } from "../../jdd-context.js";
-import { ComponentInput } from "./component-input.js";
-import { ComponentPreviewActions } from "./component-preview-actions.js";
-
-export const actionName = "Components";
-
-export type JDDPageState = {
- components: RawJDDocument;
- preview_size?: string;
- messages?: string[];
-};
-
-export default abstract class JDDPage extends StatefulPage<
- JDDPageState,
- typeof ComponentPreviewActions
-> {
- actions = ComponentPreviewActions;
-
- previewSizes = ["320", "600", "800", "1024", "1300", "1920"];
-
- getRegistryComponents() {
- return registry.getAll();
- }
-
- async getInitialState(ctx: BaseContext) {
- const all_components = Object.entries(this.getRegistryComponents());
- const first_component = all_components[0];
- if (!first_component) {
- throw new Error("No defined components!");
- }
- const [component_name, component] = first_component;
- const initial_state = {
- components: [
- {
- component_name: component_name,
- args: await component.getExampleValues(makeJDDContext(ctx)),
- },
- ],
- };
- return initial_state;
- }
-
- wrapInLayout(
- ctx: BaseContext,
- content: Templatable,
- state: JDDPageState
- ): Templatable {
- return html(
- ctx,
- "Components",
- content,
- {
- morphing: true,
- preserveScroll: true,
- autoRefreshCSS: true,
- navbar: () => ``,
- bodyClasses: ["jdd-editor"],
- },
- (...args) =>
- tempstream`${defaultHead(...args)}${renderEarlyAssets(
- registry,
- documentContainerFromParsed(state.components),
- makeJDDContext(ctx)
- )}`
- );
- }
-
- async preprocessOverrides(
- _ctx: BaseContext,
- state: JDDPageState,
- overrides: Record<string, unknown>
- ) {
- const jdd_context = makeJDDContext(_ctx);
- if (
- !hasFieldOfType(
- "components",
- overrides,
- predicates.array(
- predicates.shape({
- args: predicates.object,
- })
- )
- )
- ) {
- return {};
- }
- for (const [component_index, { component_name }] of Object.entries(
- state.components
- )) {
- const component = registry.get(component_name);
- if (!component) {
- throw new Error(`Unknown component: ${component_name}`);
- }
- const overrides_for_component = overrides.components[
- parseInt(component_index)
- ] || { args: {} };
- const promises = Object.entries(component.getArguments()).map(
- async ([arg_name, arg]) => {
- const value = overrides_for_component.args[arg_name];
- if (value) {
- const new_value = await arg.receivedToParsed(jdd_context, value);
- overrides_for_component.args[arg_name] = new_value;
- }
- }
- );
- // eslint-disable-next-line no-await-in-loop
- await Promise.all(promises);
- }
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- return overrides;
- }
-
- // eslint-disable-next-line no-unused-vars
- abstract renderParameterButtons(_state: JDDPageState): FlatTemplatable;
-
- renderComponentArgs<C extends Component>(
- ctx: BaseContext,
- state: JDDPageState,
- component: C,
- args: Record<string, unknown>,
- index: number
- ) {
- const jdd_context = makeJDDContext(ctx);
- return (
- <div
- class="component-preview-parameters"
- id={`component-preview-parameters--${index}`}
- >
- {Object.entries(component.getArguments()).map(async ([arg_name, arg]) => (
- <ComponentInput
- {...{
- state,
- arg_path: ["components", index.toString(), "args", arg_name],
- ctx,
- arg,
- value:
- args[arg_name] === undefined
- ? await arg.getExampleValue(jdd_context)
- : args[arg_name],
- onblur: this.rerender(),
- page: this,
- }}
- />
- ))}
- </div>
- );
- }
-
- renderComponentBlock(
- ctx: BaseContext,
- state: JDDPageState,
- {
- component_name,
- args: component_args,
- }: {
- component_name: string;
- args: Record<string, unknown>;
- },
- component_index: number
- ) {
- const component = registry.get(component_name);
- if (!component) {
- return null;
- }
- return this.renderComponentArgs(
- ctx,
- state,
- component,
- component_args,
- component_index
- );
- }
-
- async serializeState(ctx: BaseContext, state: JDDPageState) {
- const serialized_components = await Promise.all(
- state.components.map(async ({ component_name, args }) => {
- const component = registry.get(component_name);
- const single_result = {
- component_name,
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
- args: component
- ? await component.convertParsedToStorage(
- makeJDDContext(ctx),
- args
- )
- : {},
- };
- return single_result;
- })
- );
- const serialized_state = JSON.stringify({ components: serialized_components });
- return serialized_state;
- }
-
- async deserializeState(ctx: BaseContext, state_string: string) {
- const jdd_context = makeJDDContext(ctx);
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- const raw = JSON.parse(state_string);
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
- const components_storage = raw.components;
- if (!Array.isArray(components_storage)) {
- throw new Error(
- "'components' key is not an array, got ${components_storage}"
- );
- }
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- const components_parsed = await Promise.all(
- components_storage.map(async (entry) => {
- if (
- !hasShape(
- {
- component_name: predicates.string,
- args: predicates.object,
- },
- entry
- )
- ) {
- throw new Error(
- `Expected components[] items to be objects with 'component_name' and 'args' keys, got ${entry}`
- );
- }
- const { component_name, args } = entry;
- const component = registry.get(component_name);
- if (!component) {
- throw new Error("Unknown component: ${component_name}");
- }
- return {
- component_name,
- args: await component.convertStorageToParsed(jdd_context, args),
- };
- })
- );
- const result = { components: components_parsed };
- return result;
- }
-
- renderPreParameterButtons(
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- _ctx: BaseContext,
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- _state: JDDPageState
- ): FlatTemplatable | Promise<FlatTemplatable> {
- return "";
- }
-
- renderMessages(_ctx: BaseContext, state: JDDPageState) {
- return (
- <ul>
- {(state.messages || []).map((e) => (
- <li>{e}</li>
- ))}
- </ul>
- );
- }
-
- render(ctx: BaseContext, state: JDDPageState) {
- return (
- <div
- class="two-column"
- id="component-debugger"
- style="--resizable-column-width: 50vw"
- data-controller="component-debugger"
- >
- <div class="component-arguments" id="component-arguments">
- {this.renderPreParameterButtons(ctx, state)}
- {this.renderParameterButtons(state)}
- {this.renderMessages(ctx, state)}
- {state.components.map((component, component_index) =>
- this.renderComponentBlock(ctx, state, component, component_index)
- )}
- <code style="max-height: 100px; display: block; overflow: hidden; font-size: 9px; color: #a8a8a8; padding: 1rem;">
- {this.serializeState(ctx, state)}
- </code>
- </div>
- <div
- id="resize-gutter"
- class="resize-gutter"
- data-component-debugger-target="gutter"
- ></div>
- <div
- id="component-preview"
- class="component-preview"
- data-component-debugger-target="preview"
- >
- <div class="component-preview__header">
- <span>Preview</span>
- <span data-component-debugger-target="component-width"></span>
- <select
- name="size"
- autocomplete="off"
- class="component-preview-size-select"
- data-component-debugger-target="size-select"
- data-action="change->component-debugger#handleWidthDropdown"
- >
- {this.previewSizes.map((size) => (
- <option
- value={size}
- selected={size === (state.preview_size || "800")}
- >
- {`${size} px`}
- </option>
- ))}
- </select>
- <noscript>{this.makeActionButton(state, "change_size")}</noscript>
- </div>
- <div class="jdd-container">
- {render(
- registry,
- documentContainerFromParsed(state.components),
- makeJDDContext(ctx)
- )}
- </div>
- </div>
- </div>
- );
- }
-}
diff --git a/src/back/routes/component-preview/paste-to-markdown.stimulus.ts b/src/back/routes/component-preview/paste-to-markdown.stimulus.ts
deleted file mode 100644
index 73bb851..0000000
--- a/src/back/routes/component-preview/paste-to-markdown.stimulus.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/* eslint-disable @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-assignment */
-import { Controller } from "stimulus";
-import TurndownService from "turndown";
-
-export default class PasteToMarkdown extends Controller<HTMLTextAreaElement> {
- connect() {
- this.element.addEventListener("paste", (event) => {
- if (event.clipboardData.types.includes("text/html")) {
- const turndownService = new TurndownService({
- headingStyle: "atx",
- preformattedCode: true,
- } as any);
- event.preventDefault();
- const html = (event.clipboardData.getData("text/html") as string)
- .replaceAll("\n", " ")
- // to get rid of some of the style metadata from libreoffice
- .replace(/^<!doctype.*<body[^>]*>/i, "");
- document.execCommand("insertText", false, turndownService.turndown(html));
- return null;
- }
- });
- }
-}
diff --git a/src/back/routes/component-preview/print-arg-path.ts b/src/back/routes/component-preview/print-arg-path.ts
deleted file mode 100644
index ca3fa3c..0000000
--- a/src/back/routes/component-preview/print-arg-path.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function printArgPath(path: string[]): string {
- return path.map((e) => `[${e}]`).join("");
-}
diff --git a/src/back/routes/component-preview/submit-on-input.stimulus.ts b/src/back/routes/component-preview/submit-on-input.stimulus.ts
deleted file mode 100644
index 04936fe..0000000
--- a/src/back/routes/component-preview/submit-on-input.stimulus.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/* eslint-disable @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-assignment */
-import { Controller } from "stimulus";
-import { throttle } from "throttle-debounce";
-
-export default class SubmitOnInput extends Controller<HTMLTextAreaElement> {
- sendValues: () => void;
- connect() {
- this.sendValues = throttle(
- 500,
- () => {
- this.element.closest("form").requestSubmit();
- },
- { noTrailing: false }
- );
- }
-
- makePermanent() {
- // this prevents morphing from overwriting the input value with previous half-dane values - https://github.com/hotwired/turbo/issues/1199
- this.element.setAttribute("data-turbo-permanent", "");
- }
-
- makeNotPermanent() {
- this.element.removeAttribute("data-turbo-permanent");
- }
-}
diff --git a/src/back/routes/component-preview/table-add-column-right.svg b/src/back/routes/component-preview/table-add-column-right.svg
deleted file mode 100644
index e365e84..0000000
--- a/src/back/routes/component-preview/table-add-column-right.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- width="533.33331"
- height="533.33331"
- viewBox="0 0 15.999999 15.999999"
- fill="none"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-add-column-right.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="265.89928"
- inkscape:cy="266.47482"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 0,16 H 16 V 0 H 0 Z m 1.5,-1.5 v -2 h 3 v 2 z m 4.5,0 v -13 h 8.5 v 13 z M 4.5,1.5 v 2.51959 h -3 V 1.5 Z m -3,4.01959 h 3 V 7.5 h -3 z M 1.5,9 h 3 v 2 h -3 z"
- fill="#1f2328"
- id="path1" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 9.5,8.5 V 11 H 11 V 8.5 h 2.5001 V 7 H 11 V 4.5 H 9.5 V 7 H 7 v 1.5 z"
- fill="#1F2328"
- id="path2"
- style="fill:#009e00;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-add-row-below.svg b/src/back/routes/component-preview/table-add-row-below.svg
deleted file mode 100644
index dbce222..0000000
--- a/src/back/routes/component-preview/table-add-row-below.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- width="533.33331"
- height="533.33331"
- viewBox="0 0 15.999999 15.999999"
- fill="none"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-add-row-below.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="265.89928"
- inkscape:cy="266.47482"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 0,0 H 16 V 16 H 0 Z M 1.5,1.5 V 4 h 3 V 1.5 Z M 6,1.5 V 4 H 9.9999 L 10,1.5 Z m 5.5,0 -10e-5,2.5 H 14.5 V 1.5 Z m 3,4 h -13 v 9 h 13 z"
- fill="#1f2328"
- id="path1" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 7.5,9.5 V 7 H 9 v 2.5 h 2.5001 V 11 H 9 v 2.5 H 7.5 V 11 H 5 V 9.5 Z"
- fill="#1F2328"
- id="path2"
- style="fill:#009e00;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-add-row-header-below.svg b/src/back/routes/component-preview/table-add-row-header-below.svg
deleted file mode 100644
index 884b764..0000000
--- a/src/back/routes/component-preview/table-add-row-header-below.svg
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- width="533.33331"
- height="533.33331"
- viewBox="0 0 15.999999 15.999999"
- fill="none"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-add-row-header-below.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="265.89928"
- inkscape:cy="266.47482"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 0,0 H 16 V 16 H 0 Z M 1.5,1.5 V 4 h 3 V 1.5 Z M 6,1.5 V 4 H 9.9999 L 10,1.5 Z m 5.5,0 -10e-5,2.5 H 14.5 V 1.5 Z m 3,4 h -13 v 9 h 13 z"
- fill="#1f2328"
- id="path1" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 4.4849442,9.891467 V 7.692536 H 5.8043028 V 9.891467 H 8.003322 v 1.319359 H 5.8043028 v 2.198931 H 4.4849442 V 11.210826 H 2.286013 V 9.891467 Z"
- fill="#1F2328"
- id="path2"
- style="fill:#009e00;fill-opacity:1;stroke-width:0.879573" />
- <g
- id="g1"
- transform="translate(-3.2633543,-4)">
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="m 12.442783,13.891467 v -2.198931 h 1.319359 v 2.198931 h 2.199019 v 1.319359 h -2.199019 v 2.198931 h -1.319359 v -2.198931 z"
- fill="#1F2328"
- id="path2-6"
- style="fill:#009e00;fill-opacity:1;stroke-width:0.879573"
- sodipodi:nodetypes="ccccccccccc" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 16.758927,13.898931 V 11.7 h -1.319359 v 2.198931 h -2.199019 v 1.319359 h 2.199019 v 2.198931 h 1.319359 V 15.21829 Z"
- fill="#1F2328"
- id="path2-6-7"
- style="fill:#009e00;fill-opacity:1;stroke-width:0.879573"
- sodipodi:nodetypes="ccccccccccc" />
- </g>
-</svg>
diff --git a/src/back/routes/component-preview/table-delete-column.svg b/src/back/routes/component-preview/table-delete-column.svg
deleted file mode 100644
index 60c35fe..0000000
--- a/src/back/routes/component-preview/table-delete-column.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- width="566.59668"
- height="533.33331"
- viewBox="0 0 16.9979 15.999999"
- fill="none"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-delete-column.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="265.89928"
- inkscape:cy="266.47482"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="m 16,12 v 4 H 0 V 0 H 16 V 4 H 14.5 V 1.5 H 11 v 13 h 3.5 V 12 Z M 1.5,12.5 v 2 h 3 v -2 z m 4.5,0 v 2 h 3.5 v -2 z M 9.5,4.01957 V 1.5 H 6 v 2.51958 z m -5,1e-5 V 1.5 h -3 v 2.51959 z m 0,1.5 -3,10e-6 V 7.5 h 3 z M 4.5,9 h -3 v 2 h 3 z M 6,9 v 2 H 9.5 V 9 Z M 6,7.5 H 9.5 V 5.51957 l -3.5,1e-5 z"
- fill="#1f2328"
- id="path1" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 14.7176,9.0606 15.9373,10.2803 16.9979,9.2197 15.7782,8 16.9979,6.7803 15.9372,5.71967 14.7176,6.9393 13.4979,5.71968 12.4373,6.7803 13.6569,8 l -1.2196,1.2196 1.0606,1.0607 z"
- fill="#1F2328"
- id="path2"
- style="fill:#ff0000;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-delete-row.svg b/src/back/routes/component-preview/table-delete-row.svg
deleted file mode 100644
index d1dde47..0000000
--- a/src/back/routes/component-preview/table-delete-row.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- width="533.33331"
- height="533.33667"
- viewBox="0 0 15.999999 16.0001"
- fill="none"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-delete-row.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="265.89928"
- inkscape:cy="266.47482"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 16,0 H 0 V 16 H 4 V 14.5 H 1.5 V 9 h 13 v 5.5 H 12 V 16 h 4 z M 1.5,4 V 1.5 h 3 V 4 Z M 6,4 V 1.5 h 4 L 9.9999,4 Z M 11.4999,4 11.5,1.5 h 3 V 4 Z m 0,1.5 H 14.5 v 2 H 11.4998 Z M 4.5,7.5 h -3 v -2 h 3 z m 1.5,0 v -2 h 3.9999 l -10e-5,2 z"
- fill="#1f2328"
- id="path1" />
- <path
- fill-rule="evenodd"
- clip-rule="evenodd"
- d="M 8,14.7804 9.2197,16.0001 10.2803,14.9395 9.0606,13.7197 10.2802,12.5001 9.2196,11.4395 8,12.6591 6.7803,11.4395 5.71968,12.5001 6.9393,13.7197 5.71967,14.9394 6.7803,16.0001 Z"
- fill="#1F2328"
- id="path2"
- style="fill:#ff0000;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-move-column-right.svg b/src/back/routes/component-preview/table-move-column-right.svg
deleted file mode 100644
index 34a850a..0000000
--- a/src/back/routes/component-preview/table-move-column-right.svg
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- fill="#000000"
- width="800px"
- height="800px"
- viewBox="0 0 14 14"
- role="img"
- focusable="false"
- aria-hidden="true"
- version="1.1"
- id="svg2"
- sodipodi:docname="gui-table-col-after-svgrepo-com.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="399.42446"
- inkscape:cy="400"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- d="M.52539062.00195313C.23546962.00195313 0 .17085937 0 .38085938V13.623047c0 .2101.23546962.378906.52539062.378906H5.3164062c.2900214 0 .5234375-.168806.5234376-.378906V.38085938c0-.21-.2334162-.37890626-.5234376-.37890626H.52539062zM1.2089844 1.0605469h3.4199218v3.2148437H1.2089844V1.0605469zm0 4.2832031h3.4199218v3.2148438H1.2089844V5.34375zm0 4.2832031h3.4199218V12.84375H1.2089844V9.6269531z"
- id="path1" />
- <path
- fill="green"
- d="M9.969294 11.0336q-.2639283 0-.4656736-.1915l-.3880946-.3882q-.1964467-.1966-.1964467-.4709 0-.2795.1964467-.4658l1.5159882-1.5217H6.988903q-.269027 0-.4370814-.194-.1682543-.1941-.1682543-.4684v-.6625q0-.2743.1682543-.4684.1680544-.1941.4370814-.1941h3.642611L9.1155258 4.4865q-.1964467-.1863-.1964467-.4658 0-.2795.1964467-.4658l.3880946-.3882q.1966467-.1966.4656736-.1966.274126 0 .470872.1966l3.368286 3.3693Q14 6.7172 14 7.0018q0 .2795-.191548.471l-3.368286 3.3693q-.201845.1915-.470872.1915z"
- id="path2"
- style="fill:#0086be;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-move-row-down.svg b/src/back/routes/component-preview/table-move-row-down.svg
deleted file mode 100644
index a8cf66f..0000000
--- a/src/back/routes/component-preview/table-move-row-down.svg
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- fill="#000000"
- width="800"
- height="800"
- viewBox="0 0 14 14"
- role="img"
- focusable="false"
- aria-hidden="true"
- version="1.1"
- id="svg2"
- sodipodi:docname="table-move-row-up.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#ffffff"
- bordercolor="#000000"
- borderopacity="0.25"
- inkscape:showpageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="0.86875"
- inkscape:cx="399.42446"
- inkscape:cy="400"
- inkscape:window-width="1536"
- inkscape:window-height="928"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- d="M 0,0.525391 C 0,0.23547 0.16890625,0 0.37890626,0 H 13.621094 C 13.831194,0 14,0.23547 14,0.525391 v 4.7910152 c 0,0.2900214 -0.168806,0.5234375 -0.378906,0.5234376 H 0.37890626 C 0.16890626,5.8398438 0,5.6064276 0,5.3164062 Z M 1.0585937,1.208984 V 4.6289062 H 4.2734374 V 1.208984 Z m 4.2832031,0 V 4.6289062 H 8.5566406 V 1.208984 Z m 4.2832031,0 V 4.6289062 H 12.841797 V 1.208984 Z"
- id="path1" />
- <path
- fill="green"
- d="m 11.031647,9.969294 q 0,-0.2639283 -0.1915,-0.4656736 l -0.3882,-0.3880946 q -0.1966,-0.1964467 -0.4709002,-0.1964467 -0.2795,0 -0.4658,0.1964467 l -1.5217,1.5159882 V 6.988903 q 0,-0.269027 -0.194,-0.4370814 -0.1941,-0.1682543 -0.4684,-0.1682543 h -0.6625 q -0.2743,0 -0.4684,0.1682543 -0.1941,0.1680544 -0.1941,0.4370814 v 3.642611 l -1.5216,-1.5159882 q -0.1863,-0.1964467 -0.4658,-0.1964467 -0.2795,0 -0.4658,0.1964467 l -0.3882,0.3880946 q -0.1966,0.1966467 -0.1966,0.4656736 0,0.274126 0.1966,0.470872 l 3.3693,3.368286 Q 6.7152468,14 6.9998468,14 q 0.2795,0 0.471,-0.191548 l 3.3693002,-3.368286 q 0.1915,-0.201845 0.1915,-0.470872 z"
- id="path2"
- style="fill:#0086be;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/component-preview/table-move-row-up.svg b/src/back/routes/component-preview/table-move-row-up.svg
deleted file mode 100644
index a9980ba..0000000
--- a/src/back/routes/component-preview/table-move-row-up.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-
-<svg
- fill="#000000"
- width="800"
- height="800"
- viewBox="0 0 14 14"
- role="img"
- focusable="false"
- aria-hidden="true"
- version="1.1"
- id="svg2"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <defs
- id="defs2" />
- <path
- d="M 14,13.474609 C 14,13.76453 13.831094,14 13.621094,14 H 0.378906 C 0.168806,14 0,13.76453 0,13.474609 V 8.6835938 C 0,8.3935724 0.168806,8.1601563 0.378906,8.1601562 h 13.242188 c 0.21,0 0.378906,0.2334162 0.378906,0.5234376 z M 12.941406,12.791016 V 9.3710938 H 9.7265626 v 3.4199222 z m -4.2832028,0 V 9.3710938 H 5.4433594 v 3.4199222 z m -4.2832031,0 V 9.3710938 H 1.158203 v 3.4199222 z"
- id="path1" />
- <path
- fill="green"
- d="m 2.968353,4.030706 q 0,0.2639283 0.1915,0.4656736 l 0.3882,0.3880946 q 0.1966,0.1964467 0.4709002,0.1964467 0.2795,0 0.4658,-0.1964467 l 1.5217,-1.5159882 v 3.642611 q 0,0.269027 0.194,0.4370814 0.1941,0.1682543 0.4684,0.1682543 h 0.6625 q 0.2743,0 0.4684,-0.1682543 0.1941,-0.1680544 0.1941,-0.4370814 V 3.368486 l 1.5216,1.5159882 q 0.1863,0.1964467 0.4658,0.1964467 0.2794998,0 0.4657998,-0.1964467 l 0.3882,-0.3880946 q 0.1966,-0.1966467 0.1966,-0.4656736 0,-0.274126 -0.1966,-0.470872 L 7.4659532,0.191548 Q 7.2847532,0 7.0001532,0 q -0.2795,0 -0.471,0.191548 L 3.159853,3.559834 q -0.1915,0.201845 -0.1915,0.470872 z"
- id="path2"
- style="fill:#0086be;fill-opacity:1" />
-</svg>
diff --git a/src/back/routes/components.css b/src/back/routes/components.css
deleted file mode 100644
index d6389de..0000000
--- a/src/back/routes/components.css
+++ /dev/null
@@ -1,93 +0,0 @@
-.title--components {
- body {
- max-width: none;
- }
-
- .two-column {
- display: grid;
- grid-template-columns: 1fr 15px min-content;
- }
-
- .resize-gutter {
- background-color: gray;
- cursor: ew-resize;
- height: 100%;
- }
-
- .resizable {
- overflow-x: auto;
- }
-
- transition: transform 200ms, opacity 200ms;
- &.restarting {
- transform: scale(0.99);
- opacity: 0.6;
- }
-
- .component-preview {
- width: var(--resizable-column-width);
-
- & > fieldset {
- min-width: 0; /* default is min-content and that causes overflow*/
- max-height: calc(100vh - 75px);
- overflow-x: auto;
- }
- }
- .component-arguments {
- max-height: calc(100vh - 80px);
- overflow-y: auto;
- }
-}
-
-.component-preview-parameters {
- fieldset {
- background-color: #80808024;
-
- table {
- td,
- th {
- outline: 0.5px solid #0000006b;
-
- &.subdued > * {
- opacity: 50%;
- }
-
- &.subdued:hover > * {
- opacity: 100%;
- }
-
- &.sticky {
- position: sticky;
- background-color: #ececec;
- }
-
- &.sticky--left {
- left: 0;
- box-shadow: 5px 0px 10px -4px #00000047;
- }
-
- &.sticky--top {
- top: 0;
- box-shadow: 0px 5px 10px -4px #00000047;
- }
- }
- }
- }
-}
-
-.component-preview {
- * {
- transition: all 150ms;
- }
- container-type: inline-size;
-}
-
-@media (scripting: none) {
- body {
- min-width: max-content;
- }
-}
-
-.component-preview-size-select {
- margin-left: 10px;
-}
diff --git a/src/back/routes/components.sreact.tsx b/src/back/routes/components.sreact.tsx
index 656c478..03851d2 100644
--- a/src/back/routes/components.sreact.tsx
+++ b/src/back/routes/components.sreact.tsx
@@ -1,91 +1,10 @@
-import { documentContainerFromParsed, renderEarlyAssets } from "@sealcode/jdd";
-import type { BaseContext } from "koa";
-import type { Templatable } from "tempstream";
-import { tempstream, TempstreamJSX } from "tempstream";
-import type { Stringifiable } from "tempstream/@types/stringify.js";
-import html, { defaultHead } from "../html.js";
-import { registry } from "../jdd-components/components.js";
-import { makeJDDContext } from "../jdd-context.js";
-import { ComponentPreviewActions } from "./component-preview/component-preview-actions.js";
-import type { JDDPageState } from "./component-preview/jdd-page.js";
-import JDDPage from "./component-preview/jdd-page.js";
+import { JDDDebugger } from "@sealcode/jdd-editor";
-export const actionName = "Components";
+import html from "src/back/html.js";
+import { registry } from "src/back/jdd-components/registry.js";
+import { makeJDDContext } from "src/back/jdd-context.js";
+import { defaultHead } from "src/back/defaultHead.js";
-export default new (class JddcomponentDebuggerPage extends JDDPage {
- renderParameterButtons(state: JDDPageState): Stringifiable {
- const all_components = super.getRegistryComponents();
- if (!state.components[0]) {
- console.error("No components are present in state.components");
- }
- return (
- <div>
- <input type="submit" value="Preview" />
- <select
- name="component"
- onchange={this.makeActionCallback("change_component")}
- autocomplete="off"
- >
- {Object.entries(all_components).map(([name]) => (
- <option
- value={name}
- selected={
- state.components[0]
- ? name == state.components[0].component_name
- : false
- }
- >
- {name}
- </option>
- ))}
- </select>
- <noscript>{this.makeActionButton(state, "change_component")}</noscript>
- {this.makeActionButton(state, "randomize_args", "0")}
- </div>
- );
- }
- actions = ComponentPreviewActions;
+export const actionName = "JDDDebugger";
- async getInitialState(ctx: BaseContext) {
- const component_constants = Object.entries(registry.getAll())[0];
- if (!component_constants) {
- throw new Error("Constant component_name or component is udefined");
- }
- const [component_name, component] = component_constants;
- const initial_state = {
- components: [
- {
- component_name: component_name,
- args: await component.getExampleValues(makeJDDContext(ctx)),
- },
- ],
- };
- return initial_state;
- }
-
- wrapInLayout(
- ctx: BaseContext,
- content: Templatable,
- state: JDDPageState
- ): Templatable {
- return html(
- ctx,
- "Components",
- content,
- {
- morphing: true,
- preserveScroll: true,
- autoRefreshCSS: true,
- navbar: () => ``,
- },
- (...args) =>
- tempstream`${defaultHead(...args)}${renderEarlyAssets(
- registry,
- documentContainerFromParsed(state.components),
- makeJDDContext(ctx)
- )}`
- );
- }
-
- containerSizes = ["320", "600", "800", "1024", "1300", "1920"];
-})();
+export default new JDDDebugger({ html, registry, makeJDDContext, defaultHead });
diff --git a/src/back/routes/demos/horizontal-scroller.css b/src/back/routes/demos/horizontal-scroller.css
index 5070db1..df864a3 100644
--- a/src/back/routes/demos/horizontal-scroller.css
+++ b/src/back/routes/demos/horizontal-scroller.css
@@ -1,24 +1,24 @@
.bignum {
font-size: 60px;
background-color: aquamarine;
color: hsl(159.8, 100%, 39.9%);
width: 150px;
height: 200px;
display: flex;
align-items: center;
justify-content: center;
}
.horizontal-scroller {
.next-button,
.prev-button {
pointer-events: none;
opacity: 0.5;
}
+}
- &.has-next .next-button,
- &.has-prev .prev-button {
- pointer-events: all;
- opacity: 1;
- }
+.horizontal-scroller.has-next .next-button,
+.horizontal-scroller.has-prev .prev-button {
+ pointer-events: all;
+ opacity: 1;
}
diff --git a/src/back/routes/demos/horizontal-scroller.page.tsx b/src/back/routes/demos/horizontal-scroller.page.tsx
index ff22641..07b406d 100644
--- a/src/back/routes/demos/horizontal-scroller.page.tsx
+++ b/src/back/routes/demos/horizontal-scroller.page.tsx
@@ -1,67 +1,70 @@
import type { Context } from "koa";
import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../../html.js";
import { horizontalScroller } from "../common/horizontal-scroller/horizontal-scroller.js";
export const actionName = "HorizontalScrollerDemo";
export default new (class HorizontalScrollerDemoPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(
+ return html({
ctx,
- "HorizontalScrollerDemo",
- <div>
- <h2>Always scrolls + has buttons</h2>
- {horizontalScroller({
- elements: [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13].map((n) => (
- <div class="bignum">{n}</div>
- )),
- render: async ({ scroller, markers }) => (
- <div>
+ title: "HorizontalScrollerDemo",
+ description: "",
+ body: (
+ <div>
+ <h2>Always scrolls + has buttons</h2>
+ {horizontalScroller({
+ elements: [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13].map((n) => (
+ <div class="bignum">{n}</div>
+ )),
+ render: async ({ scroller, markers }) => (
<div>
- <button
- class="prev-button"
- type="button"
- data-action="horizontal-scroller#scrollLeft"
- >
- {" "}
- ←{" "}
- </button>
- <button
- class="next-button"
- type="button"
- data-action="horizontal-scroller#scrollRight"
- >
- {" "}
- →{" "}
- </button>
+ <div>
+ <button
+ class="prev-button"
+ type="button"
+ data-action="horizontal-scroller#scrollLeft"
+ >
+ {" "}
+ ←{" "}
+ </button>
+ <button
+ class="next-button"
+ type="button"
+ data-action="horizontal-scroller#scrollRight"
+ >
+ {" "}
+ →{" "}
+ </button>
+ </div>
+ {scroller}
+ {markers}
</div>
- {scroller}
- {markers}
- </div>
- ),
- })}
- <h2>Sometimes doesn't scroll, then dots are hidden</h2>
- {
- /* HTML */ `<style>
- .horizontal-scroller--all-visible {
- .horizontal-scroller__markers {
- opacity: 0;
- transition: 200ms;
+ ),
+ })}
+ <h2>Sometimes doesn't scroll, then dots are hidden</h2>
+ {
+ /* HTML */ `<style>
+ .horizontal-scroller--all-visible {
+ .horizontal-scroller__markers {
+ opacity: 0;
+ transition: 200ms;
+ }
}
- }
- </style>`
- }
- {horizontalScroller({
- elements: [1, 2, 3, 4].map((n) => <div class="bignum">{n}</div>),
- })}
- </div>
- );
+ </style>`
+ }
+ {horizontalScroller({
+ elements: [1, 2, 3, 4].map((n) => <div class="bignum">{n}</div>),
+ })}
+ </div>
+ ),
+ });
}
})();
diff --git a/src/back/routes/demos/show-first-row.page.tsx b/src/back/routes/demos/show-first-row.page.tsx
index 481fc6e..9b6e085 100644
--- a/src/back/routes/demos/show-first-row.page.tsx
+++ b/src/back/routes/demos/show-first-row.page.tsx
@@ -1,60 +1,66 @@
import type { Context } from "koa";
import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../../html.js";
import { showFirstRow } from "../common/show-first-row/show-first-row.js";
export const actionName = "ShowFirstRowDemo";
function makeBoxStyle() {
return `width: 100%; max-width: 200px; height: ${
100 + Math.random() * 100
}px; background-color: lime; text-align: center; color: #0000009e; font-size: 40px; padding-top: 20px; box-sizing: border-box;`;
}
export default new (class ShowFirstRowDemoPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(
+ return html({
ctx,
- "ShowFirstRowDemo",
- <div>
- <h1>showFirstRow() demo</h1>
- <h2> 9 elements (always overflows)</h2>
- {showFirstRow({
- items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
- <div style={makeBoxStyle()}>{e}</div>
- )),
- })}
+ title: "ShowFirstRowDemo",
+ description: "",
+ body: (
+ <div>
+ <h1>showFirstRow() demo</h1>
+ <h2> 9 elements (always overflows)</h2>
+ {showFirstRow({
+ items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
+ <div style={makeBoxStyle()}>{e}</div>
+ )),
+ })}
- <h2> 3 elements (overflow depends on screen width)</h2>
- {showFirstRow({
- items: [1, 2, 3].map((e) => <div style={makeBoxStyle()}>{e}</div>),
- })}
+ <h2> 3 elements (overflow depends on screen width)</h2>
+ {showFirstRow({
+ items: [1, 2, 3].map((e) => (
+ <div style={makeBoxStyle()}>{e}</div>
+ )),
+ })}
- <h2> 9 elements (always has two rows when collapsed)</h2>
- {showFirstRow({
- items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
- <div style={makeBoxStyle()}>{e}</div>
- )),
- how_many_rows: () => 2,
- })}
+ <h2> 9 elements (always has two rows when collapsed)</h2>
+ {showFirstRow({
+ items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
+ <div style={makeBoxStyle()}>{e}</div>
+ )),
+ how_many_rows: () => 2,
+ })}
- <h2>
- 9 elements (4 rows in one column mode, two rows in two column mode,
- one row otherwise)
- </h2>
- {showFirstRow({
- items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
- <div style={makeBoxStyle()}>{e}</div>
- )),
- how_many_rows: (columns) => (columns == 1 ? 4 : columns == 2 ? 2 : 1),
- })}
- </div>
- );
+ <h2>
+ 9 elements (4 rows in one column mode, two rows in two column
+ mode, one row otherwise)
+ </h2>
+ {showFirstRow({
+ items: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((e) => (
+ <div style={makeBoxStyle()}>{e}</div>
+ )),
+ how_many_rows: (columns) =>
+ columns == 1 ? 4 : columns == 2 ? 2 : 1,
+ })}
+ </div>
+ ),
+ });
}
})();
diff --git a/src/back/routes/demos/sortable.page.tsx b/src/back/routes/demos/sortable.page.tsx
index d2f371f..6d82129 100644
--- a/src/back/routes/demos/sortable.page.tsx
+++ b/src/back/routes/demos/sortable.page.tsx
@@ -1,37 +1,40 @@
import type { Context } from "koa";
import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../../html.js";
import { sortable } from "../common/sortable/sortable.js";
export const actionName = "SortableDemo";
export default new (class SortableDemoPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(
+ return html({
ctx,
- "SortableDemo",
- <div>
- <h2>Short list</h2>
- {sortable({
- items: ["One", "Two", "Three", "Four", "Five"].map((e) => (
- <div>{e}</div>
- )),
- })}
+ title: "SortableDemo",
+ description: "",
+ body: (
+ <div>
+ <h2>Short list</h2>
+ {sortable({
+ items: ["One", "Two", "Three", "Four", "Five"].map((e) => (
+ <div>{e}</div>
+ )),
+ })}
- <h2>Long list</h2>
- {sortable({
- items: "a"
- .repeat(100)
- .split("")
- .map((_, index) => <div>{index}</div>),
- })}
- </div>
- );
+ <h2>Long list</h2>
+ {sortable({
+ items: "a"
+ .repeat(100)
+ .split("")
+ .map((_, index) => <div>{index}</div>),
+ })}
+ </div>
+ ),
+ });
}
})();
diff --git a/src/back/routes/fullscreen-menu-demo.page.tsx b/src/back/routes/fullscreen-menu-demo.page.tsx
index 053dfd1..64f1141 100644
--- a/src/back/routes/fullscreen-menu-demo.page.tsx
+++ b/src/back/routes/fullscreen-menu-demo.page.tsx
@@ -1,88 +1,95 @@
import type { Context } from "koa";
import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../html.js";
import { fullscreenMenu } from "./common/fullscreen-menu/fullscreen-menu.js";
export const actionName = "FullscreenMenuDemo";
export default new (class FullscreenMenuDemoPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(
+ return html({
ctx,
- "FullscreenMenuDemo",
- <div>
- {
- /* HTML */ `<style>
- .fullscreen-menu__panel--panel_1 {
- transform: translateX(-50vw); /* move that one to the left */
- }
+ title: "FullscreenMenuDemo",
+ description: "",
+ body: (
+ <div>
+ {
+ /* HTML */ `<style>
+ .fullscreen-menu__panel--panel_1 {
+ transform: translateX(
+ -50vw
+ ); /* move that one to the left */
+ }
- .fullscreen-menu label {
- cursor: pointer;
- font-weight: bold;
- }
+ .fullscreen-menu label {
+ cursor: pointer;
+ font-weight: bold;
+ }
- .fullscreen-menu__panel {
- font-size: 20px;
- display: flex;
- flex-flow: column;
- row-gap: 20px;
- }
- </style>`
- }
- {fullscreenMenu({
- id: "demo",
- panels: {
- panel_1: (
- <div>
- PANEL 1. Click{" "}
- <label for="demo__activate--panel_2">here</label> to go to
- panel 2<div>And here's some description</div>
- Go to{" "}
- <label for="demo__activate--panel_3">
- Very tall panel 3
- </label>
- </div>
- ),
- panel_2: (
- <div>
- PANEL 2
+ .fullscreen-menu__panel {
+ font-size: 20px;
+ display: flex;
+ flex-flow: column;
+ row-gap: 20px;
+ }
+ </style>`
+ }
+ {fullscreenMenu({
+ id: "demo",
+ panels: {
+ panel_1: (
<div>
+ PANEL 1. Click{" "}
+ <label for="demo__activate--panel_2">here</label> to
+ go to panel 2<div>And here's some description</div>
+ Go to{" "}
+ <label for="demo__activate--panel_3">
+ Very tall panel 3
+ </label>
+ </div>
+ ),
+ panel_2: (
+ <div>
+ PANEL 2
+ <div>
+ <label for="demo__activate--panel_1">
+ ←Go back
+ </label>
+ </div>
+ </div>
+ ),
+ panel_3: (
+ <div style="display: flex; flex-flow: column; row-gap: 20px;">
<label for="demo__activate--panel_1">←Go back</label>
+ {[
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30,
+ ].map((n) => (
+ <div>{n}</div>
+ ))}
</div>
- </div>
- ),
- panel_3: (
- <div style="display: flex; flex-flow: column; row-gap: 20px;">
- <label for="demo__activate--panel_1">←Go back</label>
- {[
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30,
- ].map((n) => (
- <div>{n}</div>
- ))}
- </div>
- ),
- },
- default_panel: "panel_1",
- })}
- <div style="display: flex; flex-flow: column; row-gap: 10px;">
- <label for="demo--visible">Toggle menu via checkbox label</label>
- <button onclick="demo.showModal()" type="button">
- Toggle menu with javascript
- </button>
- </div>
- <div style="height: 150vh">
- This page is taaaaall - for testing reasons
+ ),
+ },
+ default_panel: "panel_1",
+ })}
+ <div style="display: flex; flex-flow: column; row-gap: 10px;">
+ <label for="demo--visible">Toggle menu via checkbox label</label>
+ <button onclick="demo.showModal()" type="button">
+ Toggle menu with javascript
+ </button>
+ </div>
+ <div style="height: 150vh">
+ This page is taaaaall - for testing reasons
+ </div>
</div>
- </div>
- );
+ ),
+ });
}
})();
diff --git a/src/back/routes/fullscreen-menu-demo.test.ts b/src/back/routes/fullscreen-menu-demo.test.ts
deleted file mode 100644
index 1ca3532..0000000
--- a/src/back/routes/fullscreen-menu-demo.test.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { FullscreenMenuDemoURL } from "./urls.js";
-import { getBrowser } from "../test_utils/browser-creator.js";
-import type { Browser, BrowserContext, Page } from "@playwright/test";
-
-describe("FullscreenMenuDemo webhint", () => {
- it("doesn't crash", async function () {
- return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(FullscreenMenuDemoURL);
- await webhintURL(base_url + FullscreenMenuDemoURL);
- // alternatively you can use webhintHTML for faster but less precise scans
- // or for scanning responses of requests that use some form of authorization:
- // const response = await rest_api.get(FullscreenMenuDemoURL);
- // await webhintHTML(response);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
-
-describe("FullscreenMenuDemo", () => {
- let page: Page;
- let browser: Browser;
- let context: BrowserContext;
-
- beforeEach(async () => {
- browser = await getBrowser();
- context = await browser.newContext();
- page = await context.newPage();
- });
-
- afterEach(async () => {
- await context.close();
- });
-
- it("works as expected", async function () {
- return withProdApp(async ({ base_url }) => {
- await page.goto(base_url + FullscreenMenuDemoURL);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
diff --git a/src/back/routes/hello.test.ts b/src/back/routes/hello.test.ts
deleted file mode 100644
index 3e09b54..0000000
--- a/src/back/routes/hello.test.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { HelloURL } from "./urls.js";
-
-describe("Hello", () => {
- it("doesn't crash", async function () {
- return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(HelloURL);
- await webhintURL(base_url + HelloURL);
- // alternatively you can use webhintHTML for faster but less precise scans
- // or for scanning responses of requests that use some form of authorization:
- // const response = await rest_api.get(HelloURL);
- // await webhintHTML(response);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
diff --git a/src/back/routes/hello.page.ts b/src/back/routes/index.page.tsx
similarity index 57%
rename from src/back/routes/hello.page.ts
rename to src/back/routes/index.page.tsx
index edcd4ca..3d176ea 100644
--- a/src/back/routes/hello.page.ts
+++ b/src/back/routes/index.page.tsx
@@ -1,17 +1,17 @@
import type { Context } from "koa";
-import { tempstream } from "tempstream";
+import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../html.js";
-export const actionName = "Hello";
+export const actionName = "Home";
-export default new (class HelloPage extends Page {
+export default new (class HomePage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(ctx, "Hello", tempstream/* HTML */ `<div></div>`);
+ return html({ ctx: ctx, title: "Home", body: <div>Hello</div>, description: "" });
}
})();
diff --git a/src/back/routes/index.test.ts b/src/back/routes/index.test.ts
index f5aa3a8..7b840ab 100644
--- a/src/back/routes/index.test.ts
+++ b/src/back/routes/index.test.ts
@@ -1,9 +1,40 @@
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
import { withProdApp } from "../test_utils/with-prod-app.js";
+import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
+import { HomeURL } from "./urls.js";
+import { getBrowser } from "../test_utils/browser-creator.js";
+import type { Browser, BrowserContext, Page } from "@playwright/test";
+
+describe("Home webhint", () => {
+ it("doesn't crash", async function () {
+ return withProdApp(async ({ base_url, rest_api }) => {
+ await rest_api.get(HomeURL);
+ await webhintURL(base_url + HomeURL);
+ // alternatively you can use webhintHTML for faster but less precise scans
+ // or for scanning responses of requests that use some form of authorization:
+ // const response = await rest_api.get(HomeURL);
+ // await webhintHTML(response);
+ });
+ }).timeout(VERY_LONG_TEST_TIMEOUT);
+});
+
+describe("Home", () => {
+ let page: Page;
+ let browser: Browser;
+ let context: BrowserContext;
+
+ beforeEach(async () => {
+ browser = await getBrowser();
+ context = await browser.newContext();
+ page = await context.newPage();
+ });
+
+ afterEach(async () => {
+ await context.close();
+ });
-describe("homepage", function () {
- it("passes webhint tests", () =>
- withProdApp(async ({ base_url }) => {
- await webhintURL(`${base_url}/`);
- })).timeout(VERY_LONG_TEST_TIMEOUT);
+ it("works as expected", async function () {
+ return withProdApp(async ({ base_url }) => {
+ await page.goto(base_url + HomeURL);
+ });
+ }).timeout(VERY_LONG_TEST_TIMEOUT);
});
diff --git a/src/back/routes/index.ts b/src/back/routes/index.ts
index 1edab6e..c74c216 100644
--- a/src/back/routes/index.ts
+++ b/src/back/routes/index.ts
@@ -1,22 +1,39 @@
import type Router from "@koa/router";
-import { Middlewares } from "sealious";
import { imageRouter, RESPONSIVE_IMAGES_URL_PATH } from "../image-router.js";
-import { MainView } from "./common/main-view.js";
import mountAutoRoutes from "./routes.js";
+import { customUrlView } from "./middlewares/customUrlView.js";
+import type TheApp from "../app.js";
+import { Middlewares } from "sealious";
-export const mainRouter = (router: Router): void => {
+export const mainRouter = (app: TheApp, router: Router): void => {
const started_at = Date.now(); // necessary to detect aplication restarts
- router.get("/", Middlewares.extractContext(), async (ctx) => {
- ctx.body = MainView(ctx);
+ router.get("(.*)", async (ctx, next) => {
+ // custom redirects
+ if (ctx.body) return;
+ const {
+ items: [redirect],
+ } = await app.collections.redirects
+ .suList()
+ .filter({ from_url: ctx.url })
+ .fetch();
+ if (redirect) {
+ ctx.status = parseInt(redirect.get("type"));
+ ctx.redirect(redirect.get("to_url"));
+ return;
+ }
+ await next();
});
router.use(Middlewares.extractContext());
router.get("/status.json", Middlewares.extractContext(), async (ctx) => {
ctx.body = { status: ctx.$app.status, started_at };
});
router.use(RESPONSIVE_IMAGES_URL_PATH, imageRouter.getRoutes());
+ app.HTTPServer.koa.use(Middlewares.extractContext());
+ app.HTTPServer.koa.use(customUrlView(app));
+
mountAutoRoutes(router);
};
diff --git a/src/back/routes/jdd-preview.sreact.tsx b/src/back/routes/jdd-preview.sreact.tsx
deleted file mode 100644
index 1b2034c..0000000
--- a/src/back/routes/jdd-preview.sreact.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import JDDCreator from "./component-preview/jdd-creator.js";
-
-export const actionName = "JDDPreview";
-
-export default new (class JDDCreatePreviewPage extends JDDCreator {
- // uncomment to create whitelist of allowed components
- // getAllowedComponents() {
- // return ["nice-box"];
- // }
-})();
diff --git a/src/back/routes/logout.test.ts b/src/back/routes/logout.test.ts
deleted file mode 100644
index 4acbc21..0000000
--- a/src/back/routes/logout.test.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import type { Browser, BrowserContext, Page } from "@playwright/test";
-import ADMIN_CREDENTIALS from "../default-admin-credentials.js";
-import { getBrowser } from "../test_utils/browser-creator.js";
-import { LONG_TEST_TIMEOUT } from "../test_utils/webhint.js";
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { LogoutURL, SignInURL } from "./urls.js";
-
-describe("Logout", () => {
- let page: Page;
- let browser: Browser;
- let context: BrowserContext;
- const username = ADMIN_CREDENTIALS.username;
- const password = ADMIN_CREDENTIALS.password;
-
- beforeEach(async () => {
- browser = await getBrowser();
- context = await browser.newContext();
- page = await context.newPage();
- });
-
- afterEach(async () => {
- await context.close();
- });
-
- describe("logout test", () => {
- it("logout", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill(password);
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(`a[href="${LogoutURL}"]`);
- await page.getByRole("link", { name: "Logout" }).click();
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- });
- }).timeout(LONG_TEST_TIMEOUT);
- });
-});
diff --git a/src/back/routes/middlewares/customUrlView.tsx b/src/back/routes/middlewares/customUrlView.tsx
new file mode 100644
index 0000000..64de6fa
--- /dev/null
+++ b/src/back/routes/middlewares/customUrlView.tsx
@@ -0,0 +1,81 @@
+import type { Context, Next } from "koa";
+import { TempstreamJSX } from "tempstream";
+import { JDD } from "@sealcode/jdd";
+import type TheApp from "../../app.js";
+import { registry } from "../../jdd-components/components.js";
+import { makeJDDContext } from "../../jdd-context.js";
+import type { RawJDDocument } from "@sealcode/jdd";
+import { imageRouter } from "../../image-router.js";
+import type { FilePointer } from "@sealcode/file-manager";
+import html from "../../html.js";
+import { tempstream } from "tempstream";
+import { defaultHead } from "../../defaultHead.js";
+import { BASE_URL } from "../../config.js";
+
+interface ContextState {
+ jddNames: string[];
+}
+
+/* eslint-disable @typescript-eslint/consistent-type-assertions */
+export const customUrlView =
+ (app: TheApp) => async (ctx: Context & ContextState, next: Next) => {
+ try {
+ if (ctx.body) return;
+ const main_domain = new URL(BASE_URL).hostname;
+ const {
+ items: [page],
+ } = await app.collections.page
+ .list(ctx.$context)
+ .filter({
+ url: ctx.url.split("?")[0],
+ ...(ctx.hostname !== main_domain
+ ? { domain: ctx.hostname }
+ : { domain: "" }),
+ })
+ .fetch();
+
+ const pageContent = Array.isArray(page?.get("content"))
+ ? (page?.get("content") as RawJDDocument)
+ : null;
+
+ if (page && pageContent) {
+ const jdd = await JDD.fromStorage(
+ registry,
+ makeJDDContext(ctx),
+ pageContent
+ );
+ const title = page.get("title");
+ const heading = page.get("heading");
+ const hideNavigation = page.get("hideNavigation") || false;
+ ctx.body = html({
+ ctx,
+ title: title || "Aspazja",
+ description: page.get("description") || "",
+ css_clumps: jdd.getAllCSSClumps(),
+ hideNavigation,
+ htmlOptions: {
+ showFooter: !hideNavigation,
+ },
+ body: (
+ <main class="custom-page jdd-outer-container">
+ {heading?.trim() ? <h1>{heading}</h1> : ""}
+ <div class="jdd-container">{jdd.render()}</div>
+ </main>
+ ),
+ makeHead: (...args) =>
+ tempstream`${defaultHead(...args)}${jdd.renderEarlyAssets()}`,
+ metaImage: await imageRouter.singleImage(
+ await (page.get("imageForMetadata") as FilePointer).getPath(),
+ 400,
+ "jpeg",
+ false
+ ),
+ });
+ }
+ } catch (err) {
+ // eslint-disable-next-line no-console
+ console.log("error in custom url router middleware:", err);
+ } finally {
+ await next();
+ }
+ };
diff --git a/src/back/routes/signIn.form.ts b/src/back/routes/signIn.form.ts
index bd5d576..6e07507 100644
--- a/src/back/routes/signIn.form.ts
+++ b/src/back/routes/signIn.form.ts
@@ -1,122 +1,123 @@
import type { Context } from "koa";
import { Form, Fields, Controls, fieldsToShape } from "@sealcode/sealgen";
import type { FlatTemplatable } from "tempstream";
import { tempstream } from "tempstream";
import { Users } from "../collections/collections.js";
import html from "../html.js";
import type {
FormDataValue,
FormData,
FormReaction,
} from "@sealcode/sealgen/@types/src/forms/form-types.js";
import type { PageErrorMessage } from "@sealcode/sealgen/@types/src/page/mountable-with-fields.js";
export const actionName = "SignIn";
const fields = {
username: new Fields.SimpleFormField(true),
password: new Fields.SimpleFormField(true),
};
export const SignInShape = fieldsToShape(fields);
export default new (class SignInForm extends Form<typeof fields, void> {
defaultSuccessMessage = "Formularz wypełniony poprawnie";
fields = fields;
controls = [
new Controls.SimpleInput(fields.username, { label: "Username:", type: "text" }),
new Controls.SimpleInput(fields.password, {
label: "Password:",
type: "password",
}),
];
async validateValues(
ctx: Context,
data: Record<string, FormDataValue>
): Promise<{ valid: boolean; error: string }> {
const { parsed: username } = await this.fields.username.getValue(ctx, data);
const filter: object = typeof username === "string" ? { username } : {};
const user = await Users.suList().filter(filter).fetch();
if (user.empty) {
return { valid: false, error: `Incorrect password or username` };
}
return { valid: true, error: `` };
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(ctx: Context) {
if (ctx.$context.session_id) {
return { canAccess: false, message: "" };
}
return { canAccess: true, message: "" };
}
/* eslint-disable @typescript-eslint/no-unused-vars */
async onSuccess(
_: Context,
__: FormData<string>,
_submitResult: void
/* eslint-enable @typescript-eslint/no-unused-vars */
): Promise<FormReaction> {
const reaction: FormReaction = {
action: "redirect",
url: "/",
};
// eslint-disable-next-line no-console
console.log("Successfully logged in.");
return reaction;
}
async onError(
ctx: Context,
data: FormData<string>,
error: unknown
): Promise<FormReaction> {
const reaction: FormReaction = {
action: "stay",
content: this.render(ctx, data, true),
messages: [
{
type: "error",
text: `There was an error while logging in: ${String(error)}`,
},
],
};
return reaction;
}
async onSubmit(ctx: Context, data: FormData) {
try {
const sessionId: string = await Users.app.collections.sessions.login(
String(data.raw_values.username),
String(data.raw_values.password)
);
ctx.cookies.set("sealious-session", sessionId, {
maxAge: 1000 * 60 * 60 * 24 * 7,
secure: ctx.request.protocol === "https",
overwrite: true,
});
} catch (error) {
throw new Error(String(error));
}
return;
}
async renderError(ctx: Context, error: PageErrorMessage): Promise<FlatTemplatable> {
- return html(ctx, "SignIn", `${error.message}`);
+ return html({ ctx, title: "SignIn", description: "", body: `${error.message}` });
}
async render(ctx: Context, data: FormData, show_field_errors: boolean) {
- return html(
+ return html({
ctx,
- "SignIn",
- tempstream`${await super.render(ctx, data, show_field_errors)}`
- );
+ title: "SignIn",
+ description: "",
+ body: tempstream`${await super.render(ctx, data, show_field_errors)}`,
+ });
}
})();
diff --git a/src/back/routes/signIn.test.ts b/src/back/routes/signIn.test.ts
deleted file mode 100644
index 44646d3..0000000
--- a/src/back/routes/signIn.test.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import ADMIN_CREDENTIALS from "../default-admin-credentials.js";
-import { getPage } from "../test_utils/browser-creator.js";
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { LogoutURL, SignInURL } from "./urls.js";
-
-describe("SignIn", () => {
- const username = ADMIN_CREDENTIALS.username;
- const password = ADMIN_CREDENTIALS.password;
-
- it("doesn't crash", async function () {
- return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(SignInURL);
- await webhintURL(base_url + SignInURL);
- // alternatively you can use webhintHTML for faster but less precise scans
- // or for scanning responses of requests that use some form of authorization:
- // const response = await rest_api.get(SignInURL);
- // await webhintHTML(response);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- describe("can access test", () => {
- it("access url", async function () {
- await withProdApp(async ({ base_url }) => {
- const { context, page } = await getPage();
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill(password);
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(`a[href="${LogoutURL}"]`);
- await page.goto(base_url + SignInURL);
- await page.waitForSelector('body:has-text("no access")');
- await page.goto(base_url);
- await page.getByRole("link", { name: "Logout" }).click();
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- await context.close();
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
- });
-
- describe("sign in test", () => {
- it("wrong username", async function () {
- await withProdApp(async ({ base_url }) => {
- const { context, page } = await getPage();
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill("username20230720722");
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill("test");
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(".form-message");
- await context.close();
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- it("correct username and password", async function () {
- await withProdApp(async ({ base_url }) => {
- const { context, page } = await getPage();
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill(password);
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(`a[href="${LogoutURL}"]`);
- await page.getByRole("link", { name: "Logout" }).click();
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- await context.close();
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- it("wrong password", async function () {
- await withProdApp(async ({ base_url }) => {
- const { context, page } = await getPage();
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill("asddasads20230720722");
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(".form-message");
- await context.close();
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
- });
-});
diff --git a/src/back/routes/signUp.form.ts b/src/back/routes/signUp.form.ts
deleted file mode 100644
index f2f95bd..0000000
--- a/src/back/routes/signUp.form.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import type { Context } from "koa";
-import type { FormData, FormDataValue, FormReaction } from "@sealcode/sealgen";
-import { Form, Fields, Controls, fieldsToShape } from "@sealcode/sealgen";
-import { Users } from "../collections/collections.js";
-import html from "../html.js";
-
-export const actionName = "SignUp";
-
-const fields = {
- username: new Fields.CollectionField(true, Users.fields.username),
- email: new Fields.CollectionField(true, Users.fields.email),
- password: new Fields.SimpleFormField(true),
-};
-
-export const SignUpShape = fieldsToShape(fields);
-
-export default new (class SignUpForm extends Form<typeof fields, void> {
- defaultSuccessMessage = "Formularz wypełniony poprawnie";
- fields = fields;
-
- controls = [
- new Controls.SimpleInput(fields.username, { label: "Username:", type: "text" }),
- new Controls.SimpleInput(fields.email, { label: "Email:", type: "email" }),
- new Controls.SimpleInput(fields.password, {
- label: "Password:",
- type: "password",
- }),
- ];
-
- async validateValues(
- ctx: Context,
- data: Record<string, FormDataValue>
- ): Promise<{ valid: boolean; error: string }> {
- const { parsed: email } = await this.fields.email.getValue(ctx, data);
- const { parsed: password } = await this.fields.password.getValue(ctx, data);
-
- if ((password || "").length >= 8) {
- const user = await Users.suList().filter({ email: email }).fetch();
- if (user.empty) {
- return { valid: true, error: `` };
- }
- return { valid: false, error: `Email is arleady taken` };
- } else {
- return {
- valid: false,
- error: "Password must contain a minimum of 8 characters",
- };
- }
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- async canAccess(ctx: Context) {
- if (ctx.$context.session_id) {
- return { canAccess: false, message: "" };
- }
- return { canAccess: true, message: "" };
- }
-
- async onError(
- ctx: Context,
- data: FormData<string>,
- error: unknown
- ): Promise<FormReaction> {
- const reaction: FormReaction = {
- action: "stay",
- content: this.render(ctx, data, true),
- messages: [
- {
- type: "error",
- text: `An unexpected error occurred, try again. <br> Error: ${String(
- error
- )}`,
- },
- ],
- };
- return reaction;
- }
-
- async onSuccess(ctx: Context, data: FormData): Promise<FormReaction> {
- const username: FormDataValue = data.raw_values.username;
- const reaction: FormReaction = {
- action: "stay",
- content: `Hello ${String(
- username
- )}. <p class="success-notify">Your account has been successfully created.</p>
- <a href="/" class="nav-logo">
- <img
- src="/assets/logo"
- alt="${ctx.$app.manifest.name} - logo"
- width="50"
- height="50"
- />
- Sealious App
- </a>`,
- messages: [
- {
- type: "success",
- text: "",
- },
- ],
- };
-
- return reaction;
- }
-
- async onSubmit(ctx: Context, data: FormData) {
- const username: string =
- typeof data.raw_values.username === "string" ? data.raw_values.username : "";
- const password: string =
- typeof data.raw_values.password === "string" ? data.raw_values.password : "";
- const email: string =
- typeof data.raw_values.email === "string" ? data.raw_values.email : "";
-
- try {
- await Users.suCreate({
- username: username,
- password: password,
- email: email,
- roles: [],
- });
- // eslint-disable-next-line no-console
- console.log("A user was created successfully.");
- } catch (error) {
- console.error("Error during user creation:", error);
- throw new Error(String(error));
- }
- return;
- }
-
- async render(ctx: Context, data: FormData, show_field_errors: boolean) {
- return html(ctx, "SignUp", await super.render(ctx, data, show_field_errors));
- }
-})();
diff --git a/src/back/routes/signUp.test.ts b/src/back/routes/signUp.test.ts
deleted file mode 100644
index ba8634f..0000000
--- a/src/back/routes/signUp.test.ts
+++ /dev/null
@@ -1,117 +0,0 @@
-import type { Browser, BrowserContext, Page } from "@playwright/test";
-import ADMIN_CREDENTIALS from "../default-admin-credentials.js";
-import { getBrowser } from "../test_utils/browser-creator.js";
-import { VERY_LONG_TEST_TIMEOUT, webhintURL } from "../test_utils/webhint.js";
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { LogoutURL, SignInURL, SignUpURL } from "./urls.js";
-
-describe("SignUp webhint", () => {
- it("doesn't crash", async function () {
- return withProdApp(async ({ base_url, rest_api }) => {
- await rest_api.get(SignUpURL);
- await webhintURL(base_url + SignUpURL);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
-
-describe("SignUp", () => {
- let page: Page;
- let browser: Browser;
- let context: BrowserContext;
- const username = ADMIN_CREDENTIALS.username;
- const password = ADMIN_CREDENTIALS.password;
- const email = ADMIN_CREDENTIALS.email;
-
- beforeEach(async () => {
- browser = await getBrowser();
- context = await browser.newContext();
- page = await context.newPage();
- });
-
- afterEach(async () => {
- await context.close();
- });
-
- describe("signup test", () => {
- it("username is taken", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign up" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("email").fill("user0192939@randomsuper.com");
- await page.getByPlaceholder("email").press("Tab");
- await page.getByPlaceholder("password").fill("user12341234");
- await page.getByRole("button", { name: "Wyślij" }).click();
- await page.waitForSelector(".input__error");
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- it("password is too shot ", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign up" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill("dasdsa");
- await page.getByPlaceholder("email").click();
- await page
- .getByPlaceholder("email")
- .fill("asasdsdadsadss123asddsa@asdasca.com");
- await page.getByPlaceholder("password").click();
- await page.getByPlaceholder("password").fill("asddsa");
- await page.getByRole("button", { name: "Wyślij" }).click();
- await page.waitForSelector(".form-message.form-message--error");
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- it("email is taken", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign up" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill("ranomusername2023072722");
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("email").fill(email);
- await page.getByPlaceholder("email").press("Tab");
- await page.getByPlaceholder("password").fill("asdasdasdasdasd");
- await page.getByRole("button", { name: "Wyślij" }).click();
- await page.waitForSelector(".form-message.form-message--error");
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-
- it("correct", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign up" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill("ranomusername20230720722");
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("email").fill("radomemail@emailrandom.com");
- await page.getByPlaceholder("email").press("Tab");
- await page.getByPlaceholder("password").fill("asdasdasdasdasd");
- await page.getByRole("button", { name: "Wyślij" }).click();
- await page.waitForSelector(".success-notify");
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
- });
- describe("can access test", () => {
- it("access url", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill(password);
- await page.getByPlaceholder("password").press("Enter");
- await page.waitForSelector(`a[href="${LogoutURL}"]`);
- await page.goto(base_url + SignUpURL);
- await page.waitForSelector('body:has-text("no access")');
- await page.goto(base_url);
- await page.getByRole("link", { name: "Logout" }).click();
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
- });
-});
diff --git a/src/back/routes/tabs-demo.page.tsx b/src/back/routes/tabs-demo.page.tsx
index 1cf8da4..1e41a9c 100644
--- a/src/back/routes/tabs-demo.page.tsx
+++ b/src/back/routes/tabs-demo.page.tsx
@@ -1,48 +1,51 @@
import type { Context } from "koa";
import { TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html from "../html.js";
import { tabs } from "./common/tabs/tabs.js";
export const actionName = "TabsDemo";
export default new (class TabsDemoPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
- return html(
+ return html({
ctx,
- "TabsDemo",
- <div>
- {tabs({
- default_tab: "tab1",
- active_navbar_tab_style:
- "font-weight: bold; text-decoration: underline",
- tabs: [
- {
- id: "tab1",
- label: "First tab",
- content: (
- <div>
- <h2>This is tab 1</h2>
- </div>
- ),
- },
- {
- id: "tab2",
- label: "Second tab",
- content: (
- <div>
- <h2>And this is tab 2</h2>
- </div>
- ),
- },
- ],
- })}
- </div>
- );
+ title: "TabsDemo",
+ description: "",
+ body: (
+ <div>
+ {tabs({
+ default_tab: "tab1",
+ active_navbar_tab_style:
+ "font-weight: bold; text-decoration: underline",
+ tabs: [
+ {
+ id: "tab1",
+ label: "First tab",
+ content: (
+ <div>
+ <h2>This is tab 1</h2>
+ </div>
+ ),
+ },
+ {
+ id: "tab2",
+ label: "Second tab",
+ content: (
+ <div>
+ <h2>And this is tab 2</h2>
+ </div>
+ ),
+ },
+ ],
+ })}
+ </div>
+ ),
+ });
}
})();
diff --git a/src/back/routes/todo.form.ts b/src/back/routes/todo.form.ts
deleted file mode 100644
index e32dc98..0000000
--- a/src/back/routes/todo.form.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-import { tempstream } from "tempstream";
-import type { Context } from "koa";
-import type { FormData, FormDataValue } from "@sealcode/sealgen";
-import { Form, Fields, Controls, fieldsToShape } from "@sealcode/sealgen";
-import { Tasks } from "../collections/collections.js";
-import html from "../html.js";
-import { TaskList } from "./common/tasks-view.js";
-
-export const actionName = "Todo";
-
-const fields = {
- name: new Fields.CollectionField(true, Tasks.fields.title),
-};
-
-export const TodoShape = fieldsToShape(fields);
-
-export default new (class TodoForm extends Form<typeof fields, void> {
- defaultSuccessMessage = "Task has been successfully created";
- fields = fields;
-
- controls = [
- new Controls.SimpleInput(fields.name, {
- label: "Task name:",
- type: "text",
- placeholder: "Write an Matrix bot",
- }),
- new Controls.HTML("decoration", (fctx) => {
- return `<input class="hidden-button" type="hidden" id="action" name="action" value="create" form="${fctx.form_id}" />`;
- }),
- ];
-
- async validateValues(
- ctx: Context,
- data: Record<string, FormDataValue>
- ): Promise<{ valid: boolean; error: string }> {
- const { parsed: name } = await this.fields.name.getValue(ctx, data);
-
- if ((name || "").length < 3) {
- return {
- valid: true,
- error: "The name of the task must have at least 3 characters",
- };
- } else {
- const filter: object = name ? { title: name } : {};
-
- const tasks = await ctx.$app.collections.tasks
- .list(ctx.$context)
- .filter(filter)
- .fetch();
- if (tasks.empty) {
- return { valid: true, error: "" };
- }
- return { valid: false, error: "Task with the same name already exists" };
- }
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- async canAccess(ctx: Context) {
- if (ctx.$context.session_id) {
- return { canAccess: true, message: "" };
- }
- return { canAccess: false, message: "" };
- }
-
- async onSubmit(ctx: Context, data: FormData) {
- const action: FormDataValue = data.raw_values.action;
-
- switch (action) {
- case "create": {
- try {
- await ctx.$app.collections.tasks.create(ctx.$context, {
- title: String(data.raw_values.name),
- done: false,
- });
- } catch (error) {
- throw new Error();
- }
- break;
- }
- case "delete": {
- const task = await ctx.$app.collections.tasks.getByID(
- ctx.$context,
- String(data.raw_values.taskId)
- );
- await task.remove(ctx.$context);
- break;
- }
- default: {
- break;
- }
- }
-
- return;
- }
-
- async render(ctx: Context, data: FormData, show_field_errors: boolean) {
- return html(
- ctx,
- "Todo",
- tempstream`${await super.render(ctx, data, show_field_errors)}
- ${TaskList(ctx)}
- `
- );
- }
-})();
diff --git a/src/back/routes/todo.test.ts b/src/back/routes/todo.test.ts
deleted file mode 100644
index 6bc1492..0000000
--- a/src/back/routes/todo.test.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import assert from "assert";
-import type { Browser, BrowserContext, Page } from "@playwright/test";
-import ADMIN_CREDENTIALS from "../default-admin-credentials.js";
-import { getBrowser } from "../test_utils/browser-creator.js";
-import { LONG_TEST_TIMEOUT, VERY_LONG_TEST_TIMEOUT } from "../test_utils/webhint.js";
-import { withProdApp } from "../test_utils/with-prod-app.js";
-import { SignInURL, TodoURL } from "./urls.js";
-
-describe("Todo webhint", () => {
- it("doesn't crash", async function () {
- return withProdApp(async ({ rest_api }) => {
- await assert.rejects(
- async () => {
- await rest_api.get(TodoURL);
- },
- {
- response: {
- data: "no access",
- status: 403,
- },
- }
- );
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
-});
-
-describe("Todo", function () {
- let page: Page;
- let browser: Browser;
- let context: BrowserContext;
- const username = ADMIN_CREDENTIALS.username;
- const password = ADMIN_CREDENTIALS.password;
-
- beforeEach(async () => {
- browser = await getBrowser();
- context = await browser.newContext();
- page = await context.newPage();
- });
-
- afterEach(async () => {
- await context.close();
- });
-
- describe("todo test", () => {
- it("create and delete task", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- await page.getByRole("link", { name: "Sign in" }).click();
- await page.getByPlaceholder("text").click();
- await page.getByPlaceholder("text").fill(username);
- await page.getByPlaceholder("text").press("Tab");
- await page.getByPlaceholder("password").fill(password);
- await page.getByPlaceholder("password").press("Enter");
- await page.getByRole("link", { name: "To do app" }).click();
- await page.getByPlaceholder("Write an Matrix bot").click();
- await page.getByPlaceholder("Write an Matrix bot").fill("randomtasdk");
- await page.getByRole("button", { name: "Wyślij" }).click();
- await page.waitForSelector(".form-message.form-message--success");
- await page.locator("turbo-frame").getByRole("checkbox").check();
- await page.locator("turbo-frame").getByRole("checkbox").uncheck();
- await page
- .locator("turbo-frame")
- .getByRole("button", { name: "Delete" })
- .click();
- await page.getByRole("link", { name: "Logout" }).click();
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- });
- }).timeout(VERY_LONG_TEST_TIMEOUT);
- });
-
- describe("can access test", () => {
- it("access url", async function () {
- await withProdApp(async ({ base_url }) => {
- await page.goto(base_url);
- try {
- await page.waitForSelector(`a[href="${SignInURL}"]`);
- await page.goto(base_url + TodoURL);
- await page.waitForSelector('body:has-text("no access")');
- } catch (error) {
- console.error(error);
- }
- });
- }).timeout(LONG_TEST_TIMEOUT);
- });
-});
diff --git a/src/back/sample.test.ts b/src/back/sample.test.ts
deleted file mode 100644
index 5d0cbb5..0000000
--- a/src/back/sample.test.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-describe("sample test", () => {
- it("always passes", () => {
- return;
- });
-});
diff --git a/src/back/services/meilisearch.ts b/src/back/services/meilisearch.ts
new file mode 100644
index 0000000..d3cd207
--- /dev/null
+++ b/src/back/services/meilisearch.ts
@@ -0,0 +1,95 @@
+import type { Context } from "koa";
+import { MeiliSearch } from "meilisearch";
+import type { CollectionItem } from "sealious";
+import { sleep } from "../util.js";
+import { MEILISEARCH_HOST, MEILISEARCH_MASTER_KEY } from "./../config.js";
+
+let meilisearch: MeiliSearch | null = null;
+
+export const getMeilisearch = () => {
+ if (!meilisearch) {
+ meilisearch = new MeiliSearch({
+ host: MEILISEARCH_HOST,
+ apiKey: MEILISEARCH_MASTER_KEY,
+ });
+ }
+
+ return meilisearch;
+};
+
+export const createIndex = async (name: string) => {
+ try {
+ const ms = getMeilisearch();
+ const indexes = await ms.getIndexes();
+ const indexExists = indexes.results.find((idx) => idx.uid === name);
+
+ if (!indexExists) {
+ await getMeilisearch().createIndex(name, { primaryKey: "id" });
+ }
+ } catch (error) {
+ throw new Error(`Error when creating index ${name}: ${error}`);
+ }
+};
+
+const indexes = {} as Record<
+ string,
+ { getItems: (ctx: Context, ids: string[]) => CollectionItem[] }
+>;
+
+export async function search(
+ ctx: Context,
+ query: string,
+ use_indexes: Array<keyof typeof indexes>
+) {
+ const meilisearch = getMeilisearch();
+ const queries = use_indexes.map((index_name: string) => ({
+ indexUid: index_name,
+ q: query,
+ rankingScoreThreshold: 0.2,
+ matchingStrategy: <const>"frequency",
+ }));
+ const { results } = await meilisearch.multiSearch({
+ queries,
+ });
+
+ const result = Object.fromEntries(
+ await Promise.all(
+ use_indexes.map(async (index_name, key) => {
+ const ids = results[key]!.hits.map((e) => e.id);
+ const items = await indexes[index_name]?.getItems(ctx, ids);
+ return [index_name, items];
+ })
+ )
+ );
+ const ret = {
+ ...Object.fromEntries(Object.keys(indexes).map((index_name) => [index_name, []])),
+ ...result,
+ };
+
+ return ret;
+}
+
+export const isMeilisearchRunning = async () => {
+ try {
+ const response = await fetch(`${MEILISEARCH_HOST}/health`);
+ if (response.status === 200) {
+ return true;
+ } else {
+ return false;
+ }
+ } catch (e) {
+ return false;
+ }
+};
+
+export async function waitForMeilisearch(timeout_s: number) {
+ const time_start = Date.now();
+ // eslint-disable-next-line no-await-in-loop
+ while (!(await isMeilisearchRunning())) {
+ // eslint-disable-next-line no-await-in-loop
+ await sleep(1000);
+ if ((Date.now() - time_start) / 1000 > timeout_s) {
+ throw new Error("timeout");
+ }
+ }
+}
diff --git a/src/back/test_utils/webhint.ts b/src/back/test_utils/webhint.ts
index e3112fd..94abf3f 100644
--- a/src/back/test_utils/webhint.ts
+++ b/src/back/test_utils/webhint.ts
@@ -1,40 +1,50 @@
import _locreq from "locreq";
import { module_dirname } from "../utils/module_dirname.js";
const locreq = _locreq(module_dirname(import.meta.url));
import { spawn } from "child_process";
import { hasShape, is, predicates } from "@sealcode/ts-predicates";
import { promises as fs } from "fs";
+import chalk from "chalk";
export const LONG_TEST_TIMEOUT = 100 * 1000;
-export const VERY_LONG_TEST_TIMEOUT = 75 * 1000;
+export const VERY_LONG_TEST_TIMEOUT = 300 * 1000;
export async function webhintURL(url: string, config = locreq.resolve(".hintrc")) {
// eslint-disable-next-line no-console
console.log("scanning with webhint....", url);
+ if (process.env.WITH_WEBHINT !== "TRUE") {
+ // eslint-disable-next-line no-console
+ console.log(
+ chalk.yellow(
+ "skipping webhint tests. Run 'WITH_WEBHINT=true npm run test' to run full tests or run them on Jenkins"
+ )
+ );
+ return;
+ }
try {
const subprocess = spawn(
"node",
[locreq.resolve("webhint/node_modules/.bin/hint"), "--config", config, url],
{ cwd: locreq.resolve("webhint") } // to prevent webhint from trying to parese source code
);
subprocess.stderr.on("data", (b) => console.error(String(b)));
// eslint-disable-next-line no-console
subprocess.stdout.on("data", (b) => console.log(String(b)));
await new Promise<void>((resolve, reject) => {
subprocess.on("close", (code) =>
code === 0 ? resolve() : reject(new Error("Webhint tests failed"))
);
});
} catch (e) {
if (is(e, predicates.object) && hasShape({ stdout: predicates.string }, e)) {
throw new Error(e.stdout);
} else {
throw e;
}
}
}
export async function webhintHTML(html: string) {
await fs.writeFile("/tmp/index.html", html);
await webhintURL("/tmp/index.html", locreq.resolve(".hintrc.local.json"));
}
diff --git a/src/back/test_utils/with-prod-app.ts b/src/back/test_utils/with-prod-app.ts
index 3722611..e93ee63 100644
--- a/src/back/test_utils/with-prod-app.ts
+++ b/src/back/test_utils/with-prod-app.ts
@@ -1,81 +1,81 @@
import _locreq from "locreq";
import { v4 as uuid } from "uuid";
import { module_dirname } from "../utils/module_dirname.js";
const locreq = _locreq(module_dirname(import.meta.url));
import { SMTPMailer } from "sealious";
import { TestUtils } from "sealious";
import TheApp from "../app.js";
import { mainRouter } from "../routes/index.js";
import getPort from "get-port";
import {
MAILCATCHER_API_PORT,
MAILCATCHER_HOST,
MAILCATCHER_SMTP_PORT,
} from "../config.js";
const port_numbers = async function* () {
yield await getPort();
};
export async function withProdApp(
callback: (args: {
app: TheApp;
base_url: string;
rest_api: TestUtils.MockRestApi;
mail_api: TestUtils.MailcatcherAPI;
}) => Promise<void>
) {
const app = new TheApp();
const port = (await port_numbers().next()).value;
if (!port) {
console.error("Constant port is empty.");
return;
}
app.config["www-server"].port = port;
app.config.datastore_mongo = {
...app.config.datastore_mongo,
db_name: "sealious-app-test" + uuid(),
};
app.config.logger.level = <const>"none";
app.mailer = new SMTPMailer({
host: MAILCATCHER_HOST,
port: MAILCATCHER_SMTP_PORT,
user: "any",
password: "any",
});
- mainRouter(app.HTTPServer.router);
+ mainRouter(app, app.HTTPServer.router);
app.HTTPServer.addStaticRoute("/", locreq.resolve("public"));
await app.start();
const base_url = `http://127.0.0.1:${port}`;
const mail_api = new TestUtils.MailcatcherAPI(
`http://${MAILCATCHER_HOST}:${MAILCATCHER_API_PORT}`,
app
);
await mail_api.deleteAllInstanceEmails();
async function stop() {
await app.removeAllData();
await app.stop();
}
try {
await callback({
app,
base_url,
rest_api: new TestUtils.MockRestApi(base_url),
mail_api,
});
await stop();
} catch (e) {
if (app.status !== "stopped") {
await stop();
}
console.error(e);
throw e;
}
}
diff --git a/src/back/util.ts b/src/back/util.ts
index b1da618..bb957e3 100644
--- a/src/back/util.ts
+++ b/src/back/util.ts
@@ -1,43 +1,78 @@
-import type { BaseContext } from "koa";
+/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
+/* eslint-disable @typescript-eslint/consistent-type-assertions */
+import type { Context } from "koa";
import qs from "qs";
+import { MEILISEARCH_HOST } from "./config.js";
export async function sleep(time: number) {
return new Promise((resolve) => setTimeout(resolve, time));
}
export type Awaited<T> = T extends Promise<infer U> ? U : T;
export type UnwrapArray<T> = T extends Array<infer U> ? U : T;
export function* naturalNumbers(min: number, max: number) {
for (let i = min; i <= max; i++) {
yield i;
}
}
export function UrlWithNewParams(
- ctx: BaseContext,
+ ctx: Context,
query_params: Record<string, unknown>
): string {
return `${ctx.path}?${qs.stringify(query_params)}`;
}
+export function pickRandom<T>(array: [T, ...T[]]): T {
+ return array?.[Math.floor(Math.random() * array.length)] || array[0];
+}
+
+export function isNonEmpty<T>(a: Array<T>): a is NonEmptyArray<T> {
+ return isNonEmpty.length > 0;
+}
+
+export type NonEmptyArray<T> = [T, ...T[]];
+
+export function pickN<T>(array: [T, ...T[]], n: number): T[] {
+ const s = new Set<T>();
+ while (s.size != n) {
+ s.add(pickRandom(array));
+ }
+
+ return Array.from(s.values());
+}
+
export function shuffle<T>(array: T[]): T[] {
const array_copy = [...array];
let currentIndex = array_copy.length;
// While there remain elements to shuffle...
while (currentIndex != 0) {
// Pick a remaining element...
const randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
- const new_value = [array_copy[randomIndex], array_copy[currentIndex]];
- if (new_value[0] && new_value[1]) {
- [array_copy[currentIndex], array_copy[randomIndex]] = new_value;
- } else {
- console.error("One of array_copy's values is undefined");
- }
+ [array_copy[currentIndex], array_copy[randomIndex]] = [
+ array_copy[randomIndex] as T,
+ array_copy[currentIndex] as T,
+ ];
}
return array_copy;
}
+
+export const toCheckboxValues = (arr: string[]): Record<string, string> =>
+ arr.reduce((acc: Record<string, string>, key) => {
+ acc[key] = "on";
+ return acc;
+ }, {});
+
+export const fromCheckboxValues = (arr: Record<string, string> | null): string[] => {
+ if (!arr) {
+ return [];
+ }
+ return Object.entries(arr)
+ .filter(([, value]) => value === "on")
+ .map(([key]) => key);
+};
diff --git a/src/colors.css b/src/colors.css
index fac09e6..2833291 100644
--- a/src/colors.css
+++ b/src/colors.css
@@ -1,3 +1,3 @@
html {
- --primary-accent-color: #5294a1;
+ --primary-accent-color: #5294a1;
}
diff --git a/src/front/controllers.ts b/src/front/controllers.ts
index 58bd5c2..2a22e3f 100644
--- a/src/front/controllers.ts
+++ b/src/front/controllers.ts
@@ -1,40 +1,52 @@
// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-stimulus'
import * as Turbo from "@hotwired/turbo";
import { Application } from "stimulus";
const application = Application.start();
-import { default as RefreshOnTsChanges } from "./../back/html-controllers/refresh-on-ts-changes.stimulus.js";
-application.register("refresh-on-ts-changes", RefreshOnTsChanges);
-
-import { default as RefreshStyles } from "./../back/html-controllers/refresh-styles.stimulus.js";
-application.register("refresh-styles", RefreshStyles);
-
import { default as AutoscrollingImages } from "./../back/jdd-components/autoscrolling-images/autoscrolling-images.stimulus.js";
application.register("autoscrolling-images", AutoscrollingImages);
import { default as MapWithPins } from "./../back/jdd-components/map-with-pins/map-with-pins.stimulus.js";
application.register("map-with-pins", MapWithPins);
import { default as HorizontalScroller } from "./../back/routes/common/horizontal-scroller/horizontal-scroller.stimulus.js";
application.register("horizontal-scroller", HorizontalScroller);
import { default as Sortable } from "./../back/routes/common/sortable/sortable.stimulus.js";
application.register("sortable", Sortable);
-import { default as AutogrowTextarea } from "./../back/routes/component-preview/autogrow-textarea.stimulus.js";
+import { default as AutogrowTextarea } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/autogrow-textarea.stimulus.js";
application.register("autogrow-textarea", AutogrowTextarea);
-import { default as ComponentDebugger } from "./../back/routes/component-preview/component-debugger.stimulus.js";
+import { default as ComponentDebugger } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/component-debugger.stimulus.js";
application.register("component-debugger", ComponentDebugger);
-import { default as InputImagePreview } from "./../back/routes/component-preview/input-image-preview.stimulus.js";
+import { default as ExportableTextarea } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/exportable-textarea.stimulus.js";
+application.register("exportable-textarea", ExportableTextarea);
+
+import { default as InputImagePreview } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/input-image-preview.stimulus.js";
application.register("input-image-preview", InputImagePreview);
-import { default as PasteToMarkdown } from "./../back/routes/component-preview/paste-to-markdown.stimulus.js";
-application.register("paste-to-markdown", PasteToMarkdown);
+import { default as JddTablePaste } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/jdd-table-paste.stimulus.js";
+application.register("jdd-table-paste", JddTablePaste);
+
+import { default as JsonEditor } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/json-editor.stimulus.js";
+application.register("json-editor", JsonEditor);
-import { default as SubmitOnInput } from "./../back/routes/component-preview/submit-on-input.stimulus.js";
+import { default as MarkdownTextarea } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/markdown-textarea.stimulus.js";
+application.register("markdown-textarea", MarkdownTextarea);
+
+import { default as RefreshOnTsChanges } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/refresh-on-ts-changes.stimulus.js";
+application.register("refresh-on-ts-changes", RefreshOnTsChanges);
+
+import { default as RefreshStyles } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/refresh-styles.stimulus.js";
+application.register("refresh-styles", RefreshStyles);
+
+import { default as SubmitOnInput } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/submit-on-input.stimulus.js";
application.register("submit-on-input", SubmitOnInput);
+import { default as Toast } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/toast.stimulus.js";
+application.register("toast", Toast);
+
export { Turbo };
diff --git a/src/front/index.ts b/src/front/index.ts
index 4ba3011..a49c564 100644
--- a/src/front/index.ts
+++ b/src/front/index.ts
@@ -1,30 +1,31 @@
export * from "./controllers.js";
(function enableScrollPreservation() {
/* https://github.com/hotwired/turbo/issues/37#issuecomment-1422200868 */
let scrollTop = 0;
let shouldPreserveScroll = false;
document.addEventListener("turbo:click", function (event) {
if ((event.target as HTMLDivElement).hasAttribute("data-turbo-preserve-scroll")) {
shouldPreserveScroll = true;
} else {
shouldPreserveScroll = false;
}
});
- document.addEventListener("turbo:visit", function () {
+ document.addEventListener("turbo:before-visit", function () {
if (shouldPreserveScroll) {
scrollTop = document.documentElement.scrollTop;
- } else {
- scrollTop = 0;
}
});
addEventListener("turbo:visit", () => {
/* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any */
- (window as any).Turbo.navigator.currentVisit.scrolled = true;
- document.documentElement.scrollTop = scrollTop;
+ if (shouldPreserveScroll) {
+ (window as any).Turbo.navigator.currentVisit.scrolled = true;
+ document.documentElement.scrollTop = scrollTop;
+ }
+ shouldPreserveScroll = false;
});
})();
diff --git a/src/main.css b/src/main.css
index 6fdc949..8e78b1c 100644
--- a/src/main.css
+++ b/src/main.css
@@ -1,41 +1,39 @@
-@import "includes.css";
-
html {
background: #eee;
font-family: Ubuntu, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
"Segoe UI Emoji", "Segoe UI Symbol", "Lato", "Helvetica Neue", Helvetica, Arial,
sans-serif;
font-size: 14px;
}
body {
max-width: 1024px;
margin: 1rem auto;
background: white;
padding: 1rem;
}
.delete-button {
height: 1rem;
padding: 0;
line-height: 0;
padding: 0.5rem;
}
.nav-logo {
display: flex;
align-items: center;
}
nav a:not(:visited) {
color: var(--primary-accent-color);
}
.form-input__wrapper--control-type__photo {
display: flex;
flex-flow: row wrap;
label {
width: 100%;
}
}
diff --git a/src/tables.css b/src/tables.css
index f33e558..de76fdf 100644
--- a/src/tables.css
+++ b/src/tables.css
@@ -1,33 +1,37 @@
table,
td,
th {
border-collapse: collapse;
}
.list-pagination {
display: grid;
grid-template-columns: 1fr min-content 1fr;
grid-column-gap: 1rem;
margin-bottom: 0.5rem;
}
.list-pagination__left {
text-align: right;
}
thead th {
background-color: #ddd;
border-style: solid;
border-width: 1px 0 1px 0;
border-color: #777;
padding: 9px 7px;
font-size: 14px;
}
+tr {
+ transition: background-color 100ms;
+}
+
tr:hover {
- background-color: #ccc;
+ background-color: #ccc !important;
}
td {
padding: 2px 8px;
}
diff --git a/test.cjs b/test.cjs
index dfecbfc..a6112e1 100644
--- a/test.cjs
+++ b/test.cjs
@@ -1,54 +1,58 @@
const mri = require("mri");
const { spawn } = require("child_process");
const argv = process.argv.slice(2);
const args = mri(argv);
const bin_dir = "./node_modules/.bin/";
const mocha = bin_dir + "mocha";
let mocha_options = [
"--recursive",
"--timeout=100000",
"--require",
"source-map-support/register",
"--exit",
];
+if (args["serial"]) {
+ mocha_options.push("--parallel");
+}
+
if (args["test-report"]) {
mocha_options = [
...mocha_options,
// "--require",
// "ts-node/register",
// "--require",
// "./src/http/type-overrides.ts",
"--reporter",
"xunit",
"--reporter-option",
"output=.xunit",
];
}
const mocha_files = ["dist/**/*.test.js"];
let command = [mocha, ...mocha_options, ...mocha_files];
if (args.debug) {
command = ["node", "inspect", ...command];
}
console.log("spawning mocha...", command.join(" "));
const proc = spawn(command[0], command.slice(1), {
stdio: "inherit",
env: process.env,
});
proc.on("exit", function (code) {
if (args["test-report"]) {
process.exit(0);
} else {
process.exit(code);
}
});
diff --git a/tsconfig-back.json b/tsconfig-back.json
index 3ee7ee5..9e03cb1 100644
--- a/tsconfig-back.json
+++ b/tsconfig-back.json
@@ -1,26 +1,30 @@
{
"compilerOptions": {
- "module": "es2022",
- "moduleResolution": "node16",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
- "target": "ES2019",
+ "noUncheckedIndexedAccess": true,
+ "target": "ES2022",
+ "esModuleInterop": true,
"lib": ["es2021"],
"outDir": "./dist/back",
- "keyofStringsOnly": true,
"jsx": "react",
"jsxFactory": "TempstreamJSX.createElement",
"jsxFragmentFactory": "TempstreamJSX.Fragment",
"checkJs": false,
"allowJs": true,
"resolveJsonModule": true,
"sourceMap": true,
"skipLibCheck": true,
"esModuleInterop": true,
- "noUncheckedIndexedAccess": true
+ "noUncheckedIndexedAccess": true,
+ "paths": {
+ "src/*": ["./src/*"]
+ }
},
"include": ["./src/back/*", "./src/back/**/*", "./src/back/routes/common/navbar.ts"],
"exclude": ["./src/front", "./src/**/*.stimulus.ts"],
"ts-node": { "experimentalResolver": true, "esm": true }
}
diff --git a/tsconfig-front.json b/tsconfig-front.json
index cf6b83e..c72227f 100644
--- a/tsconfig-front.json
+++ b/tsconfig-front.json
@@ -1,11 +1,12 @@
{
"compilerOptions": {
- "module": "CommonJS",
+ "module": "es2022",
+ "moduleResolution": "node",
"target": "ES6",
"lib": ["dom", "es2021"],
"skipLibCheck": true,
"esModuleInterop": true,
"noUncheckedIndexedAccess": true
},
"include": ["./src/front", "./src/**/*.stimulus.ts"]
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Nov 8, 08:23 (1 d, 7 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
ca/fa/ee34bc8c31d664531f1ae173c47b
Default Alt Text
(706 KB)

Event Timeline