From 800d3f9294b2f1fd59000eee4c197663aa6b4f29 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 5 Feb 2024 21:34:04 -0700
Subject: [PATCH 01/18] Revamp of E2E testing workflows
---
.dockerignore | 2 +
.github/workflows/tests.yaml | 37 +++++++++
.gitignore | 11 +--
CONTRIBUTING.md | 11 +--
Dockerfile.e2etest | 19 +++++
package.json | 7 +-
playwright.config.ts | 9 ++-
pnpm-lock.yaml | 141 +++++++++++++++++++----------------
seccomp_profile.json | 12 +++
test.sh | 76 +++++++++++++++++++
tests/fixtures/index.ts | 30 ++++----
utils/testlogin.js | 7 +-
12 files changed, 258 insertions(+), 104 deletions(-)
create mode 100644 .github/workflows/tests.yaml
create mode 100644 Dockerfile.e2etest
create mode 100644 seccomp_profile.json
create mode 100755 test.sh
diff --git a/.dockerignore b/.dockerignore
index 4eb56ae6..bc448422 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -4,3 +4,5 @@ node_modules
dist
dist-firefox
artifacts
+results
+seccomp_profile.json
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
new file mode 100644
index 00000000..0d5bb68d
--- /dev/null
+++ b/.github/workflows/tests.yaml
@@ -0,0 +1,37 @@
+name: Playwright Tests
+on:
+ push:
+ branches: [master, testing]
+ pull_request:
+ branches: [master, testing]
+
+jobs:
+ playwright:
+ name: "Playwright Tests"
+ runs-on: ubuntu-latest
+ container:
+ image: mcr.microsoft.com/playwright:v1.41.1-jammy
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 21
+ - name: Install PNPM
+ run: corepack enable
+ - name: Install project dependencies
+ run: pnpm install
+ - name: Install test dependencies
+ run: pnpm test:deps
+ - name: Build in prod mode
+ run: pnpm build
+ - name: Run the test suite against Chromium
+ run: pnpm test
+ env:
+ HOME: /root
+ CI: true
+ E2E_SHACKLI: ${{ secrets.E2E_SHACKLI }}
+ - name: Upload test report
+ uses: actions/upload-artifact@v2
+ with:
+ name: test-report
+ path: results/*
diff --git a/.gitignore b/.gitignore
index 0e4d7204..a0df8efe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,16 @@
.idea*
node_modules
-coverage-ts
dist
-dist-chrome
dist-firefox
artifacts
# make sure to use --id option when signing!
.web-extension-id
-Session.vim
dist.crx
dist.pem
tsconfig.tsbuildinfo
-mochawesome-report
-/cypress/screenshots/
-/cypress/fixtures/_shack_li_.txt
-debug.log
.DS_Store
.envrc
.env
.direnv
-/test-results/
-/playwright-report/
-/playwright/.cache/
+results
_shack_li_.json
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index de020764..455f208d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -39,13 +39,14 @@ If you're interested in contributing a new content script or feature suggestion:
- The WinChatty notifications' `processNotifyEvent` exposes the latest event message retrieved from the server (see: [WinChatty API](http://winchatty.com/v2/readme)).
- Content scripts have to be registered in `content.ts`. Make sure to put event-dependent handlers **_before_** the `ChromeShack.install()` line.
-## Running integration tests
+## Running integration tests locally
-The E2E integration test suite requires a login cookie fixture in order to run all tests successfully. To setup the local testing environment do the following:
+The E2E integration test suite requires a valid Shacknews login cookie fixture loaded into the environment var `E2E_SHACKLI` in order to run all tests successfully. This variable can be loaded from a `.env` file placed in the project root or exported from your shell. To setup the local testing environment and generate the fixture from scratch do the following:
- If you haven't already, make sure to do: `pnpm install`
+- **STRONGLY RECOMMENDED**: Use the included `test.sh` in the project root to leverage Docker/Podman for containerized testing!
- Make sure you're running on a supported OS version, see [this doc](https://playwright.dev/docs/intro#system-requirements) for details. Typically Windows, MacOS, or an LTS version of Ubuntu are supported.
-- Verify that Cypress and Chrome are installed and can run: `pnpm exec playwright install --with-deps chromium`
+- Verify that Playwright and Chromium are installed with: `pnpm test:deps`
- Put your test credentials in an `.env` file in the project root in the following format:
```text
@@ -53,8 +54,8 @@ The E2E integration test suite requires a login cookie fixture in order to run a
TESTPW=password
```
-- Create the login cookie fixture: `pnpm generate-cookie`
-- Run the test suite (NOTE: this can take significant machine resources): `pnpm test`
+- Authenticate your credentials and create the login cookie fixture in `.env`: `pnpm testlogin`
+- Run the test suite (NOTE: this can take significant machine resources): `pnpm build && pnpm test` or `./test.sh` in the project root.
## Release procedure
diff --git a/Dockerfile.e2etest b/Dockerfile.e2etest
new file mode 100644
index 00000000..7563dcf0
--- /dev/null
+++ b/Dockerfile.e2etest
@@ -0,0 +1,19 @@
+# Pull the base image
+FROM mcr.microsoft.com/playwright:v1.41.1-jammy
+
+ARG SCOOKIE
+ARG CI
+
+ENV CI=$CI
+ENV E2E_SHACKLI=$SCOOKIE
+ENV PNPM_HOME="/pnpm"
+ENV PATH="$PNPM_HOME:$PATH"
+RUN corepack enable
+
+WORKDIR /code/
+COPY . /code/
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
+RUN pnpm test:deps && \
+ pnpm build
+
+CMD ["/bin/bash"]
diff --git a/package.json b/package.json
index afcc9e79..e80c9954 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
"build:popup": "vite build --config vite.popup.config.ts",
"build:permissions": "vite build --config vite.permissions.config.ts",
"build:js": "run-p build:serviceWorker build:content build:popup build:permissions",
- "clean": "rm -rf dist-firefox/* dist/* artifacts/dist/* artifacts/dist-firefox/* playwright-report/ test-results/",
+ "clean": "rm -rf dist-firefox/* dist/* artifacts/dist/* artifacts/dist-firefox/*",
"dev:crxjs": "vite dev",
"dev:firefoxjs": "NODE_ENV=development run-p build:js",
"dev": "run-s clean lint && tsc && run-p dev:crxjs dev:firefoxjs",
@@ -21,6 +21,7 @@
"build:ffxcrxjs": "run-s build:js",
"build": "run-s clean lint && tsc && run-p build:crxjs build:ffxcrxjs",
"build:pkg": "run-s build pkgsrc",
+ "test:deps": "playwright install chromium --with-deps",
"test": "playwright test",
"pretty": "prettier -w ./src/*.html ./src/styles/*.css ./public/*.html",
"lint": "biome lint .",
@@ -55,7 +56,7 @@
"@types/jquery": "^3.5.29",
"@types/lodash.isequal": "^4.5.8",
"@types/node": "^20.11.16",
- "@types/react": "^18.2.51",
+ "@types/react": "^18.2.54",
"@types/react-dom": "^18.2.18",
"adm-zip": "^0.5.10",
"dotenv": "^16.4.1",
@@ -64,7 +65,7 @@
"jest": "^29.7.0",
"license-checker": "^25.0.1",
"npm-run-all": "^4.1.5",
- "prettier": "^3.2.4",
+ "prettier": "^3.2.5",
"typescript": "^5.3.3",
"vite": "^5.0.12"
}
diff --git a/playwright.config.ts b/playwright.config.ts
index 3608f05b..744a4a64 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -17,9 +17,13 @@ export default defineConfig({
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 0 : 1,
/* Opt out of parallel tests on CI */
- workers: process.env.CI ? 1 : 2,
+ workers: process.env.CI ? 1 : 3,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
- reporter: [["html"], ["list"]],
+ reporter: [
+ ["list", { printSteps: true, outputFolder: "results/reports" }],
+ ["html", { open: "never", outputFolder: "results/reports" }],
+ ],
+ outputDir: "results/tests",
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
@@ -28,6 +32,7 @@ export default defineConfig({
screenshot: "only-on-failure",
trace: "retain-on-failure",
video: "retain-on-failure",
+ headless: true,
},
/* Configure projects for major browsers */
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5196bcd3..f4359985 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,7 +52,7 @@ dependencies:
version: 1.0.14
zustand:
specifier: ^4.5.0
- version: 4.5.0(@types/react@18.2.51)(react@18.2.0)
+ version: 4.5.0(@types/react@18.2.54)(react@18.2.0)
devDependencies:
'@biomejs/biome':
@@ -83,8 +83,8 @@ devDependencies:
specifier: ^20.11.16
version: 20.11.16
'@types/react':
- specifier: ^18.2.51
- version: 18.2.51
+ specifier: ^18.2.54
+ version: 18.2.54
'@types/react-dom':
specifier: ^18.2.18
version: 18.2.18
@@ -110,8 +110,8 @@ devDependencies:
specifier: ^4.1.5
version: 4.1.5
prettier:
- specifier: ^3.2.4
- version: 3.2.4
+ specifier: ^3.2.5
+ version: 3.2.5
typescript:
specifier: ^5.3.3
version: 5.3.3
@@ -1139,7 +1139,7 @@ packages:
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.0
+ fastq: 1.17.1
dev: true
/@pkgjs/parseargs@0.11.0:
@@ -1451,11 +1451,11 @@ packages:
/@types/react-dom@18.2.18:
resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==}
dependencies:
- '@types/react': 18.2.51
+ '@types/react': 18.2.54
dev: true
- /@types/react@18.2.51:
- resolution: {integrity: sha512-XeoMaU4CzyjdRr3c4IQQtiH7Rpo18V07rYZUucEZQwOUEtGgTXv7e6igQiQ+xnV6MbMe1qjEmKdgMNnfppnXfg==}
+ /@types/react@18.2.54:
+ resolution: {integrity: sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==}
dependencies:
'@types/prop-types': 15.7.11
'@types/scheduler': 0.16.8
@@ -1559,11 +1559,12 @@ packages:
sprintf-js: 1.0.3
dev: true
- /array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
+ /array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- is-array-buffer: 3.0.2
+ is-array-buffer: 3.0.4
dev: true
/array-find-index@1.0.2:
@@ -1571,16 +1572,17 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /arraybuffer.prototype.slice@1.0.2:
- resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
+ /arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
dependencies:
- array-buffer-byte-length: 1.0.0
+ array-buffer-byte-length: 1.0.1
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
- get-intrinsic: 1.2.2
- is-array-buffer: 3.0.2
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.3
+ is-array-buffer: 3.0.4
is-shared-array-buffer: 1.0.2
dev: true
@@ -1706,8 +1708,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001582
- electron-to-chromium: 1.4.654
+ caniuse-lite: 1.0.30001584
+ electron-to-chromium: 1.4.657
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.3)
dev: true
@@ -1726,7 +1728,7 @@ packages:
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
function-bind: 1.1.2
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
set-function-length: 1.2.0
dev: true
@@ -1745,8 +1747,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /caniuse-lite@1.0.30001582:
- resolution: {integrity: sha512-vsJG3V5vgfduaQGVxL53uSX/HUzxyr2eA8xCo36OLal7sRcSZbibJtLeh0qja4sFOr/QQGt4opB4tOy+eOgAxg==}
+ /caniuse-lite@1.0.30001584:
+ resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==}
dev: true
/chalk@2.4.2:
@@ -1989,7 +1991,7 @@ packages:
resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
gopd: 1.0.1
has-property-descriptors: 1.0.1
dev: true
@@ -2056,8 +2058,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.654:
- resolution: {integrity: sha512-hjfFa+Vj4WGLRVTlCQa+IivBkpcp+boGxMQfusOC/me5Y5NfU4wX7wyw+K9p8Cw4tl0BVIZGH2n7y/jMc3w4pg==}
+ /electron-to-chromium@1.4.657:
+ resolution: {integrity: sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==}
dev: true
/embla-carousel-react@8.0.0-rc19(react@18.2.0):
@@ -2108,15 +2110,15 @@ packages:
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
engines: {node: '>= 0.4'}
dependencies:
- array-buffer-byte-length: 1.0.0
- arraybuffer.prototype.slice: 1.0.2
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
available-typed-arrays: 1.0.6
call-bind: 1.0.5
es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.2
- get-symbol-description: 1.0.0
+ get-intrinsic: 1.2.3
+ get-symbol-description: 1.0.1
globalthis: 1.0.3
gopd: 1.0.1
has-property-descriptors: 1.0.1
@@ -2124,7 +2126,7 @@ packages:
has-symbols: 1.0.3
hasown: 2.0.0
internal-slot: 1.0.6
- is-array-buffer: 3.0.2
+ is-array-buffer: 3.0.4
is-callable: 1.2.7
is-negative-zero: 2.0.2
is-regex: 1.1.4
@@ -2149,6 +2151,11 @@ packages:
which-typed-array: 1.1.14
dev: true
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/es-module-lexer@0.10.5:
resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==}
dev: true
@@ -2157,7 +2164,7 @@ packages:
resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
has-tostringtag: 1.0.2
hasown: 2.0.0
dev: true
@@ -2202,8 +2209,8 @@ packages:
'@esbuild/win32-x64': 0.19.12
dev: true
- /escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ /escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
dev: true
@@ -2273,8 +2280,8 @@ packages:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
- /fastq@1.17.0:
- resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==}
+ /fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
dependencies:
reusify: 1.0.4
dev: true
@@ -2371,9 +2378,11 @@ packages:
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
- /get-intrinsic@1.2.2:
- resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
+ /get-intrinsic@1.2.3:
+ resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==}
+ engines: {node: '>= 0.4'}
dependencies:
+ es-errors: 1.3.0
function-bind: 1.1.2
has-proto: 1.0.1
has-symbols: 1.0.3
@@ -2390,12 +2399,12 @@ packages:
engines: {node: '>=10'}
dev: true
- /get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ /get-symbol-description@1.0.1:
+ resolution: {integrity: sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ es-errors: 1.3.0
dev: true
/glob-parent@5.1.2:
@@ -2443,7 +2452,7 @@ packages:
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
dev: true
/graceful-fs@4.2.11:
@@ -2467,7 +2476,7 @@ packages:
/has-property-descriptors@1.0.1:
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
dev: true
/has-proto@1.0.1:
@@ -2582,17 +2591,17 @@ packages:
resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
hasown: 2.0.0
side-channel: 1.0.4
dev: true
- /is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
+ /is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-typed-array: 1.1.13
+ get-intrinsic: 1.2.3
dev: true
/is-arrayish@0.2.1:
@@ -2750,7 +2759,7 @@ packages:
'@babel/parser': 7.23.9
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
- semver: 7.5.4
+ semver: 7.6.0
transitivePeerDependencies:
- supports-color
dev: true
@@ -3128,7 +3137,7 @@ packages:
jest-util: 29.7.0
natural-compare: 1.4.0
pretty-format: 29.7.0
- semver: 7.5.4
+ semver: 7.6.0
transitivePeerDependencies:
- supports-color
dev: true
@@ -3356,7 +3365,7 @@ packages:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
dependencies:
- semver: 7.5.4
+ semver: 7.6.0
dev: true
/makeerror@1.0.12:
@@ -3715,8 +3724,8 @@ packages:
fsevents: 2.3.2
dev: true
- /postcss@8.4.33:
- resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
+ /postcss@8.4.34:
+ resolution: {integrity: sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
@@ -3727,8 +3736,8 @@ packages:
/preact@10.19.3:
resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==}
- /prettier@3.2.4:
- resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
+ /prettier@3.2.5:
+ resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
engines: {node: '>=14'}
hasBin: true
dev: true
@@ -3929,7 +3938,7 @@ packages:
engines: {node: '>=0.4'}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
has-symbols: 1.0.3
isarray: 2.0.5
dev: true
@@ -3939,7 +3948,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
is-regex: 1.1.4
dev: true
@@ -3953,8 +3962,8 @@ packages:
hasBin: true
dev: true
- /semver@7.5.4:
- resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+ /semver@7.6.0:
+ resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
engines: {node: '>=10'}
hasBin: true
dependencies:
@@ -3967,7 +3976,7 @@ packages:
dependencies:
define-data-property: 1.1.1
function-bind: 1.1.2
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
gopd: 1.0.1
has-property-descriptors: 1.0.1
dev: true
@@ -4013,7 +4022,7 @@ packages:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
object-inspect: 1.13.1
dev: true
@@ -4309,7 +4318,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.3
is-typed-array: 1.1.13
dev: true
@@ -4377,7 +4386,7 @@ packages:
browserslist: '>= 4.21.0'
dependencies:
browserslist: 4.22.3
- escalade: 3.1.1
+ escalade: 3.1.2
picocolors: 1.0.0
dev: true
@@ -4439,7 +4448,7 @@ packages:
dependencies:
'@types/node': 20.11.16
esbuild: 0.19.12
- postcss: 8.4.33
+ postcss: 8.4.34
rollup: 4.9.6
optionalDependencies:
fsevents: 2.3.3
@@ -4549,7 +4558,7 @@ packages:
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
- escalade: 3.1.1
+ escalade: 3.1.2
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
@@ -4562,7 +4571,7 @@ packages:
engines: {node: '>=10'}
dev: true
- /zustand@4.5.0(@types/react@18.2.51)(react@18.2.0):
+ /zustand@4.5.0(@types/react@18.2.54)(react@18.2.0):
resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==}
engines: {node: '>=12.7.0'}
peerDependencies:
@@ -4577,7 +4586,7 @@ packages:
react:
optional: true
dependencies:
- '@types/react': 18.2.51
+ '@types/react': 18.2.54
react: 18.2.0
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
diff --git a/seccomp_profile.json b/seccomp_profile.json
new file mode 100644
index 00000000..bfeea36c
--- /dev/null
+++ b/seccomp_profile.json
@@ -0,0 +1,12 @@
+{
+ "comment": "Allow create user namespaces",
+ "names": [
+ "clone",
+ "setns",
+ "unshare"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "includes": {},
+ "excludes": {}
+}
diff --git a/test.sh b/test.sh
new file mode 100755
index 00000000..bf907533
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+# import env vars from the .env in this project root
+while IFS= read -r line; do
+ if [[ "$line" =~ ^\s*#.*$ || -z "$line" ]]; then
+ continue
+ fi
+ key=$(echo "$line" | cut -d '=' -f 1)
+ value=$(echo "$line" | cut -d '=' -f 2-)
+ # skip comments
+ value=$(echo "$value" | sed -e "s/^'//" -e "s/'$//" -e 's/^"//' -e 's/"$//' -e 's/^[ \t]*//;s/[ \t]*$//')
+ export "$key=$value"
+done <".env"
+
+IMAGE_NAME="chromeshack-e2e"
+
+if [ -z "${E2E_SHACKLI+x}" ]; then
+ echo
+ echo "ERROR: a cookie fixture in the env variable \"E2E_SHACKLI\" is required for the E2E suite!"
+ echo "Install a valid \".env\" in the project root and generate one with: pnpm testlogin"
+ echo "For more information, see CONTRIBUTING.md..."
+ echo
+ exit 1
+fi
+
+build() {
+ docker build -f ./Dockerfile.e2etest -t "$IMAGE_NAME" --build-arg SCOOKIE="$E2E_SHACKLI"
+}
+
+run() {
+ mkdir -p "results/" && rm -rf "results/*"
+ docker run --rm --replace -it \
+ --ipc=host --security-opt seccomp=seccomp_profile.json \
+ -v "./results:/code/results" \
+ --name "$IMAGE_NAME" "$IMAGE_NAME" \
+ "${@}"
+}
+
+help() {
+ echo
+ echo "Usage: $0 [--build | -b] [--run | -r] [--shell | -s] [--test] [--help | -h]"
+ echo
+ echo " --build, -b rebuild the image"
+ echo " --run, -r run the tests"
+ echo " --shell, -s open a shell inside the image"
+ echo " --test rerun the tests"
+ echo " --help, -h this message"
+ echo
+ exit 1
+}
+
+CMD=${@:-""}
+case "$CMD" in
+ "--help" | "-h")
+ help
+ ;;
+ "--build" | "-b")
+ build
+ ;;
+ "--run" | "-r")
+ run pnpm test
+ ;;
+ "--shell" | "-s")
+ run /bin/bash
+ ;;
+ "--test")
+ build
+ run pnpm test
+ ;;
+ *)
+ echo "Error: Invalid argument"
+ help
+ ;;
+esac
+
+exit 0
diff --git a/tests/fixtures/index.ts b/tests/fixtures/index.ts
index 14f48012..ed617932 100644
--- a/tests/fixtures/index.ts
+++ b/tests/fixtures/index.ts
@@ -5,9 +5,6 @@ import path from "path";
import { test as base, chromium, type BrowserContext, type Page } from "@playwright/test";
-// @ts-ignore
-import cookieFixture from "./_shack_li_.json" assert { type: "json" };
-
export const loadExtensionDefaults = async (page: Page, opts?: any, data?: any) => {
const _data = { enabled_suboptions: ["testing_mode"], ...data };
const _opts = { defaults: true, ...opts };
@@ -20,17 +17,20 @@ export const loadExtensionDefaults = async (page: Page, opts?: any, data?: any)
);
};
export const setTestCookie = async (context: BrowserContext) => {
- if (cookieFixture == null) return;
- const shackli: any = Object.values(cookieFixture);
-
- await context.addCookies([
- {
- name: "_shack_li_",
- value: shackli[2]?._shack_li_ as string,
- domain: ".shacknews.com",
- path: "/",
- },
- ]);
+ // only load secure cookie from a trusted source
+ try {
+ const shackli = JSON.parse(process.env.E2E_SHACKLI) as any;
+ await context.addCookies([
+ {
+ name: "_shack_li_",
+ value: shackli[2]?._shack_li_ as string,
+ domain: ".shacknews.com",
+ path: "/",
+ },
+ ]);
+ } catch (e) {
+ console.error("Failed to parse the secure cookie from E2E_SHACKLI: ", e);
+ }
return context;
};
export const navigate = async (page: Page, url: string, opts?: { o?: any; d?: any }, context?: BrowserContext) => {
@@ -54,7 +54,7 @@ export const test = base.extend<{
const pathToExtension = fs.existsSync(prodPath) ? prodPath : devPath;
const context = await chromium.launchPersistentContext("", {
headless: false,
- args: [`--disable-extensions-except=${pathToExtension}`, `--load-extension=${pathToExtension}`],
+ args: [`--disable-extensions-except=${pathToExtension}`, `--load-extension=${pathToExtension}`, "--headless=new"],
});
await use(context);
await context.close();
diff --git a/utils/testlogin.js b/utils/testlogin.js
index 11cbc50c..bdb7a61a 100644
--- a/utils/testlogin.js
+++ b/utils/testlogin.js
@@ -6,7 +6,7 @@ import process from "process";
dotenv.config();
const _login = process.env.TESTUSR;
const _pass = process.env.TESTPW;
-const outputPath = path.resolve("./tests/fixtures/_shack_li_.json");
+const outputPath = path.resolve("./.env");
const body = `get_fields%5B%5D=result&user-identifier=${_login}&supplied-pass=${_pass}&remember-login=0`;
const serializeCookie = (vals) => {
@@ -31,8 +31,9 @@ fetch("https://www.shacknews.com/account/signin", {
const setCookies = res.headers.getSetCookie();
const outCookies = serializeCookie(setCookies);
if (outCookies) {
- fs.writeFileSync(outputPath, JSON.stringify(outCookies));
- console.log("cookie written:", outputPath);
+ // overwrite the contents of the file "./.env" under the key "E2E_SHACKLI" with cookie data
+ fs.writeFileSync(outputPath, `E2E_SHACKLI=${JSON.stringify(outCookies)}`);
+ console.log("cookie written in .env format to:", outputPath);
} else throw Error("No cookie data received from server!");
})
.catch((e) => {
From f1a1ce3a0f82e7422fdc798e5bdd3402f7478a8d Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 5 Feb 2024 23:25:24 -0700
Subject: [PATCH 02/18] Some test suite workflow improvements
---
.github/workflows/tests.yaml | 17 +++++++++--------
Dockerfile.e2etest | 7 ++++---
playwright.config.ts | 24 +-----------------------
test.sh | 2 +-
4 files changed, 15 insertions(+), 35 deletions(-)
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 0d5bb68d..b1799150 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -1,23 +1,24 @@
name: Playwright Tests
on:
push:
- branches: [master, testing]
- pull_request:
- branches: [master, testing]
+ branches: ["master", "testing"]
jobs:
playwright:
name: "Playwright Tests"
runs-on: ubuntu-latest
container:
- image: mcr.microsoft.com/playwright:v1.41.1-jammy
+ # make sure to match this version to what's in package.json
+ image: mcr.microsoft.com/playwright:v1.40.1-jammy
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v2
+ with:
+ version: 8.15.1
+ - uses: actions/setup-node@v4
with:
node-version: 21
- - name: Install PNPM
- run: corepack enable
+ cache: 'pnpm'
- name: Install project dependencies
run: pnpm install
- name: Install test dependencies
diff --git a/Dockerfile.e2etest b/Dockerfile.e2etest
index 7563dcf0..b1d62b74 100644
--- a/Dockerfile.e2etest
+++ b/Dockerfile.e2etest
@@ -1,5 +1,5 @@
# Pull the base image
-FROM mcr.microsoft.com/playwright:v1.41.1-jammy
+FROM mcr.microsoft.com/playwright:v1.40.1-jammy
ARG SCOOKIE
ARG CI
@@ -12,8 +12,9 @@ RUN corepack enable
WORKDIR /code/
COPY . /code/
+
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
-RUN pnpm test:deps && \
- pnpm build
+RUN pnpm test:deps
+RUN pnpm build
CMD ["/bin/bash"]
diff --git a/playwright.config.ts b/playwright.config.ts
index 744a4a64..e9802da4 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -1,23 +1,12 @@
import { defineConfig, devices } from "@playwright/test";
-/**
- * Read environment variables from file.
- * https://github.com/motdotla/dotenv
- */
-// require('dotenv').config();
-
-/**
- * See https://playwright.dev/docs/test-configuration.
- */
export default defineConfig({
testDir: "./tests/e2e",
- /* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 0 : 1,
- /* Opt out of parallel tests on CI */
- workers: process.env.CI ? 1 : 3,
+ workers: 4,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: [
["list", { printSteps: true, outputFolder: "results/reports" }],
@@ -25,28 +14,17 @@ export default defineConfig({
],
outputDir: "results/tests",
- /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
- /* Base URL to use in actions like `await page.goto('/')`. */
- // baseURL: 'http://127.0.0.1:3000',
screenshot: "only-on-failure",
trace: "retain-on-failure",
video: "retain-on-failure",
headless: true,
},
- /* Configure projects for major browsers */
projects: [
{
name: "chromium",
use: { ...devices["Desktop Chrome"] },
},
],
-
- /* Run your local dev server before starting the tests */
- // webServer: {
- // command: 'npm run start',
- // url: 'http://127.0.0.1:3000',
- // reuseExistingServer: !process.env.CI,
- // },
});
diff --git a/test.sh b/test.sh
index bf907533..1afa05f0 100755
--- a/test.sh
+++ b/test.sh
@@ -63,7 +63,7 @@ case "$CMD" in
"--shell" | "-s")
run /bin/bash
;;
- "--test")
+ "--test" | "")
build
run pnpm test
;;
From 50966ee43ec2ad5cc95d35d6d9818a4fb75f77bf Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 5 Feb 2024 23:31:04 -0700
Subject: [PATCH 03/18] Restrict e2e workflow to master branch
---
.github/workflows/tests.yaml | 3 ++-
playwright.config.ts | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index b1799150..32a745c6 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -1,7 +1,8 @@
name: Playwright Tests
on:
push:
- branches: ["master", "testing"]
+ branches:
+ - master
jobs:
playwright:
diff --git a/playwright.config.ts b/playwright.config.ts
index e9802da4..e9404a9c 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -6,7 +6,7 @@ export default defineConfig({
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 0 : 1,
- workers: 4,
+ workers: process.env.CI ? 2 : 4,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: [
["list", { printSteps: true, outputFolder: "results/reports" }],
From 12bdaca2a414e347aee76d82552d14b8c42d59ef Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Wed, 7 Feb 2024 21:15:30 -0700
Subject: [PATCH 04/18] Disable tests action workflow for now
---
.github/workflows/tests.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 32a745c6..9469b7b2 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -7,6 +7,7 @@ on:
jobs:
playwright:
name: "Playwright Tests"
+ if: false # disable for now
runs-on: ubuntu-latest
container:
# make sure to match this version to what's in package.json
From ff1c9cbbc4f35a912e83fada119c66dedc41ffb8 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Wed, 7 Feb 2024 21:19:36 -0700
Subject: [PATCH 05/18] Fixed a case where NCH would never be stale
---
src/optional/new_comment_highlighter.ts | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/optional/new_comment_highlighter.ts b/src/optional/new_comment_highlighter.ts
index c030c739..9b0dc1e0 100644
--- a/src/optional/new_comment_highlighter.ts
+++ b/src/optional/new_comment_highlighter.ts
@@ -18,7 +18,6 @@ export const NewCommentHighlighter = {
async highlight(args?: PostEventArgs) {
const { root } = args || {};
const isEnabled = await enabledContains(["new_comment_highlighter"]);
- const isChatty = !!document.getElementById("newcommentbutton");
if (!isEnabled) return;
const recents = NewCommentHighlighter.getRecentsCache();
@@ -94,9 +93,16 @@ export const NewCommentHighlighter = {
await setSetting("last_highlight_time", now);
return false;
}
- const lastHighlightTime = await getSetting("last_highlight_time", now);
+
+ let lastHighlightTime = await getSetting("last_highlight_time", now);
+ if (lastHighlightTime === -1) {
+ await setSetting("last_highlight_time", now);
+ console.log(`checkStaleTime corrected invalid lastHighlightTime: ${lastHighlightTime}`);
+ lastHighlightTime = now;
+ }
+
const overThresh = delayInMs ? timeOverThresh(lastHighlightTime, delayInMs) : false;
- if (!overThresh || lastHighlightTime === -1) {
+ if (!overThresh) {
console.log(`checkStaleTime fresh: ${lastHighlightTime + delayInMs} > ${now}`);
return false;
}
From ee6cf60d15fd837e1448da563a1cbb4b8a7b547c Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Thu, 8 Feb 2024 07:35:44 -0700
Subject: [PATCH 06/18] Better test coverage for NCH stale id with stale time
---
tests/e2e/DOM.spec.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/e2e/DOM.spec.ts b/tests/e2e/DOM.spec.ts
index 68d024fe..454adffd 100644
--- a/tests/e2e/DOM.spec.ts
+++ b/tests/e2e/DOM.spec.ts
@@ -179,18 +179,18 @@ test.describe("NewCommentHighlighter - time validated highlighting", () => {
// NCH minimum highlight stale time threshold is <=4 hours
const staleThresh = 1000 * 60 * 60 * 4 + 60000;
const staleTime = Date.now() + staleThresh;
-
+ // this would normally highlight the whole thread
await navigate(
page,
url,
{
o: { append: true },
- d: { new_comment_highlighter_last_id: { "42269502": 42270595 }, last_highlight_time: staleTime },
+ d: { new_comment_highlighter_last_id: { "42269502": 42269502 }, last_highlight_time: staleTime },
},
context
);
const highlights = page.locator(".newcommenthighlighter");
- // should never highlight here unless we're refreshing via the root-refresh button
+ // shouldn't highlight here due to stale time unless we're refreshing via the root-refresh button
await expect(highlights).toHaveCount(0);
});
test("stale id with unset time case", async ({ page, context }) => {
From 707fd315ef661f678f70ffcf89bb03290ccc5ac1 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Thu, 8 Feb 2024 07:41:07 -0700
Subject: [PATCH 07/18] Updated release notes
---
package.json | 10 +-
pnpm-lock.yaml | 217 ++++++++++++++++++++------------------
public/release_notes.html | 4 +
src/manifestv3.ffx.json | 2 +-
4 files changed, 122 insertions(+), 111 deletions(-)
diff --git a/package.json b/package.json
index e80c9954..ab2d0aad 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "chromeshack",
- "version": "1.75.0",
+ "version": "1.76.0",
"description": "Collection of scripts for Shacknews.",
"repository": "https://github.com/latestchatty/chromeshack",
"type": "module",
@@ -39,7 +39,7 @@
"jquery": "^3.7.1",
"lodash.isequal": "^4.5.0",
"lz-string": "^1.5.0",
- "preact": "^10.19.3",
+ "preact": "^10.19.4",
"prop-types": "15.8.1",
"text-field-edit": "^4.0.0",
"ts-debounce": "^4.0.0",
@@ -56,8 +56,8 @@
"@types/jquery": "^3.5.29",
"@types/lodash.isequal": "^4.5.8",
"@types/node": "^20.11.16",
- "@types/react": "^18.2.54",
- "@types/react-dom": "^18.2.18",
+ "@types/react": "^18.2.55",
+ "@types/react-dom": "^18.2.19",
"adm-zip": "^0.5.10",
"dotenv": "^16.4.1",
"embla-carousel": "8.0.0-rc19",
@@ -67,6 +67,6 @@
"npm-run-all": "^4.1.5",
"prettier": "^3.2.5",
"typescript": "^5.3.3",
- "vite": "^5.0.12"
+ "vite": "^5.1.0"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f4359985..662d52d8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -36,8 +36,8 @@ dependencies:
specifier: ^1.5.0
version: 1.5.0
preact:
- specifier: ^10.19.3
- version: 10.19.3
+ specifier: ^10.19.4
+ version: 10.19.4
prop-types:
specifier: 15.8.1
version: 15.8.1
@@ -52,7 +52,7 @@ dependencies:
version: 1.0.14
zustand:
specifier: ^4.5.0
- version: 4.5.0(@types/react@18.2.54)(react@18.2.0)
+ version: 4.5.0(@types/react@18.2.55)(react@18.2.0)
devDependencies:
'@biomejs/biome':
@@ -66,7 +66,7 @@ devDependencies:
version: 1.40.1
'@preact/preset-vite':
specifier: ^2.8.1
- version: 2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.0.12)
+ version: 2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.0)
'@types/chrome':
specifier: ^0.0.246
version: 0.0.246
@@ -83,11 +83,11 @@ devDependencies:
specifier: ^20.11.16
version: 20.11.16
'@types/react':
- specifier: ^18.2.54
- version: 18.2.54
+ specifier: ^18.2.55
+ version: 18.2.55
'@types/react-dom':
- specifier: ^18.2.18
- version: 18.2.18
+ specifier: ^18.2.19
+ version: 18.2.19
adm-zip:
specifier: ^0.5.10
version: 0.5.10
@@ -116,8 +116,8 @@ devDependencies:
specifier: ^5.3.3
version: 5.3.3
vite:
- specifier: ^5.0.12
- version: 5.0.12(@types/node@20.11.16)
+ specifier: ^5.1.0
+ version: 5.1.0(@types/node@20.11.16)
packages:
@@ -1157,7 +1157,7 @@ packages:
playwright: 1.40.1
dev: true
- /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.0.12):
+ /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.0):
resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==}
peerDependencies:
'@babel/core': 7.x
@@ -1166,7 +1166,7 @@ packages:
'@babel/core': 7.23.9
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9)
'@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9)
- '@prefresh/vite': 2.4.5(preact@10.19.3)(vite@5.0.12)
+ '@prefresh/vite': 2.4.5(preact@10.19.4)(vite@5.1.0)
'@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.23.9)
debug: 4.3.4
@@ -1174,7 +1174,7 @@ packages:
magic-string: 0.30.5
node-html-parser: 6.1.12
resolve: 1.22.8
- vite: 5.0.12(@types/node@20.11.16)
+ vite: 5.1.0(@types/node@20.11.16)
transitivePeerDependencies:
- preact
- supports-color
@@ -1184,19 +1184,19 @@ packages:
resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==}
dev: true
- /@prefresh/core@1.5.2(preact@10.19.3):
+ /@prefresh/core@1.5.2(preact@10.19.4):
resolution: {integrity: sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==}
peerDependencies:
preact: ^10.0.0
dependencies:
- preact: 10.19.3
+ preact: 10.19.4
dev: true
/@prefresh/utils@1.2.0:
resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==}
dev: true
- /@prefresh/vite@2.4.5(preact@10.19.3)(vite@5.0.12):
+ /@prefresh/vite@2.4.5(preact@10.19.4)(vite@5.1.0):
resolution: {integrity: sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==}
peerDependencies:
preact: ^10.4.0
@@ -1204,11 +1204,11 @@ packages:
dependencies:
'@babel/core': 7.23.9
'@prefresh/babel-plugin': 0.5.1
- '@prefresh/core': 1.5.2(preact@10.19.3)
+ '@prefresh/core': 1.5.2(preact@10.19.4)
'@prefresh/utils': 1.2.0
'@rollup/pluginutils': 4.2.1
- preact: 10.19.3
- vite: 5.0.12(@types/node@20.11.16)
+ preact: 10.19.4
+ vite: 5.1.0(@types/node@20.11.16)
transitivePeerDependencies:
- supports-color
dev: true
@@ -1448,14 +1448,14 @@ packages:
/@types/prop-types@15.7.11:
resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
- /@types/react-dom@18.2.18:
- resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==}
+ /@types/react-dom@18.2.19:
+ resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
dependencies:
- '@types/react': 18.2.54
+ '@types/react': 18.2.55
dev: true
- /@types/react@18.2.54:
- resolution: {integrity: sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==}
+ /@types/react@18.2.55:
+ resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==}
dependencies:
'@types/prop-types': 15.7.11
'@types/scheduler': 0.16.8
@@ -1563,7 +1563,7 @@ packages:
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
is-array-buffer: 3.0.4
dev: true
@@ -1577,11 +1577,11 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
array-buffer-byte-length: 1.0.1
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
es-errors: 1.3.0
- get-intrinsic: 1.2.3
+ get-intrinsic: 1.2.4
is-array-buffer: 3.0.4
is-shared-array-buffer: 1.0.2
dev: true
@@ -1708,8 +1708,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001584
- electron-to-chromium: 1.4.657
+ caniuse-lite: 1.0.30001585
+ electron-to-chromium: 1.4.661
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.3)
dev: true
@@ -1724,12 +1724,14 @@ packages:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: true
- /call-bind@1.0.5:
- resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
+ /call-bind@1.0.6:
+ resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==}
+ engines: {node: '>= 0.4'}
dependencies:
+ es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.3
- set-function-length: 1.2.0
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.1
dev: true
/callsites@3.1.0:
@@ -1747,8 +1749,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /caniuse-lite@1.0.30001584:
- resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==}
+ /caniuse-lite@1.0.30001585:
+ resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==}
dev: true
/chalk@2.4.2:
@@ -1987,11 +1989,12 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /define-data-property@1.1.1:
- resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
+ /define-data-property@1.1.2:
+ resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
gopd: 1.0.1
has-property-descriptors: 1.0.1
dev: true
@@ -2000,7 +2003,7 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.1
+ define-data-property: 1.1.2
has-property-descriptors: 1.0.1
object-keys: 1.1.1
dev: true
@@ -2058,8 +2061,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.657:
- resolution: {integrity: sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==}
+ /electron-to-chromium@1.4.661:
+ resolution: {integrity: sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==}
dev: true
/embla-carousel-react@8.0.0-rc19(react@18.2.0):
@@ -2113,19 +2116,19 @@ packages:
array-buffer-byte-length: 1.0.1
arraybuffer.prototype.slice: 1.0.3
available-typed-arrays: 1.0.6
- call-bind: 1.0.5
+ call-bind: 1.0.6
es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.3
- get-symbol-description: 1.0.1
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
globalthis: 1.0.3
gopd: 1.0.1
has-property-descriptors: 1.0.1
has-proto: 1.0.1
has-symbols: 1.0.3
hasown: 2.0.0
- internal-slot: 1.0.6
+ internal-slot: 1.0.7
is-array-buffer: 3.0.4
is-callable: 1.2.7
is-negative-zero: 2.0.2
@@ -2139,11 +2142,11 @@ packages:
object.assign: 4.1.5
regexp.prototype.flags: 1.5.1
safe-array-concat: 1.1.0
- safe-regex-test: 1.0.2
+ safe-regex-test: 1.0.3
string.prototype.trim: 1.2.8
string.prototype.trimend: 1.0.7
string.prototype.trimstart: 1.0.7
- typed-array-buffer: 1.0.0
+ typed-array-buffer: 1.0.1
typed-array-byte-length: 1.0.0
typed-array-byte-offset: 1.0.0
typed-array-length: 1.0.4
@@ -2164,7 +2167,7 @@ packages:
resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.3
+ get-intrinsic: 1.2.4
has-tostringtag: 1.0.2
hasown: 2.0.0
dev: true
@@ -2358,7 +2361,7 @@ packages:
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
functions-have-names: 1.2.3
@@ -2378,8 +2381,8 @@ packages:
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
- /get-intrinsic@1.2.3:
- resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==}
+ /get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
dependencies:
es-errors: 1.3.0
@@ -2399,12 +2402,13 @@ packages:
engines: {node: '>=10'}
dev: true
- /get-symbol-description@1.0.1:
- resolution: {integrity: sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==}
+ /get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
es-errors: 1.3.0
+ get-intrinsic: 1.2.4
dev: true
/glob-parent@5.1.2:
@@ -2452,7 +2456,7 @@ packages:
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
- get-intrinsic: 1.2.3
+ get-intrinsic: 1.2.4
dev: true
/graceful-fs@4.2.11:
@@ -2476,7 +2480,7 @@ packages:
/has-property-descriptors@1.0.1:
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
dependencies:
- get-intrinsic: 1.2.3
+ get-intrinsic: 1.2.4
dev: true
/has-proto@1.0.1:
@@ -2587,21 +2591,21 @@ packages:
resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==}
dev: false
- /internal-slot@1.0.6:
- resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
+ /internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.3
+ es-errors: 1.3.0
hasown: 2.0.0
- side-channel: 1.0.4
+ side-channel: 1.0.5
dev: true
/is-array-buffer@3.0.4:
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.3
+ call-bind: 1.0.6
+ get-intrinsic: 1.2.4
dev: true
/is-arrayish@0.2.1:
@@ -2618,7 +2622,7 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
has-tostringtag: 1.0.2
dev: true
@@ -2683,14 +2687,14 @@ packages:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
has-tostringtag: 1.0.2
dev: true
/is-shared-array-buffer@1.0.2:
resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
dev: true
/is-stream@2.0.1:
@@ -2722,7 +2726,7 @@ packages:
/is-weakref@1.0.2:
resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
dev: true
/isarray@2.0.5:
@@ -3544,7 +3548,7 @@ packages:
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
@@ -3724,8 +3728,8 @@ packages:
fsevents: 2.3.2
dev: true
- /postcss@8.4.34:
- resolution: {integrity: sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==}
+ /postcss@8.4.35:
+ resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
@@ -3733,8 +3737,8 @@ packages:
source-map-js: 1.0.2
dev: true
- /preact@10.19.3:
- resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==}
+ /preact@10.19.4:
+ resolution: {integrity: sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==}
/prettier@3.2.5:
resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
@@ -3849,7 +3853,7 @@ packages:
resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
set-function-name: 2.0.1
dev: true
@@ -3937,18 +3941,18 @@ packages:
resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
engines: {node: '>=0.4'}
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.3
+ call-bind: 1.0.6
+ get-intrinsic: 1.2.4
has-symbols: 1.0.3
isarray: 2.0.5
dev: true
- /safe-regex-test@1.0.2:
- resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==}
+ /safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.3
+ call-bind: 1.0.6
+ es-errors: 1.3.0
is-regex: 1.1.4
dev: true
@@ -3970,13 +3974,14 @@ packages:
lru-cache: 6.0.0
dev: true
- /set-function-length@1.2.0:
- resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==}
+ /set-function-length@1.2.1:
+ resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.1
+ define-data-property: 1.1.2
+ es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.3
+ get-intrinsic: 1.2.4
gopd: 1.0.1
has-property-descriptors: 1.0.1
dev: true
@@ -3985,7 +3990,7 @@ packages:
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.1
+ define-data-property: 1.1.2
functions-have-names: 1.2.3
has-property-descriptors: 1.0.1
dev: true
@@ -4018,11 +4023,13 @@ packages:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
- /side-channel@1.0.4:
- resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ /side-channel@1.0.5:
+ resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==}
+ engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.3
+ call-bind: 1.0.6
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
object-inspect: 1.13.1
dev: true
@@ -4158,7 +4165,7 @@ packages:
resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4167,7 +4174,7 @@ packages:
resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4175,7 +4182,7 @@ packages:
/string.prototype.trimend@1.0.7:
resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4183,7 +4190,7 @@ packages:
/string.prototype.trimstart@1.0.7:
resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4313,12 +4320,12 @@ packages:
engines: {node: '>=10'}
dev: true
- /typed-array-buffer@1.0.0:
- resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
+ /typed-array-buffer@1.0.1:
+ resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.3
+ call-bind: 1.0.6
+ es-errors: 1.3.0
is-typed-array: 1.1.13
dev: true
@@ -4326,7 +4333,7 @@ packages:
resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.13
@@ -4337,7 +4344,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.6
- call-bind: 1.0.5
+ call-bind: 1.0.6
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.13
@@ -4346,7 +4353,7 @@ packages:
/typed-array-length@1.0.4:
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
for-each: 0.3.3
is-typed-array: 1.1.13
dev: true
@@ -4364,7 +4371,7 @@ packages:
/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
dependencies:
- call-bind: 1.0.5
+ call-bind: 1.0.6
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
@@ -4418,8 +4425,8 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
- /vite@5.0.12(@types/node@20.11.16):
- resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
+ /vite@5.1.0(@types/node@20.11.16):
+ resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -4448,7 +4455,7 @@ packages:
dependencies:
'@types/node': 20.11.16
esbuild: 0.19.12
- postcss: 8.4.34
+ postcss: 8.4.35
rollup: 4.9.6
optionalDependencies:
fsevents: 2.3.3
@@ -4475,7 +4482,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.6
- call-bind: 1.0.5
+ call-bind: 1.0.6
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.2
@@ -4571,7 +4578,7 @@ packages:
engines: {node: '>=10'}
dev: true
- /zustand@4.5.0(@types/react@18.2.54)(react@18.2.0):
+ /zustand@4.5.0(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==}
engines: {node: '>=12.7.0'}
peerDependencies:
@@ -4586,7 +4593,7 @@ packages:
react:
optional: true
dependencies:
- '@types/react': 18.2.54
+ '@types/react': 18.2.55
react: 18.2.0
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
diff --git a/public/release_notes.html b/public/release_notes.html
index 950063eb..8e412047 100644
--- a/public/release_notes.html
+++ b/public/release_notes.html
@@ -17,6 +17,10 @@
Chrome Shack Release Notes
+ Version 1.76
+
+ - Fixed: "Highlight New Posts" squashed another bug causing excessive highlighting due to invalid timestamp (WombatFromHell)
+
Version 1.75
- Added: "Color Gauge" re-colors progress gauge bars on root posts based on time remaining (TroZ)
diff --git a/src/manifestv3.ffx.json b/src/manifestv3.ffx.json
index 935db386..1160a67d 100644
--- a/src/manifestv3.ffx.json
+++ b/src/manifestv3.ffx.json
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Chrome Shack",
- "version": "1.75",
+ "version": "1.76",
"description": "Collection of scripts for Shacknews.",
"browser_specific_settings": {
"gecko": {
From 454b8ba7f99bbea1ed0a90a84c75d85fa99be90f Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 12 Feb 2024 15:58:40 -0700
Subject: [PATCH 08/18] Update the cross-browser local settings storage limit
---
src/core/settings.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/settings.ts b/src/core/settings.ts
index 66d54391..63ab3ba4 100644
--- a/src/core/settings.ts
+++ b/src/core/settings.ts
@@ -25,7 +25,7 @@ export const setSetting = async (key: SettingKey, val: any) => {
// Check each time we set a key that the val will fit within the storage limit
// ... if we don't do this then the settings store can become corrupted
// ... causing data loss of some kv-pairs.
- const maxSize = 5000000; // the limit is 5MiB for chrome.storage.local
+ const maxSize = 10000000; // the limit is 10MiB for chrome.storage.local
const _settings = await getSettings();
const _newVal = { [key]: val };
const _withVal = { ..._settings, ..._newVal };
From d34d88ef1db77f05973aac622efde9cb127aaee0 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 12 Feb 2024 15:59:23 -0700
Subject: [PATCH 09/18] Refactored SentenceParser for readability
---
src/core/common/sentence_parser.ts | 76 +++++++++++++++---------------
1 file changed, 37 insertions(+), 39 deletions(-)
diff --git a/src/core/common/sentence_parser.ts b/src/core/common/sentence_parser.ts
index 1cdacd72..d41a7239 100644
--- a/src/core/common/sentence_parser.ts
+++ b/src/core/common/sentence_parser.ts
@@ -1,46 +1,44 @@
import { stripHtml, superTrim } from "./dom";
+const LINK_REGEX = /(.*?)([\n|\r]*?)<\/a>/gim;
+const SPOILER_REGEX = /(|.|\r|\n)*?<\/span>/i;
+const SENTENCE_REGEX = /.+?(!|\.(?!\w|\.|\])|\?|$)+/gm;
+
+const LINK_PLACEHOLDER = "%%link%%";
+const SPOILER_PLACEHOLDER = "%%spoiler%%";
+
export const SentenceParser = {
- parseIntoLines(html: string) {
- let _html = html;
- const LINK_PLACEHOLDER = "%%link%%";
- const SPOILER_PLACEHOLDER = "%%spoiler%%";
- // Extract all the links, store them in links[] and replace the link with a %%link%% placeholder in the post
- const link_regex = new RegExp(/(.*?)([\n|\r]*?)<\/a>/gim);
- const links = html.match(link_regex);
- _html = html.replace(link_regex, LINK_PLACEHOLDER);
- // Extract all the spoilers, store them in spoilers[] and replace the spoilers with a %%spoiler%% placeholder in the post
- const spoiler_regex = new RegExp(
- /(|.|\r|\n)*?<\/span>/i
- );
- const spoilers = html.match(spoiler_regex);
- _html = html.replace(spoiler_regex, SPOILER_PLACEHOLDER);
- // remove the rest of the html from the post
- const post = stripHtml(html);
- // match a sentence as:
- // 1. anything (non-greedy)
- // 2. one or more punctuation (unless it is a . followed by a number, letter, another . or a ]), or the end of the line
- const sentence_regex = new RegExp(/.+?(!|\.(?!\w|\.|\])|\?|$)+/gm);
- const link_replace_regex = new RegExp(LINK_PLACEHOLDER, "i");
- const spoiler_replace_regex = new RegExp(SPOILER_PLACEHOLDER, "i");
- const sentences: string[] = [];
- // Get sentences from paragraphs
- const matches = post.match(sentence_regex);
- for (let i = 0; i < matches.length; i++) {
- const match = matches[i];
- let tmp = superTrim(match);
- if (tmp?.length > 0) {
- // replace placeholders with items
- // do spoilers first, because spoilers could contain links!
- while (tmp.indexOf(SPOILER_PLACEHOLDER) >= 0 && spoilers?.length > 0)
- tmp = tmp.replace(spoiler_replace_regex, spoilers.shift());
-
- while (tmp.indexOf(LINK_PLACEHOLDER) >= 0 && links?.length > 0)
- tmp = tmp.replace(link_replace_regex, links.shift());
-
- sentences.push(tmp);
+ extractElements(html: string, regex: RegExp): string[] {
+ return html.match(regex)!;
+ },
+
+ replacePlaceholders(text: string, placeholder: string, replacements: string[]): string {
+ return text.replace(new RegExp(placeholder, "gi"), () => replacements.shift() || "");
+ },
+
+ cleanHtml(html: string): string {
+ return html.replace(LINK_REGEX, LINK_PLACEHOLDER).replace(SPOILER_REGEX, SPOILER_PLACEHOLDER);
+ },
+
+ processSentences(post: string, links: string[], spoilers: string[]): string[] {
+ return post.match(SENTENCE_REGEX)!.reduce((acc: string[], sentence: string) => {
+ const trimmedSentence = superTrim(sentence);
+ if (trimmedSentence) {
+ let processedSentence = this.replacePlaceholders(trimmedSentence, SPOILER_PLACEHOLDER, spoilers);
+ processedSentence = this.replacePlaceholders(processedSentence, LINK_PLACEHOLDER, links);
+ acc.push(processedSentence);
}
- }
+ return acc;
+ }, []);
+ },
+
+ parseIntoLines(html: string): string[] {
+ const links = this.extractElements(html, LINK_REGEX);
+ const spoilers = this.extractElements(html, SPOILER_REGEX);
+ const cleanedHtml = this.cleanHtml(html);
+ const post = stripHtml(cleanedHtml);
+ const sentences = this.processSentences(post, links, spoilers);
+
return sentences;
},
};
From 8eecc6f984d23cd8be94b23ea26d712134eae293 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 12 Feb 2024 20:50:16 -0700
Subject: [PATCH 10/18] Refactored to remove jQuery dependency in EmojiPoster
---
src/builtin/emoji_poster.ts | 45 ++++++++++++++++++++++-------------
src/core/observer_handlers.ts | 6 +++--
2 files changed, 32 insertions(+), 19 deletions(-)
diff --git a/src/builtin/emoji_poster.ts b/src/builtin/emoji_poster.ts
index b6ebc7cb..450d9a49 100644
--- a/src/builtin/emoji_poster.ts
+++ b/src/builtin/emoji_poster.ts
@@ -1,9 +1,5 @@
-/*eslint no-control-regex: 0*/
-import jQuery from "jquery";
-import { parseToElement } from "../core/common/dom";
-import { processPostBoxEvent, submitFormEvent } from "../core/events";
-
-const $ = jQuery;
+import { elementIsVisible, parseToElement, scrollToElement } from "../core/common/dom";
+import { processPostBoxEvent, processReplyEvent, submitFormEvent } from "../core/events";
/*
* Encodes string Astrals (Emoji's) into prefixed HTML entities to
@@ -37,7 +33,7 @@ export const EmojiPoster = {
_clonedPostBtn?.setAttribute("cloned", "");
_postBtn?.parentNode?.replaceChild(_clonedPostBtn, _postBtn);
- const handleSubmit = (e: MouseEvent | Event) => {
+ const handleSubmitWrapper = (e: MouseEvent | Event) => {
const this_elem = e.target as HTMLElement;
const isSubmit = this_elem?.matches("#frm_submit");
const _postBox = document.getElementById("frm_body") as HTMLInputElement;
@@ -48,11 +44,11 @@ export const EmojiPoster = {
submitFormEvent.raise(e);
_postBox.value = EmojiPoster.handleEncoding(_postBox.value);
const result = EmojiPoster.handleSubmit(_postBox.value);
- if (!result) document.removeEventListener("click", handleSubmit);
+ if (!result) document.removeEventListener("click", handleSubmitWrapper);
}
};
- document.removeEventListener("click", handleSubmit);
- document.addEventListener("click", handleSubmit);
+ document.removeEventListener("click", handleSubmitWrapper);
+ document.addEventListener("click", handleSubmitWrapper);
// educate the user on how to open the OS' Emoji Picker
const _rulesParent = postbox?.querySelector("p.rules") as HTMLElement;
@@ -62,17 +58,32 @@ export const EmojiPoster = {
}
},
+ handleReplyAdded(args: PostEventArgs) {
+ const { post } = args || {};
+ if (!post) return;
+ // scroll to the new reply similar to what the Chatty normally does
+ scrollToElement(post);
+ // cleanup after ourselves
+ processReplyEvent.removeHandler(EmojiPoster.handleReplyAdded);
+ },
+
handleSubmit(postText: string) {
- const $submitBtn = $("#frm_submit");
+ const submitBtn = document.getElementById("frm_submit");
+ const postForm = document.getElementById("postform") as HTMLFormElement;
+ if (!submitBtn || !postForm) return;
+
if (EmojiPoster.countText(postText) > 5 || EmojiPoster.countAstrals(postText).astralsCount > 0) {
- // normal post (either a single astral or some text)
- $submitBtn.attr("disabled", "disabled").css("color", "#E9E9DE");
- $("#postform").submit();
- $("body").trigger("chatty-new-post-reply", [$submitBtn.closest("div.root > ul > li").first().attr("id")]);
+ // Disable the submit button and change its color
+ submitBtn.setAttribute("disabled", "true");
+ submitBtn.style.color = "#E9E9DE";
+ // catch the reply-added mutation
+ processReplyEvent.addHandler(EmojiPoster.handleReplyAdded);
+ postForm.submit();
return false;
}
- // the server doesn't know that an astral is a single character
- return alert("Please post something at least 5 characters long.");
+
+ alert("Please post something at least 5 characters long.");
+ return true;
},
handleEncoding(text: string) {
diff --git a/src/core/observer_handlers.ts b/src/core/observer_handlers.ts
index 6378c40c..0083c26b 100644
--- a/src/core/observer_handlers.ts
+++ b/src/core/observer_handlers.ts
@@ -106,14 +106,16 @@ export const handleRootAdded = async (mutation: RefreshMutation) => {
const { postid, rootid, parentid } = mutation || {};
const root = document.querySelector(`li#item_${rootid}`);
const post = document.querySelector(`li#item_${postid || parentid}`);
- const reply = parentid && post?.querySelector("li.sel.last");
+ const reply = parentid && post?.querySelector("li.sel");
const raisedArgs = {
post: reply || post,
postid: parentid || postid,
root,
rootid,
} as PostEventArgs;
- if (reply && root && !(await getEnabled("hide_tagging_buttons"))) processReplyEvent.raise(raisedArgs, mutation);
+
+ if (reply && root) return processReplyEvent.raise(raisedArgs, mutation);
+
if (post && root)
await handleTagsEvent(raisedArgs)
.then((neArgs) => handlePostRefresh(neArgs, mutation))
From cb591ec1157bf92e9c73ba47ce885563e15baf42 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Mon, 12 Feb 2024 20:59:31 -0700
Subject: [PATCH 11/18] Refactored DOM helpers to remove jQuery dependency
---
README.md | 1 -
package.json | 7 +-
pnpm-lock.yaml | 234 ++++---
public/ThirdPartyLicenses.txt | 1127 +++++++++++++++++++--------------
src/core/common/dom.ts | 54 +-
5 files changed, 793 insertions(+), 630 deletions(-)
diff --git a/README.md b/README.md
index d19ffec5..557529d6 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,6 @@ NOTE: See the `ThirdPartyLicenses.txt` in the `public/` folder that is generated
- [Preact](https://github.com/preactjs/preact)
- [Embla](https://github.com/davidcetinkaya/embla-carousel)
-- [jQuery](https://github.com/jquery/jquery)
- [DOMPurify](https://github.com/cure53/DOMPurify)
- [ts-debounce](https://github.com/chodorowicz/ts-debounce)
- [react-fontawesome](https://github.com/FortAwesome/react-fontawesome)
diff --git a/package.json b/package.json
index ab2d0aad..cb61ef3a 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,6 @@
"dompurify": "^3.0.8",
"embla-carousel-react": "8.0.0-rc19",
"html-react-parser": "^4.2.10",
- "jquery": "^3.7.1",
"lodash.isequal": "^4.5.0",
"lz-string": "^1.5.0",
"preact": "^10.19.4",
@@ -55,11 +54,11 @@
"@types/dompurify": "^3.0.5",
"@types/jquery": "^3.5.29",
"@types/lodash.isequal": "^4.5.8",
- "@types/node": "^20.11.16",
+ "@types/node": "^20.11.17",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"adm-zip": "^0.5.10",
- "dotenv": "^16.4.1",
+ "dotenv": "^16.4.3",
"embla-carousel": "8.0.0-rc19",
"glob": "^10.3.10",
"jest": "^29.7.0",
@@ -67,6 +66,6 @@
"npm-run-all": "^4.1.5",
"prettier": "^3.2.5",
"typescript": "^5.3.3",
- "vite": "^5.1.0"
+ "vite": "^5.1.1"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 662d52d8..cb1fd112 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,9 +26,6 @@ dependencies:
html-react-parser:
specifier: ^4.2.10
version: 4.2.10(react@18.2.0)
- jquery:
- specifier: ^3.7.1
- version: 3.7.1
lodash.isequal:
specifier: ^4.5.0
version: 4.5.0
@@ -66,7 +63,7 @@ devDependencies:
version: 1.40.1
'@preact/preset-vite':
specifier: ^2.8.1
- version: 2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.0)
+ version: 2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.1)
'@types/chrome':
specifier: ^0.0.246
version: 0.0.246
@@ -80,8 +77,8 @@ devDependencies:
specifier: ^4.5.8
version: 4.5.8
'@types/node':
- specifier: ^20.11.16
- version: 20.11.16
+ specifier: ^20.11.17
+ version: 20.11.17
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -92,8 +89,8 @@ devDependencies:
specifier: ^0.5.10
version: 0.5.10
dotenv:
- specifier: ^16.4.1
- version: 16.4.1
+ specifier: ^16.4.3
+ version: 16.4.3
embla-carousel:
specifier: 8.0.0-rc19
version: 8.0.0-rc19
@@ -102,7 +99,7 @@ devDependencies:
version: 10.3.10
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@20.11.16)
+ version: 29.7.0(@types/node@20.11.17)
license-checker:
specifier: ^25.0.1
version: 25.0.1
@@ -116,8 +113,8 @@ devDependencies:
specifier: ^5.3.3
version: 5.3.3
vite:
- specifier: ^5.1.0
- version: 5.1.0(@types/node@20.11.16)
+ specifier: ^5.1.1
+ version: 5.1.1(@types/node@20.11.17)
packages:
@@ -882,7 +879,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -903,14 +900,14 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.11.16)
+ jest-config: 29.7.0(@types/node@20.11.17)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -938,7 +935,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
jest-mock: 29.7.0
dev: true
@@ -965,7 +962,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -998,7 +995,7 @@ packages:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.22
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -1086,7 +1083,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
'@types/yargs': 17.0.32
chalk: 4.1.2
dev: true
@@ -1157,7 +1154,7 @@ packages:
playwright: 1.40.1
dev: true
- /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.0):
+ /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.4)(vite@5.1.1):
resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==}
peerDependencies:
'@babel/core': 7.x
@@ -1166,7 +1163,7 @@ packages:
'@babel/core': 7.23.9
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9)
'@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9)
- '@prefresh/vite': 2.4.5(preact@10.19.4)(vite@5.1.0)
+ '@prefresh/vite': 2.4.5(preact@10.19.4)(vite@5.1.1)
'@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.23.9)
debug: 4.3.4
@@ -1174,7 +1171,7 @@ packages:
magic-string: 0.30.5
node-html-parser: 6.1.12
resolve: 1.22.8
- vite: 5.1.0(@types/node@20.11.16)
+ vite: 5.1.1(@types/node@20.11.17)
transitivePeerDependencies:
- preact
- supports-color
@@ -1196,7 +1193,7 @@ packages:
resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==}
dev: true
- /@prefresh/vite@2.4.5(preact@10.19.4)(vite@5.1.0):
+ /@prefresh/vite@2.4.5(preact@10.19.4)(vite@5.1.1):
resolution: {integrity: sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==}
peerDependencies:
preact: ^10.4.0
@@ -1208,7 +1205,7 @@ packages:
'@prefresh/utils': 1.2.0
'@rollup/pluginutils': 4.2.1
preact: 10.19.4
- vite: 5.1.0(@types/node@20.11.16)
+ vite: 5.1.1(@types/node@20.11.17)
transitivePeerDependencies:
- supports-color
dev: true
@@ -1221,104 +1218,104 @@ packages:
picomatch: 2.3.1
dev: true
- /@rollup/rollup-android-arm-eabi@4.9.6:
- resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==}
+ /@rollup/rollup-android-arm-eabi@4.10.0:
+ resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-android-arm64@4.9.6:
- resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==}
+ /@rollup/rollup-android-arm64@4.10.0:
+ resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-arm64@4.9.6:
- resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==}
+ /@rollup/rollup-darwin-arm64@4.10.0:
+ resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-x64@4.9.6:
- resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==}
+ /@rollup/rollup-darwin-x64@4.10.0:
+ resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.9.6:
- resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.10.0:
+ resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.9.6:
- resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==}
+ /@rollup/rollup-linux-arm64-gnu@4.10.0:
+ resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.9.6:
- resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==}
+ /@rollup/rollup-linux-arm64-musl@4.10.0:
+ resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.9.6:
- resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.10.0:
+ resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.9.6:
- resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==}
+ /@rollup/rollup-linux-x64-gnu@4.10.0:
+ resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.9.6:
- resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==}
+ /@rollup/rollup-linux-x64-musl@4.10.0:
+ resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.9.6:
- resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==}
+ /@rollup/rollup-win32-arm64-msvc@4.10.0:
+ resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.9.6:
- resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==}
+ /@rollup/rollup-win32-ia32-msvc@4.10.0:
+ resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.9.6:
- resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==}
+ /@rollup/rollup-win32-x64-msvc@4.10.0:
+ resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==}
cpu: [x64]
os: [win32]
requiresBuild: true
@@ -1400,7 +1397,7 @@ packages:
/@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies:
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
dev: true
/@types/har-format@1.2.15:
@@ -1439,8 +1436,8 @@ packages:
resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
dev: true
- /@types/node@20.11.16:
- resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==}
+ /@types/node@20.11.17:
+ resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==}
dependencies:
undici-types: 5.26.5
dev: true
@@ -1708,8 +1705,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001585
- electron-to-chromium: 1.4.661
+ caniuse-lite: 1.0.30001587
+ electron-to-chromium: 1.4.667
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.3)
dev: true
@@ -1749,8 +1746,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /caniuse-lite@1.0.30001585:
- resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==}
+ /caniuse-lite@1.0.30001587:
+ resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==}
dev: true
/chalk@2.4.2:
@@ -1875,7 +1872,7 @@ packages:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
dev: true
- /create-jest@29.7.0(@types/node@20.11.16):
+ /create-jest@29.7.0(@types/node@20.11.17):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -1884,7 +1881,7 @@ packages:
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@20.11.16)
+ jest-config: 29.7.0(@types/node@20.11.17)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -1989,8 +1986,8 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /define-data-property@1.1.2:
- resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==}
+ /define-data-property@1.1.3:
+ resolution: {integrity: sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==}
engines: {node: '>= 0.4'}
dependencies:
es-errors: 1.3.0
@@ -2003,7 +2000,7 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.2
+ define-data-property: 1.1.3
has-property-descriptors: 1.0.1
object-keys: 1.1.1
dev: true
@@ -2052,8 +2049,8 @@ packages:
domelementtype: 2.3.0
domhandler: 5.0.3
- /dotenv@16.4.1:
- resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==}
+ /dotenv@16.4.3:
+ resolution: {integrity: sha512-II98GFrje5psQTSve0E7bnwMFybNLqT8Vu8JIFWRjsE3khyNUm/loZupuy5DVzG2IXf/ysxvrixYOQnM6mjD3A==}
engines: {node: '>=12'}
dev: true
@@ -2061,8 +2058,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.661:
- resolution: {integrity: sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==}
+ /electron-to-chromium@1.4.667:
+ resolution: {integrity: sha512-66L3pLlWhTNVUhnmSA5+qDM3fwnXsM6KAqE36e2w4KN0g6pkEtlT5bs41FQtQwVwKnfhNBXiWRLPs30HSxd7Kw==}
dev: true
/embla-carousel-react@8.0.0-rc19(react@18.2.0):
@@ -2127,7 +2124,7 @@ packages:
has-property-descriptors: 1.0.1
has-proto: 1.0.1
has-symbols: 1.0.3
- hasown: 2.0.0
+ hasown: 2.0.1
internal-slot: 1.0.7
is-array-buffer: 3.0.4
is-callable: 1.2.7
@@ -2140,7 +2137,7 @@ packages:
object-inspect: 1.13.1
object-keys: 1.1.1
object.assign: 4.1.5
- regexp.prototype.flags: 1.5.1
+ regexp.prototype.flags: 1.5.2
safe-array-concat: 1.1.0
safe-regex-test: 1.0.3
string.prototype.trim: 1.2.8
@@ -2169,7 +2166,7 @@ packages:
dependencies:
get-intrinsic: 1.2.4
has-tostringtag: 1.0.2
- hasown: 2.0.0
+ hasown: 2.0.1
dev: true
/es-to-primitive@1.2.1:
@@ -2389,7 +2386,7 @@ packages:
function-bind: 1.1.2
has-proto: 1.0.1
has-symbols: 1.0.3
- hasown: 2.0.0
+ hasown: 2.0.1
dev: true
/get-package-type@0.1.0:
@@ -2500,8 +2497,8 @@ packages:
has-symbols: 1.0.3
dev: true
- /hasown@2.0.0:
- resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
+ /hasown@2.0.1:
+ resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
engines: {node: '>= 0.4'}
dependencies:
function-bind: 1.1.2
@@ -2596,7 +2593,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
es-errors: 1.3.0
- hasown: 2.0.0
+ hasown: 2.0.1
side-channel: 1.0.5
dev: true
@@ -2634,7 +2631,7 @@ packages:
/is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
dependencies:
- hasown: 2.0.0
+ hasown: 2.0.1
dev: true
/is-date-object@1.0.5:
@@ -2822,7 +2819,7 @@ packages:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.1
@@ -2843,7 +2840,7 @@ packages:
- supports-color
dev: true
- /jest-cli@29.7.0(@types/node@20.11.16):
+ /jest-cli@29.7.0(@types/node@20.11.17):
resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -2857,10 +2854,10 @@ packages:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@20.11.16)
+ create-jest: 29.7.0(@types/node@20.11.17)
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.11.16)
+ jest-config: 29.7.0(@types/node@20.11.17)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -2871,7 +2868,7 @@ packages:
- ts-node
dev: true
- /jest-config@29.7.0(@types/node@20.11.16):
+ /jest-config@29.7.0(@types/node@20.11.17):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@@ -2886,7 +2883,7 @@ packages:
'@babel/core': 7.23.9
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
babel-jest: 29.7.0(@babel/core@7.23.9)
chalk: 4.1.2
ci-info: 3.9.0
@@ -2946,7 +2943,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
jest-mock: 29.7.0
jest-util: 29.7.0
dev: true
@@ -2962,7 +2959,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -3013,7 +3010,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
jest-util: 29.7.0
dev: true
@@ -3068,7 +3065,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -3099,7 +3096,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2
@@ -3151,7 +3148,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -3176,7 +3173,7 @@ packages:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -3188,13 +3185,13 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
- /jest@29.7.0(@types/node@20.11.16):
+ /jest@29.7.0(@types/node@20.11.17):
resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -3207,7 +3204,7 @@ packages:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@20.11.16)
+ jest-cli: 29.7.0(@types/node@20.11.17)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -3215,10 +3212,6 @@ packages:
- ts-node
dev: true
- /jquery@3.7.1:
- resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
- dev: false
-
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -3849,12 +3842,13 @@ packages:
once: 1.4.0
dev: true
- /regexp.prototype.flags@1.5.1:
- resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
+ /regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.6
define-properties: 1.2.1
+ es-errors: 1.3.0
set-function-name: 2.0.1
dev: true
@@ -3902,26 +3896,26 @@ packages:
fsevents: 2.3.3
dev: true
- /rollup@4.9.6:
- resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==}
+ /rollup@4.10.0:
+ resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.9.6
- '@rollup/rollup-android-arm64': 4.9.6
- '@rollup/rollup-darwin-arm64': 4.9.6
- '@rollup/rollup-darwin-x64': 4.9.6
- '@rollup/rollup-linux-arm-gnueabihf': 4.9.6
- '@rollup/rollup-linux-arm64-gnu': 4.9.6
- '@rollup/rollup-linux-arm64-musl': 4.9.6
- '@rollup/rollup-linux-riscv64-gnu': 4.9.6
- '@rollup/rollup-linux-x64-gnu': 4.9.6
- '@rollup/rollup-linux-x64-musl': 4.9.6
- '@rollup/rollup-win32-arm64-msvc': 4.9.6
- '@rollup/rollup-win32-ia32-msvc': 4.9.6
- '@rollup/rollup-win32-x64-msvc': 4.9.6
+ '@rollup/rollup-android-arm-eabi': 4.10.0
+ '@rollup/rollup-android-arm64': 4.10.0
+ '@rollup/rollup-darwin-arm64': 4.10.0
+ '@rollup/rollup-darwin-x64': 4.10.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.10.0
+ '@rollup/rollup-linux-arm64-gnu': 4.10.0
+ '@rollup/rollup-linux-arm64-musl': 4.10.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.10.0
+ '@rollup/rollup-linux-x64-gnu': 4.10.0
+ '@rollup/rollup-linux-x64-musl': 4.10.0
+ '@rollup/rollup-win32-arm64-msvc': 4.10.0
+ '@rollup/rollup-win32-ia32-msvc': 4.10.0
+ '@rollup/rollup-win32-x64-msvc': 4.10.0
fsevents: 2.3.3
dev: true
@@ -3978,7 +3972,7 @@ packages:
resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.2
+ define-data-property: 1.1.3
es-errors: 1.3.0
function-bind: 1.1.2
get-intrinsic: 1.2.4
@@ -3990,7 +3984,7 @@ packages:
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.2
+ define-data-property: 1.1.3
functions-have-names: 1.2.3
has-property-descriptors: 1.0.1
dev: true
@@ -4089,7 +4083,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.16
+ spdx-license-ids: 3.0.17
dev: true
/spdx-exceptions@2.4.0:
@@ -4100,11 +4094,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.4.0
- spdx-license-ids: 3.0.16
+ spdx-license-ids: 3.0.17
dev: true
- /spdx-license-ids@3.0.16:
- resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
+ /spdx-license-ids@3.0.17:
+ resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
dev: true
/spdx-ranges@2.1.1:
@@ -4425,8 +4419,8 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
- /vite@5.1.0(@types/node@20.11.16):
- resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==}
+ /vite@5.1.1(@types/node@20.11.17):
+ resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -4453,10 +4447,10 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
esbuild: 0.19.12
postcss: 8.4.35
- rollup: 4.9.6
+ rollup: 4.10.0
optionalDependencies:
fsevents: 2.3.3
dev: true
diff --git a/public/ThirdPartyLicenses.txt b/public/ThirdPartyLicenses.txt
index 95b6f6b1..bd6f556c 100644
--- a/public/ThirdPartyLicenses.txt
+++ b/public/ThirdPartyLicenses.txt
@@ -1,4 +1,4 @@
-Package: @biomejs/biome@1.4.1
+Package: @biomejs/biome@1.5.3
License: MIT OR Apache-2.0
Apache License
@@ -189,7 +189,7 @@ APPENDIX: How to apply the Apache License to your work.
same "printed page" as the copyright notice for easier
identification within third-party archives.
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2023 Biome Developers and Contributors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -203,7 +203,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-Package: @crxjs/vite-plugin@2.0.0-beta.21
+
+Package: @crxjs/vite-plugin@2.0.0-beta.23
License: MIT
MIT License
@@ -969,7 +970,7 @@ License: Apache-2.0
limitations under the License.
-Package: @preact/preset-vite@2.7.0
+Package: @preact/preset-vite@2.8.1
License: MIT
MIT License
@@ -1073,7 +1074,33 @@ License: MIT
SOFTWARE
-Package: @types/node@20.10.4
+Package: @types/lodash.isequal@4.5.8
+License: MIT
+
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
+
+
+Package: @types/node@20.11.17
License: MIT
MIT License
@@ -1099,7 +1126,7 @@ License: MIT
SOFTWARE
-Package: @types/react-dom@18.2.17
+Package: @types/react-dom@18.2.19
License: MIT
MIT License
@@ -1125,7 +1152,7 @@ License: MIT
SOFTWARE
-Package: @types/react@18.2.42
+Package: @types/react@18.2.55
License: MIT
MIT License
@@ -1177,7 +1204,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-Package: chromeshack@1.74.0
+Package: chromeshack@1.76.0
License: MIT*
Copyright (c) 2009 Adam Hughes
@@ -1201,7 +1228,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-Package: dompurify@3.0.6
+Package: dompurify@3.0.8
License: (MPL-2.0 OR Apache-2.0)
DOMPurify
@@ -1774,7 +1801,7 @@ Exhibit B - “Incompatible With Secondary Licenses” Notice
-Package: dotenv@16.3.1
+Package: dotenv@16.4.3
License: BSD-2-Clause
Copyright (c) 2015, Scott Motte
@@ -1802,7 +1829,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-Package: embla-carousel-react@8.0.0-rc14
+Package: embla-carousel-react@8.0.0-rc19
License: MIT
@@ -1872,10 +1899,200 @@ License: MIT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Open Source
+
+
+ Copyright © 2019-present, David Jerleke.
+ Embla is MIT licensed 💖.
+
+
+
+ · · ·
+
+
+
+ Thanks BrowserStack.
+
+
+
+
+
+
+
+
+
+Package: embla-carousel@8.0.0-rc19
+License: MIT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Embla Carousel
+
+
+
+ Embla Carousel is a bare bones carousel library with great fluid motion and awesome swipe precision. It's library agnostic, dependency free and 100% open source.
+
+
+
+
+
+
+ Examples
+
+
+
+
+
+ Generator
+
+
+
+
+
+ Installation
+
+
+
+
+
+
+
@@ -1889,30 +2106,57 @@ License: MIT
Thank you to all contributors for making Embla Carousel awesome! Contributions are welcome.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1955,6 +2199,26 @@ License: MIT
+Package: glob@10.3.10
+License: ISC
+
+The ISC License
+
+Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
Package: html-react-parser@4.2.10
License: MIT
@@ -2008,31 +2272,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-Package: jquery@3.7.1
-License: MIT
-
-Copyright OpenJS Foundation and other contributors, https://openjsf.org/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
Package: license-checker@25.0.1
License: BSD-3-Clause
@@ -2062,6 +2301,58 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Package: lodash.isequal@4.5.0
+License: MIT
+
+Copyright JS Foundation and other contributors
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
Package: lz-string@1.5.0
License: MIT
@@ -2115,7 +2406,7 @@ SOFTWARE.
-Package: preact@10.19.2
+Package: preact@10.19.4
License: MIT
The MIT License (MIT)
@@ -2141,7 +2432,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-Package: prettier@3.1.0
+Package: prettier@3.2.5
License: MIT
# Prettier license
@@ -2163,7 +2454,7 @@ MIT, ISC, BSD-2-Clause, BSD-3-Clause, Apache-2.0
## Bundled dependencies
-### @angular/compiler@v17.0.2
+### @angular/compiler@v17.1.2
> Angular - the compiler library
@@ -2173,7 +2464,7 @@ Author: angular
----------------------------------------
-### @babel/code-frame@v7.22.13
+### @babel/code-frame@v7.23.5
> Generate errors that contain a code frame that point to source locations.
@@ -2240,7 +2531,7 @@ Author: The Babel Team (https://babel.dev/team)
----------------------------------------
-### @babel/highlight@v7.22.13
+### @babel/highlight@v7.23.4
> Syntax highlight JavaScript strings for output in terminals.
@@ -2274,7 +2565,7 @@ Author: The Babel Team (https://babel.dev/team)
----------------------------------------
-### @babel/parser@v7.23.3
+### @babel/parser@v7.23.9
> A JavaScript parser
@@ -2333,7 +2624,7 @@ License: MIT
----------------------------------------
-### @glimmer/syntax@v0.85.12
+### @glimmer/syntax@v0.88.1
> Copyright (c) 2015 Tilde, Inc.
>
@@ -2357,7 +2648,7 @@ License: MIT
----------------------------------------
-### @glimmer/util@v0.85.12
+### @glimmer/util@v0.88.1
> Common utilities used in Glimmer
@@ -2385,7 +2676,7 @@ License: MIT
----------------------------------------
-### @glimmer/wire-format@v0.85.12
+### @glimmer/wire-format@v0.88.1
License: MIT
@@ -2600,7 +2891,7 @@ Author: Alex Bell
----------------------------------------
-### @typescript-eslint/types@v6.10.0
+### @typescript-eslint/types@v6.20.0
> Types for the TypeScript-ESTree AST spec
@@ -2631,7 +2922,7 @@ Repository:
----------------------------------------
-### @typescript-eslint/typescript-estree@v6.10.0
+### @typescript-eslint/typescript-estree@v6.20.0
> A parser that converts TypeScript source code into an ESTree compatible form
@@ -2667,7 +2958,7 @@ Repository:
----------------------------------------
-### acorn@v8.11.2
+### acorn@v8.11.3
> ECMAScript parser
@@ -2729,7 +3020,7 @@ Repository:
----------------------------------------
-### angular-estree-parser@v8.0.3
+### angular-estree-parser@v9.0.0
> A parser that converts Angular source code into an ESTree-compatible form
@@ -2761,7 +3052,7 @@ Author: Ika (https://github.com/ikatyang)
----------------------------------------
-### angular-html-parser@v5.0.2
+### angular-html-parser@v5.2.0
> A HTML parser extracted from Angular with some modifications
@@ -2769,26 +3060,26 @@ License: MIT
Homepage:
Author: Ika (https://github.com/ikatyang)
-> MIT License
->
-> Copyright (c) Ika (https://github.com/ikatyang)
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> MIT License
+>
+> Copyright (c) Ika (https://github.com/ikatyang)
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in all
+> copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> SOFTWARE.
----------------------------------------
@@ -3174,52 +3465,6 @@ Author: Thomas Watson Steen (https://twitter.com/wa7son)
----------------------------------------
-### clone@v1.0.4
-
-> deep cloning of objects and arrays
-
-License: MIT
-Repository:
-Author: Paul Vorbach (http://paul.vorba.ch/)
-Contributors:
- - Blake Miner (http://www.blakeminer.com/)
- - Tian You (http://blog.axqd.net/)
- - George Stagas (http://stagas.com/)
- - Tobiasz Cudnik (https://github.com/TobiaszCudnik)
- - Pavel Lang (https://github.com/langpavel)
- - Dan MacTough (http://yabfog.com/)
- - w1nk (https://github.com/w1nk)
- - Hugh Kennedy (http://twitter.com/hughskennedy)
- - Dustin Diaz (http://dustindiaz.com)
- - Ilya Shaisultanov (https://github.com/diversario)
- - Nathan MacInnes (http://macinn.es/)
- - Benjamin E. Coe (https://twitter.com/benjamincoe)
- - Nathan Zadoks (https://github.com/nathan7)
- - Róbert Oroszi (https://github.com/oroce)
- - Aurélio A. Heckert (http://softwarelivre.org/aurium)
- - Guy Ellis (http://www.guyellisrocks.com/)
-
-> Copyright © 2011-2015 Paul Vorbach
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of
-> this software and associated documentation files (the “Software”), to deal in
-> the Software without restriction, including without limitation the rights to
-> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-> the Software, and to permit persons to whom the Software is furnished to do so,
-> subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE
-> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
### collapse-white-space@v1.0.6
> Replace multiple white-space characters with a single space
@@ -3395,39 +3640,6 @@ Contributors:
----------------------------------------
-### defaults@v1.0.4
-
-> merge single level defaults over a config object
-
-License: MIT
-Repository:
-Author: Elijah Insua
-
-> The MIT License (MIT)
->
-> Copyright (c) 2022 Sindre Sorhus
-> Copyright (c) 2015 Elijah Insua
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-> THE SOFTWARE.
-
-----------------------------------------
-
### diff@v5.1.0
> A javascript text diff implementation.
@@ -3585,7 +3797,7 @@ Author: Sindre Sorhus (https://sindresorhus.com)
----------------------------------------
-### espree@v9.6.1
+### espree@v10.0.0
> An Esprima-compatible JavaScript parser built on Acorn
@@ -3745,7 +3957,7 @@ Author: Matteo Collina
----------------------------------------
-### file-entry-cache@v7.0.1
+### file-entry-cache@v7.0.2
> Super simple cache for file metadata, useful for process that work o a given series of files and that only need to repeat the job on the changed ones since the previous run of the process
@@ -3834,41 +4046,6 @@ Author: Sindre Sorhus (https://sindresorhus.com)
----------------------------------------
-### find-parent-dir@v0.3.1
-
-> Finds the first parent directory that contains a given file or directory.
-
-License: MIT
-Homepage:
-Repository:
-Author: Thorsten Lorenz (http://thlorenz.com)
-
-> Copyright 2013 Thorsten Lorenz.
-> All rights reserved.
->
-> Permission is hereby granted, free of charge, to any person
-> obtaining a copy of this software and associated documentation
-> files (the "Software"), to deal in the Software without
-> restriction, including without limitation the rights to use,
-> copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the
-> Software is furnished to do so, subject to the following
-> conditions:
->
-> The above copyright notice and this permission notice shall be
-> included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-> OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
### find-up@v6.3.0
> Find a file or directory by walking up parent directories
@@ -3888,7 +4065,7 @@ Author: Sindre Sorhus (https://sindresorhus.com)
----------------------------------------
-### flat-cache@v3.1.1
+### flat-cache@v3.2.0
> A stupidly simple key/value storage using files to persist some data
@@ -3981,7 +4158,7 @@ Contributors:
----------------------------------------
-### flow-parser@v0.221.0
+### flow-parser@v0.226.0
> JavaScript parser written in OCaml. Produces ESTree AST
@@ -4195,7 +4372,7 @@ Author: Sindre Sorhus (sindresorhus.com)
----------------------------------------
-### ignore@v5.2.4
+### ignore@v5.3.1
> Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.
@@ -4776,6 +4953,38 @@ Contributors:
----------------------------------------
+### iterate-directory-up@v1.1.1
+
+> Iterate directory up.
+
+License: MIT
+Homepage:
+Author: fisker Cheung (https://www.fiskercheung.com/)
+
+> MIT License
+>
+> Copyright (c) fisker Cheung (https://www.fiskercheung.com/)
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in all
+> copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+
+----------------------------------------
+
### jest-docblock@v29.7.0
License: MIT
@@ -4905,42 +5114,6 @@ Author: Dominic Tarr (http://dominictarr.com)
----------------------------------------
-### json-parse-even-better-errors@v3.0.0
-
-> JSON.parse with context information on error
-
-License: MIT
-Repository:
-Author: GitHub Inc.
-
-> Copyright 2017 Kat Marchán
-> Copyright npm, Inc.
->
-> Permission is hereby granted, free of charge, to any person obtaining a
-> copy of this software and associated documentation files (the "Software"),
-> to deal in the Software without restriction, including without limitation
-> the rights to use, copy, modify, merge, publish, distribute, sublicense,
-> and/or sell copies of the Software, and to permit persons to whom the
-> Software is furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-> DEALINGS IN THE SOFTWARE.
->
-> ---
->
-> This library is a fork of 'better-json-errors' by Kat Marchán, extended and
-> distributed under the terms of the MIT license above.
-
-----------------------------------------
-
### json5@v2.2.3
> JSON for Humans
@@ -4980,7 +5153,7 @@ Contributors:
----------------------------------------
-### keyv@v4.5.3
+### keyv@v4.5.4
> Simple key-value storage with support for multiple backends
@@ -5010,38 +5183,6 @@ Author: Sindre Sorhus (https://sindresorhus.com)
----------------------------------------
-### lilconfig@v2.1.0
-
-> A zero-dependency alternative to cosmiconfig
-
-License: MIT
-Repository:
-Author: antonk52
-
-> MIT License
->
-> Copyright (c) 2022 Anton Kastritskiy
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
-----------------------------------------
-
### lines-and-columns@v2.0.4
> Maps lines and columns to character offsets and back.
@@ -5119,25 +5260,6 @@ Author: Isaac Z. Schlueter
----------------------------------------
-### map-age-cleaner@v0.1.3
-
-> Automatically cleanup expired items in a Map
-
-License: MIT
-Author: Sam Verschueren (github.com/SamVerschueren)
-
-> MIT License
->
-> Copyright (c) Sam Verschueren (github.com/SamVerschueren)
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
### markdown-escapes@v1.0.4
> List of escapable characters in markdown
@@ -5172,25 +5294,6 @@ Contributors:
----------------------------------------
-### mem@v9.0.2
-
-> Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://sindresorhus.com)
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
### merge2@v1.4.1
> Merge multiple streams into one stream in sequence or parallel.
@@ -5223,7 +5326,7 @@ Repository:
----------------------------------------
-### meriyah@v4.3.8
+### meriyah@v4.3.9
> A 100% compliant, self-hosted javascript parser with high focus on both performance and stability
@@ -5292,25 +5395,6 @@ Contributors:
----------------------------------------
-### mimic-fn@v4.0.0
-
-> Make a function mimic another one
-
-License: MIT
-Author: Sindre Sorhus (https://sindresorhus.com)
-
-> MIT License
->
-> Copyright (c) Sindre Sorhus (https://sindresorhus.com)
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------
-
### minimatch@v3.1.2
> a glob matcher in javascript
@@ -5398,7 +5482,7 @@ Author: Yoan Arnaudov
----------------------------------------
-### nanoid@v3.3.6
+### nanoid@v3.3.7
> A tiny (116 bytes), secure URL-friendly unique string ID generator
@@ -5454,37 +5538,6 @@ Author: Isaac Z. Schlueter (http://blog.izs.me/)
----------------------------------------
-### p-defer@v1.0.0
-
-> Create a deferred promise
-
-License: MIT
-Author: Sindre Sorhus (sindresorhus.com)
-
-> The MIT License (MIT)
->
-> Copyright (c) Sindre Sorhus (sindresorhus.com)
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-> THE SOFTWARE.
-
-----------------------------------------
-
### p-limit@v4.0.0
> Run multiple promise-returning & async functions with limited concurrency
@@ -5557,7 +5610,7 @@ Contributors:
----------------------------------------
-### parse-json@v8.0.1
+### parse-json@v8.1.0
> Parse JSON with more helpful errors
@@ -5735,7 +5788,7 @@ Author: typicode
----------------------------------------
-### postcss@v8.4.31
+### postcss@v8.4.33
> Tool for transforming styles with JS plugins
@@ -6490,7 +6543,7 @@ Contributors:
----------------------------------------
-### ts-api-utils@v1.0.1
+### ts-api-utils@v1.0.3
> Utility functions for working with TypeScript's API. Successor to the wonderful tsutils.
@@ -6521,7 +6574,7 @@ Author: Josh Goldberg
----------------------------------------
-### typescript@v5.2.2
+### typescript@v5.3.3
> TypeScript is a language for application scale JavaScript development
@@ -6866,7 +6919,7 @@ Contributors:
----------------------------------------
-### url-or-path@v2.1.0
+### url-or-path@v2.3.0
> Convert between file URL and path.
@@ -7037,23 +7090,23 @@ Author: Ika (https://github.com/ikatyang)
----------------------------------------
-### wcwidth@v1.0.1
+### wcwidth.js@v1.1.2
-> Port of C's wcwidth() and wcswidth()
+> a javascript porting of C's wcwidth()
License: MIT
-Homepage:
-Repository:
-Author: Tim Oxley
+Homepage:
+Repository:
+Author: Woong Jun (http://code.woong.org/)
Contributors:
- - Woong Jun (http://code.woong.org/)
+ - Tim Oxley (http://campjs.com/)
-> wcwidth.js: JavaScript Portng of Markus Kuhn's wcwidth() Implementation
-> =======================================================================
+> wcwidth.js: a javascript portng of C's wcwidth()
+> ================================================
>
-> Copyright (C) 2012 by Jun Woong.
+> Copyright (C) 2012-2014 by Woong Jun and Tim Oxley.
>
-> This package is a JavaScript porting of `wcwidth()` implementation
+> This package is a javascript porting of `wcwidth()` implementation
> [by Markus Kuhn](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c).
>
> Permission is hereby granted, free of charge, to any person obtaining a copy of
@@ -7071,12 +7124,12 @@ Contributors:
> INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
> FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
> OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-> EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-> PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-> BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-> IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-> ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-> POSSIBILITY OF SUCH DAMAGE.
+> EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+> OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+> INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+> CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+> IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+> OF SUCH DAMAGE.
----------------------------------------
@@ -7367,7 +7420,7 @@ If the Work includes a "NOTICE" text file as part of its distribution, then any
END OF TERMS AND CONDITIONS
-Package: vite@4.5.1
+Package: vite@5.1.1
License: MIT
# Vite core license
@@ -7835,9 +7888,16 @@ License: MIT
By: Luke Edwards
Repository: lukeed/polka
+---------------------------------------
+
+## @rollup/plugin-alias
+License: MIT
+By: Johannes Stein
+Repository: rollup/plugins
+
> The MIT License (MIT)
>
-> Copyright (c) Luke Edwards (https://lukeed.com)
+> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
@@ -7859,13 +7919,6 @@ Repository: lukeed/polka
---------------------------------------
-## @rollup/plugin-alias
-License: MIT
-By: Johannes Stein
-Repository: rollup/plugins
-
----------------------------------------
-
## @rollup/plugin-commonjs
License: MIT
By: Rich Harris
@@ -7900,6 +7953,28 @@ License: MIT
By: LarsDenBakker
Repository: rollup/plugins
+> The MIT License (MIT)
+>
+> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+
---------------------------------------
## @rollup/pluginutils
@@ -7907,6 +7982,28 @@ License: MIT
By: Rich Harris
Repository: rollup/plugins
+> The MIT License (MIT)
+>
+> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+
---------------------------------------
## acorn
@@ -8007,6 +8104,63 @@ Repository: https://github.com/micromatch/anymatch
---------------------------------------
+## artichokie
+License: MIT
+By: sapphi-red, Evan You
+Repository: git+https://github.com/sapphi-red/artichokie.git
+
+> MIT License
+>
+> Copyright (c) 2020-present, Yuxi (Evan) You
+> Copyright (c) 2023-present, sapphi-red
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in all
+> copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+
+---------------------------------------
+
+## astring
+License: MIT
+By: David Bonnet
+Repository: https://github.com/davidbonnet/astring.git
+
+> Copyright (c) 2015, David Bonnet
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+
+---------------------------------------
+
## balanced-match
License: MIT
By: Julian Gruber
@@ -8234,35 +8388,6 @@ Repository: senchalabs/connect
---------------------------------------
-## connect-history-api-fallback
-License: MIT
-By: Ben Ripkens, Craig Myles
-Repository: http://github.com/bripkens/connect-history-api-fallback.git
-
-> The MIT License
->
-> Copyright (c) 2022 Ben Blackmore and contributors
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-> THE SOFTWARE.
-
----------------------------------------
-
## convert-source-map
License: MIT
By: Thorsten Lorenz
@@ -9205,29 +9330,32 @@ Repository: git+https://github.com/isaacs/isexe.git
---------------------------------------
-## json-stable-stringify
+## js-tokens
License: MIT
-By: James Halliday
-Repository: git://github.com/ljharb/json-stable-stringify.git
+By: Simon Lydell
+Repository: lydell/js-tokens
-> This software is released under the MIT license:
+> The MIT License (MIT)
>
-> Permission is hereby granted, free of charge, to any person obtaining a copy of
-> this software and associated documentation files (the "Software"), to deal in
-> the Software without restriction, including without limitation the rights to
-> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-> the Software, and to permit persons to whom the Software is furnished to do so,
-> subject to the following conditions:
+> Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Simon Lydell
>
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
---------------------------------------
@@ -9236,6 +9364,28 @@ License: MIT
By: Evan You
Repository: git+https://github.com/yyx990803/launch-editor.git
+> The MIT License (MIT)
+>
+> Copyright (c) 2017-present, Yuxi (Evan) You
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+
---------------------------------------
## launch-editor-middleware
@@ -9243,6 +9393,28 @@ License: MIT
By: Evan You
Repository: git+https://github.com/yyx990803/launch-editor.git
+> The MIT License (MIT)
+>
+> Copyright (c) 2017-present, Yuxi (Evan) You
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+
---------------------------------------
## lilconfig
@@ -9250,6 +9422,28 @@ License: MIT
By: antonk52
Repository: https://github.com/antonk52/lilconfig
+> MIT License
+>
+> Copyright (c) 2022 Anton Kastritskiy
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in all
+> copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+
---------------------------------------
## loader-utils
@@ -9414,7 +9608,7 @@ Repository: git://github.com/isaacs/minimatch.git
> The ISC License
>
-> Copyright (c) 2011-2022 Isaac Z. Schlueter and Contributors
+> Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
>
> Permission to use, copy, modify, and/or distribute this software for any
> purpose with or without fee is hereby granted, provided that the above
@@ -9573,35 +9767,6 @@ Repository: sindresorhus/object-assign
---------------------------------------
-## okie
-License: MIT
-By: Evan You
-Repository: git+https://github.com/yyx990803/okie.git
-
-> MIT License
->
-> Copyright (c) 2020-present, Yuxi (Evan) You
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all
-> copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
----------------------------------------
-
## on-finished
License: MIT
By: Douglas Christopher Wilson, Jonathan Ong
@@ -10295,7 +10460,7 @@ Repository: sindresorhus/shebang-regex
## shell-quote
License: MIT
By: James Halliday
-Repository: http://github.com/substack/node-shell-quote.git
+Repository: http://github.com/ljharb/shell-quote.git
> The MIT License
>
@@ -10723,7 +10888,7 @@ Repository: https://github.com/npm/wrappy
## ws
License: MIT
By: Einar Otto Stangvik
-Repository: websockets/ws
+Repository: git+https://github.com/websockets/ws.git
> Copyright (c) 2011 Einar Otto Stangvik
> Copyright (c) 2013 Arnout Kazemier and contributors
@@ -10795,7 +10960,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-Package: zustand@4.4.7
+Package: zustand@4.5.0
License: MIT
MIT License
diff --git a/src/core/common/dom.ts b/src/core/common/dom.ts
index 04257881..b1179f6c 100644
--- a/src/core/common/dom.ts
+++ b/src/core/common/dom.ts
@@ -1,9 +1,6 @@
-import jQuery from "jquery";
import * as textFieldEdit from "text-field-edit";
import { arrHas } from "./common";
-const $ = jQuery;
-
export const stripHtml = (html: string) => {
// respect carriage returns
const result = html.replace(//gi, "\n");
@@ -116,19 +113,22 @@ export const generatePreview = (postText: string) => {
return convertUrlToLink(_postText);
};
-export function scrollToElement(
- elem: JQuery | HTMLElement,
- opts?: { offset?: number; smooth?: boolean; toFit?: boolean }
-) {
- let _elem = elem;
+export function scrollToElement(elem: HTMLElement, opts?: { offset?: number; smooth?: boolean; toFit?: boolean }) {
+ let _elem = elem as any;
const { offset, smooth, toFit } = opts || {};
- if (_elem && _elem instanceof $) _elem = (_elem as JQuery)[0] as HTMLElement;
- else if (!_elem) return false;
+
+ // Check if elem is a jQuery object by looking for the .jquery property
+ if (typeof _elem === "object" && _elem !== null && _elem.jquery) {
+ _elem = _elem[0];
+ }
+ if (!_elem) return false;
+
const headerHeight = -(document.querySelector("header")?.getBoundingClientRect().height + 6);
- const _offset = offset === undefined ? headerHeight : offset;
- // position visibly by default - use offset if 'toFit'
- const visibleY = toFit ? _offset : -($(window).height() / 4);
- const scrollY = (_elem as HTMLElement).getBoundingClientRect().top + window.scrollY + visibleY;
+ const _offset = offset == null ? headerHeight : offset;
+ const visibleY = toFit ? _offset : -Math.floor(window.innerHeight / 4);
+ const rect = _elem.getBoundingClientRect();
+ const scrollY = rect.top + window.scrollY + visibleY;
+
window.scrollTo({ top: scrollY, behavior: smooth ? "smooth" : "auto" });
}
@@ -145,22 +145,28 @@ export const scrollParentToChild = (parent: HTMLElement, child: HTMLElement, off
if (!isViewable) parent.scrollTop = childRect.top + parent.scrollTop - parentRect.top + _offset;
};
-export function elementIsVisible(elem: JQuery | HTMLElement, partialBool?: boolean) {
- let _elem = elem;
- // don't use an arrow function here (for injection purposes)
- // only check to ensure vertical visibility
- if (_elem && _elem instanceof $) _elem = (_elem as JQuery)[0] as HTMLElement;
- else if (!_elem) return false;
+export function elementIsVisible(elem: HTMLElement, partialBool?: boolean) {
+ let _elem = elem as any;
+ // Check if elem is a jQuery object by looking for the .jquery property
+ if (typeof _elem === "object" && _elem !== null && _elem.jquery) {
+ _elem = _elem[0];
+ }
+ if (!_elem) return false;
+
const rect = (_elem as HTMLElement).getBoundingClientRect();
const visibleHeight = window.innerHeight;
if (partialBool) return rect.top <= visibleHeight && rect.top + rect.height >= 0;
return rect.top >= 0 && rect.top + rect.height <= visibleHeight;
}
-export function elementFitsViewport(elem: JQuery | HTMLElement) {
- let _elem = elem;
- if (_elem && _elem instanceof $) _elem = (_elem as JQuery)[0] as HTMLElement;
- else if (!_elem) return false;
+export function elementFitsViewport(elem: HTMLElement) {
+ let _elem = elem as any;
+ // Check if elem is a jQuery object by looking for the .jquery property
+ if (typeof _elem === "object" && _elem !== null && _elem.jquery) {
+ _elem = _elem[0];
+ }
+ if (!_elem) return false;
+
const headerHeight = document.querySelector("header")?.getBoundingClientRect().height + 6;
const elemHeight = (_elem as HTMLElement).getBoundingClientRect().height;
const visibleHeight = window.innerHeight;
From be33cf355976bc29ce3d411cccf87d7c48d7fcfb Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Tue, 13 Feb 2024 07:53:07 -0700
Subject: [PATCH 12/18] Resolved merge for SentenceParser refactor
---
src/core/settings.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/core/settings.ts b/src/core/settings.ts
index 63ab3ba4..b662ab8a 100644
--- a/src/core/settings.ts
+++ b/src/core/settings.ts
@@ -1,4 +1,3 @@
-import { importSettings } from "../PopupApp/helpers";
import { arrHas, objEmpty, objHas } from "./common/common";
import { superTrim } from "./common/dom";
import { DefaultSettings } from "./default_settings";
From 3aef1b3a7860564d7786c207d6ba806de45ff990 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Tue, 13 Feb 2024 07:59:02 -0700
Subject: [PATCH 13/18] Ignore test results output when running biome linting
---
biome.json | 2 +-
pnpm-lock.yaml | 78 ++++++++++++++++++++++++++++----------------------
2 files changed, 44 insertions(+), 36 deletions(-)
diff --git a/biome.json b/biome.json
index 33feeb12..91083da1 100644
--- a/biome.json
+++ b/biome.json
@@ -1,7 +1,7 @@
{
"$schema": "https://biomejs.dev/schemas/1.4.1/schema.json",
"files": {
- "ignore": ["node_modules", "dist", "dist-firefox"]
+ "ignore": ["node_modules", "dist", "dist-firefox", "results"]
},
"organizeImports": {
"enabled": true
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cb1fd112..9546429b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1560,7 +1560,7 @@ packages:
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
is-array-buffer: 3.0.4
dev: true
@@ -1574,7 +1574,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
array-buffer-byte-length: 1.0.1
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
es-errors: 1.3.0
@@ -1721,10 +1721,11 @@ packages:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: true
- /call-bind@1.0.6:
- resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==}
+ /call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'}
dependencies:
+ es-define-property: 1.0.0
es-errors: 1.3.0
function-bind: 1.1.2
get-intrinsic: 1.2.4
@@ -1993,7 +1994,7 @@ packages:
es-errors: 1.3.0
get-intrinsic: 1.2.4
gopd: 1.0.1
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
dev: true
/define-properties@1.2.1:
@@ -2001,7 +2002,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
define-data-property: 1.1.3
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
object-keys: 1.1.1
dev: true
@@ -2113,7 +2114,7 @@ packages:
array-buffer-byte-length: 1.0.1
arraybuffer.prototype.slice: 1.0.3
available-typed-arrays: 1.0.6
- call-bind: 1.0.6
+ call-bind: 1.0.7
es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
@@ -2121,7 +2122,7 @@ packages:
get-symbol-description: 1.0.2
globalthis: 1.0.3
gopd: 1.0.1
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
has-proto: 1.0.1
has-symbols: 1.0.3
hasown: 2.0.1
@@ -2151,6 +2152,13 @@ packages:
which-typed-array: 1.1.14
dev: true
+ /es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+ dev: true
+
/es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
@@ -2358,7 +2366,7 @@ packages:
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
functions-have-names: 1.2.3
@@ -2403,7 +2411,7 @@ packages:
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
dev: true
@@ -2474,10 +2482,10 @@ packages:
engines: {node: '>=8'}
dev: true
- /has-property-descriptors@1.0.1:
- resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
dependencies:
- get-intrinsic: 1.2.4
+ es-define-property: 1.0.0
dev: true
/has-proto@1.0.1:
@@ -2601,7 +2609,7 @@ packages:
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
get-intrinsic: 1.2.4
dev: true
@@ -2619,7 +2627,7 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
has-tostringtag: 1.0.2
dev: true
@@ -2684,14 +2692,14 @@ packages:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
has-tostringtag: 1.0.2
dev: true
/is-shared-array-buffer@1.0.2:
resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
dev: true
/is-stream@2.0.1:
@@ -2723,7 +2731,7 @@ packages:
/is-weakref@1.0.2:
resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
dev: true
/isarray@2.0.5:
@@ -3541,7 +3549,7 @@ packages:
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
@@ -3846,7 +3854,7 @@ packages:
resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-errors: 1.3.0
set-function-name: 2.0.1
@@ -3935,7 +3943,7 @@ packages:
resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
engines: {node: '>=0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
get-intrinsic: 1.2.4
has-symbols: 1.0.3
isarray: 2.0.5
@@ -3945,7 +3953,7 @@ packages:
resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
es-errors: 1.3.0
is-regex: 1.1.4
dev: true
@@ -3977,7 +3985,7 @@ packages:
function-bind: 1.1.2
get-intrinsic: 1.2.4
gopd: 1.0.1
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
dev: true
/set-function-name@2.0.1:
@@ -3986,7 +3994,7 @@ packages:
dependencies:
define-data-property: 1.1.3
functions-have-names: 1.2.3
- has-property-descriptors: 1.0.1
+ has-property-descriptors: 1.0.2
dev: true
/shebang-command@1.2.0:
@@ -4021,7 +4029,7 @@ packages:
resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
object-inspect: 1.13.1
@@ -4159,7 +4167,7 @@ packages:
resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4168,7 +4176,7 @@ packages:
resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4176,7 +4184,7 @@ packages:
/string.prototype.trimend@1.0.7:
resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4184,7 +4192,7 @@ packages:
/string.prototype.trimstart@1.0.7:
resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
@@ -4318,7 +4326,7 @@ packages:
resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
es-errors: 1.3.0
is-typed-array: 1.1.13
dev: true
@@ -4327,7 +4335,7 @@ packages:
resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.13
@@ -4338,7 +4346,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.6
- call-bind: 1.0.6
+ call-bind: 1.0.7
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.13
@@ -4347,7 +4355,7 @@ packages:
/typed-array-length@1.0.4:
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
for-each: 0.3.3
is-typed-array: 1.1.13
dev: true
@@ -4365,7 +4373,7 @@ packages:
/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
dependencies:
- call-bind: 1.0.6
+ call-bind: 1.0.7
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
@@ -4476,7 +4484,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.6
- call-bind: 1.0.6
+ call-bind: 1.0.7
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.2
From a1b683ec3a190665f28a283b8d3e866e6b85a0fa Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Tue, 13 Feb 2024 09:58:40 -0700
Subject: [PATCH 14/18] Removed unnecessary scripting permission from crxjs
config
---
vite.config.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vite.config.ts b/vite.config.ts
index 2557e0c5..1f61ca62 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -58,7 +58,7 @@ const crxConfig = {
matches: ["https://www.shacknews.com/chatty*"],
},
],
- permissions: ["tabs", "storage", "scripting", "notifications", "alarms"],
+ permissions: ["tabs", "storage", "notifications", "alarms"],
host_permissions: ["https://www.shacknews.com/chatty*"],
web_accessible_resources: [
{
From da22839304baa14f1086b3fdac4fb4eb9bf39250 Mon Sep 17 00:00:00 2001
From: WombatFromHell
Date: Tue, 13 Feb 2024 20:01:14 -0700
Subject: [PATCH 15/18] Added a settings panel for toggling built-in patches
and scripts
---
package.json | 2 +-
pnpm-lock.yaml | 45 +++++++--------
public/release_notes.html | 6 +-
src/PopupApp/Options.tsx | 42 ++++++++++----
src/PopupApp/Tabs.tsx | 48 ++++++++--------
src/PopupApp/actions.ts | 19 ++++---
src/PopupApp/helpers.ts | 5 +-
src/PopupApp/index.tsx | 83 +++++++++++++++++++++++++++-
src/PopupApp/popupStore.ts | 3 +
src/builtin/collapse.ts | 5 +-
src/builtin/color_gauge.ts | 16 ++++--
src/builtin/comment_tags.ts | 5 +-
src/builtin/emoji_poster.ts | 8 ++-
src/builtin/image-uploader/index.tsx | 6 +-
src/builtin/local_timestamp.ts | 6 +-
src/builtin/mod_banners.ts | 6 +-
src/builtin/post_length_counter.ts | 6 +-
src/builtin/userpopup/index.tsx | 6 +-
src/core/common/dom.ts | 32 ++++++-----
src/core/default_settings.ts | 15 +++++
src/core/observer_handlers.ts | 8 +--
src/core/settings.ts | 48 ++++++++++++----
src/patches/scrollToPostFix.ts | 41 +++++++-------
src/patches/singleThreadFix.ts | 21 +++++--
src/serviceWorker.firefox.ts | 6 +-
src/styles/popup.css | 18 ++++++
src/types/popupStore.d.ts | 9 +--
src/types/settings.d.ts | 18 +++++-
28 files changed, 392 insertions(+), 141 deletions(-)
diff --git a/package.json b/package.json
index cb61ef3a..5541d72f 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"adm-zip": "^0.5.10",
- "dotenv": "^16.4.3",
+ "dotenv": "^16.4.4",
"embla-carousel": "8.0.0-rc19",
"glob": "^10.3.10",
"jest": "^29.7.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9546429b..b2f72b1f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -89,8 +89,8 @@ devDependencies:
specifier: ^0.5.10
version: 0.5.10
dotenv:
- specifier: ^16.4.3
- version: 16.4.3
+ specifier: ^16.4.4
+ version: 16.4.4
embla-carousel:
specifier: 8.0.0-rc19
version: 8.0.0-rc19
@@ -1576,7 +1576,7 @@ packages:
array-buffer-byte-length: 1.0.1
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
es-errors: 1.3.0
get-intrinsic: 1.2.4
is-array-buffer: 3.0.4
@@ -1706,7 +1706,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001587
- electron-to-chromium: 1.4.667
+ electron-to-chromium: 1.4.668
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.3)
dev: true
@@ -1987,21 +1987,20 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /define-data-property@1.1.3:
- resolution: {integrity: sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==}
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
dependencies:
+ es-define-property: 1.0.0
es-errors: 1.3.0
- get-intrinsic: 1.2.4
gopd: 1.0.1
- has-property-descriptors: 1.0.2
dev: true
/define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.3
+ define-data-property: 1.1.4
has-property-descriptors: 1.0.2
object-keys: 1.1.1
dev: true
@@ -2050,8 +2049,8 @@ packages:
domelementtype: 2.3.0
domhandler: 5.0.3
- /dotenv@16.4.3:
- resolution: {integrity: sha512-II98GFrje5psQTSve0E7bnwMFybNLqT8Vu8JIFWRjsE3khyNUm/loZupuy5DVzG2IXf/ysxvrixYOQnM6mjD3A==}
+ /dotenv@16.4.4:
+ resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==}
engines: {node: '>=12'}
dev: true
@@ -2059,8 +2058,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.667:
- resolution: {integrity: sha512-66L3pLlWhTNVUhnmSA5+qDM3fwnXsM6KAqE36e2w4KN0g6pkEtlT5bs41FQtQwVwKnfhNBXiWRLPs30HSxd7Kw==}
+ /electron-to-chromium@1.4.668:
+ resolution: {integrity: sha512-ZOBocMYCehr9W31+GpMclR+KBaDZOoAEabLdhpZ8oU1JFDwIaFY0UDbpXVEUFc0BIP2O2Qn3rkfCjQmMR4T/bQ==}
dev: true
/embla-carousel-react@8.0.0-rc19(react@18.2.0):
@@ -2107,14 +2106,16 @@ packages:
is-arrayish: 0.2.1
dev: true
- /es-abstract@1.22.3:
- resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
+ /es-abstract@1.22.4:
+ resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==}
engines: {node: '>= 0.4'}
dependencies:
array-buffer-byte-length: 1.0.1
arraybuffer.prototype.slice: 1.0.3
available-typed-arrays: 1.0.6
call-bind: 1.0.7
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
@@ -2368,7 +2369,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
functions-have-names: 1.2.3
dev: true
@@ -3980,7 +3981,7 @@ packages:
resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.3
+ define-data-property: 1.1.4
es-errors: 1.3.0
function-bind: 1.1.2
get-intrinsic: 1.2.4
@@ -3992,7 +3993,7 @@ packages:
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.3
+ define-data-property: 1.1.4
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
dev: true
@@ -4169,7 +4170,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
dev: true
/string.prototype.trim@1.2.8:
@@ -4178,7 +4179,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
dev: true
/string.prototype.trimend@1.0.7:
@@ -4186,7 +4187,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
dev: true
/string.prototype.trimstart@1.0.7:
@@ -4194,7 +4195,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.22.4
dev: true
/strip-ansi@6.0.1:
diff --git a/public/release_notes.html b/public/release_notes.html
index 8e412047..c42db528 100644
--- a/public/release_notes.html
+++ b/public/release_notes.html
@@ -4,8 +4,8 @@
Chrome Shack Release Notes