diff --git a/last_commit.txt b/last_commit.txt index 1bb05717f5..79f2558018 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,77 +1,51 @@ -Repository: plone.releaser +Repository: plonetheme.barceloneta Branch: refs/heads/master -Date: 2023-12-01T00:05:10+01:00 -Author: Maurits van Rees (mauritsvanrees) -Commit: https://github.com/plone/plone.releaser/commit/cbd412fc91d3c6ce0cd21c26f1d254f1c27eb977 +Date: 2023-12-12T16:00:39+01:00 +Author: Peter Mathis (petschki) +Commit: https://github.com/plone/plonetheme.barceloneta/commit/80ad139fd612510c7efe348c86e6294d6fa78b74 -Manage changelog: read markdown files as well. - -Fixes https://github.com/plone/plone.releaser/issues/48 - -Files changed: -A news/48.bugfix -A plone/releaser/tests/input/changes.md -M plone/releaser/changelog.py -M plone/releaser/tests/test_changelog.py - -b'diff --git a/news/48.bugfix b/news/48.bugfix\nnew file mode 100644\nindex 0000000..98f3c32\n--- /dev/null\n+++ b/news/48.bugfix\n@@ -0,0 +1,2 @@\n+Manage changelog: read markdown files as well.\n+[maurits]\ndiff --git a/plone/releaser/changelog.py b/plone/releaser/changelog.py\nindex 00f0ce8..e1f8d06 100644\n--- a/plone/releaser/changelog.py\n+++ b/plone/releaser/changelog.py\n@@ -8,9 +8,12 @@\n from plone.releaser.release import OLD_HEADING_MAPPING\n from urllib.request import urlopen\n \n+import re\n \n-DIST_URL = "https://dist.plone.org/release/{0}/versions.cfg"\n \n+DIST_URL = "https://dist.plone.org/release/{0}/versions.cfg"\n+MD_HEADING_RE = re.compile(r"## (\\S*).*")\n+MD_SUB_HEADING_RE = re.compile(r"### (.*)")\n buildout = Buildout()\n \n \n@@ -62,7 +65,7 @@ def get_changelog(package_name):\n if not source_url:\n return ""\n file_names = ["CHANGES", "HISTORY"]\n- file_extensions = [".rst", ".txt"]\n+ file_extensions = [".rst", ".md", ".txt"]\n if "github" in source_url:\n paths = [f"{branch}/", f"{branch}/docs/"]\n else:\n@@ -130,7 +133,7 @@ def latest(self):\n return list(self.data.items())[0]\n return None\n \n- def _parse(self, content):\n+ def _parse_rst(self, content):\n tree = publish_doctree(content)\n \n def is_valid_version_section(x):\n@@ -173,6 +176,74 @@ def is_list_item(x):\n entries[current] = [a.rawsource.strip() for a in list_items]\n self.data[version] = entries\n \n+ def _parse_md(self, content):\n+ # Parse as markdown.\n+ # I thought of using markdown-it-py, but I don\'t find it intuitive\n+ # enough for our use case. So try it "by hand".\n+\n+ def heading(text):\n+ if text in HEADINGS:\n+ return text\n+ # Might be an old heading or unknown.\n+ return OLD_HEADING_MAPPING.get(text, "other")\n+\n+ version = None\n+ current = "other"\n+ entries = defaultdict(list)\n+ list_item = None\n+ for line in content.splitlines():\n+ if not line.strip():\n+ continue\n+ match = MD_HEADING_RE.match(line)\n+ if match:\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ if version:\n+ # Store the previous version\n+ self.data[version] = entries\n+ list_item = None\n+ entries = defaultdict(list)\n+ current = "other"\n+ version = match.groups()[0]\n+ continue\n+ if not version:\n+ continue\n+ match = MD_SUB_HEADING_RE.match(line)\n+ if match:\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ list_item = None\n+ text = match.groups()[0]\n+ child_heading = heading(text)\n+ if child_heading:\n+ current = child_heading\n+ continue\n+ # Now look for the real entries: list items.\n+ if line.startswith("- ") or line.startswith("* "):\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ # start new list item\n+ list_item = line[2:]\n+ continue\n+ if list_item:\n+ list_item += "\\n" + line.strip()\n+ if list_item:\n+ # Store the last list item.\n+ entries[current].append(list_item)\n+ if version:\n+ # Store the last version.\n+ self.data[version] = entries\n+\n+ def _parse(self, content):\n+ # Try to parse as restructuredtext.\n+ self._parse_rst(content)\n+ if not self.data:\n+ # Try to parse as markdown.\n+ self._parse_md(content)\n+\n \n def build_unified_changelog(start_version, end_version):\n try:\ndiff --git a/plone/releaser/tests/input/changes.md b/plone/releaser/tests/input/changes.md\nnew file mode 100644\nindex 0000000..6acb43a\n--- /dev/null\n+++ b/plone/releaser/tests/input/changes.md\n@@ -0,0 +1,28 @@\n+Example MarkDown changelog from Products.CMFPlone package.\n+\n+## 6.0.5rc1 (2023-05-25)\n+\n+\n+### Bug fixes:\n+\n+- Do not truncate the sortable_title index\n+ [erral] #3690\n+- Fix password validation tests. [tschorr] #3784\n+- Updated metadata version to 6016.\n+ [maurits] #6016\n+\n+\n+### Internal:\n+\n+- Update configuration files.\n+ [plone devs] 2a5f5557\n+\n+\n+## 6.0.4 (2023-04-24)\n+\n+\n+### Bug fixes:\n+\n+- Prepare 6.0.4 final. No changes compared to the release candidate.\n+ [maurits] #604\n+\ndiff --git a/plone/releaser/tests/test_changelog.py b/plone/releaser/tests/test_changelog.py\nindex 5f69457..73239ec 100644\n--- a/plone/releaser/tests/test_changelog.py\n+++ b/plone/releaser/tests/test_changelog.py\n@@ -5,11 +5,12 @@\n \n TESTS_DIR = pathlib.Path(__file__).parent\n INPUT_DIR = TESTS_DIR / "input"\n-CHANGES_FILE = INPUT_DIR / "changes.rst"\n+CHANGES_RST = INPUT_DIR / "changes.rst"\n+CHANGES_MD = INPUT_DIR / "changes.md"\n \n \n-def test_get_changes():\n- cf = Changelog(CHANGES_FILE)\n+def test_get_changes_rst():\n+ cf = Changelog(CHANGES_RST)\n assert "3.0.2" in cf\n assert "3.0.3" in cf\n assert sorted(list(cf.get("3.0.3").keys())) == ["Bug fixes:", "Internal:", "other"]\n@@ -24,3 +25,19 @@ def test_get_changes():\n "Internal:",\n "Update configuration files.\\n[plone devs] (55bda5c9)",\n ]\n+\n+\n+def test_get_changes_md():\n+ cf = Changelog(CHANGES_MD)\n+ assert "6.0.5rc1" in cf\n+ assert "6.0.4" in cf\n+ # assert sorted(list(cf.get("6.0.5rc1").keys())) == ["Bug fixes:", "Internal:"]\n+ assert cf.get_changes("6.0.5rc1") == []\n+ assert cf.get_changes("6.0.4") == [\n+ "Bug fixes:",\n+ "Do not truncate the sortable_title index\\n[erral] #3690",\n+ "Fix password validation tests. [tschorr] #3784",\n+ "Updated metadata version to 6016.\\n[maurits] #6016",\n+ "Internal:",\n+ "Update configuration files.\\n[plone devs] 2a5f5557",\n+ ]\n' - -Repository: plone.releaser - - -Branch: refs/heads/master -Date: 2023-12-05T18:51:55+01:00 -Author: Maurits van Rees (mauritsvanrees) -Commit: https://github.com/plone/plone.releaser/commit/2368be5d9434902e35fb0d17200a6a5d60539955 - -In Changelog turn bytes content into string. +upgrade dependencies Files changed: -M plone/releaser/changelog.py -M plone/releaser/tests/test_changelog.py +M package-lock.json +M package.json -b'diff --git a/plone/releaser/changelog.py b/plone/releaser/changelog.py\nindex e1f8d06..c7ac40b 100644\n--- a/plone/releaser/changelog.py\n+++ b/plone/releaser/changelog.py\n@@ -87,6 +87,8 @@ class Changelog:\n def __init__(self, file_location=None, content=None):\n self.data = OrderedDict()\n if content is not None:\n+ if isinstance(content, bytes):\n+ content = content.decode("utf-8")\n self._parse(content)\n elif file_location is not None:\n with open(file_location) as f:\n@@ -95,6 +97,9 @@ def __init__(self, file_location=None, content=None):\n def __iter__(self):\n return self.data.__iter__()\n \n+ def __eq__(self, other):\n+ return self.data == other.data\n+\n def iteritems(self):\n return self.data.items()\n \ndiff --git a/plone/releaser/tests/test_changelog.py b/plone/releaser/tests/test_changelog.py\nindex 73239ec..8075658 100644\n--- a/plone/releaser/tests/test_changelog.py\n+++ b/plone/releaser/tests/test_changelog.py\n@@ -41,3 +41,14 @@ def test_get_changes_md():\n "Internal:",\n "Update configuration files.\\n[plone devs] 2a5f5557",\n ]\n+\n+\n+def test_get_changes_content():\n+ from_file = Changelog(CHANGES_RST)\n+ from_string = Changelog(content=CHANGES_RST.read_bytes())\n+ from_bytes = Changelog(content=CHANGES_RST.read_bytes())\n+ assert "3.0.2" in from_file\n+ assert "3.0.2" in from_string\n+ assert "3.0.2" in from_bytes\n+ assert from_file == from_string\n+ assert from_string == from_bytes\n' +b'diff --git a/package-lock.json b/package-lock.json\nindex 7b74ad9e..8bb38222 100644\n--- a/package-lock.json\n+++ b/package-lock.json\n@@ -12,25 +12,25 @@\n "bootstrap": "5.3.2"\n },\n "devDependencies": {\n- "autoprefixer": "^10.4.13",\n- "clean-css-cli": "^5.6.2",\n- "nodemon": "^3.0.1",\n+ "autoprefixer": "^10.4.16",\n+ "clean-css-cli": "^5.6.3",\n+ "nodemon": "^3.0.2",\n "npm-run-all": "^4.1.5",\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-cli": "^10.1.0",\n- "sass": "^1.58.3",\n+ "sass": "^1.69.5",\n "stylelint": "^15.11.0",\n "stylelint-config-twbs-bootstrap": "^11.0.1",\n- "tinymce": "^6.7.1"\n+ "tinymce": "^6.8.2"\n }\n },\n "node_modules/@babel/code-frame": {\n- "version": "7.22.13",\n- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",\n- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",\n+ "version": "7.23.5",\n+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",\n+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",\n "dev": true,\n "dependencies": {\n- "@babel/highlight": "^7.22.13",\n+ "@babel/highlight": "^7.23.4",\n "chalk": "^2.4.2"\n },\n "engines": {\n@@ -47,9 +47,9 @@\n }\n },\n "node_modules/@babel/highlight": {\n- "version": "7.22.20",\n- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",\n- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",\n+ "version": "7.23.4",\n+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",\n+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",\n "dev": true,\n "dependencies": {\n "@babel/helper-validator-identifier": "^7.22.20",\n@@ -192,15 +192,15 @@\n }\n },\n "node_modules/@types/minimist": {\n- "version": "1.2.4",\n- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz",\n- "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==",\n+ "version": "1.2.5",\n+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",\n+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",\n "dev": true\n },\n "node_modules/@types/normalize-package-data": {\n- "version": "2.4.3",\n- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz",\n- "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==",\n+ "version": "2.4.4",\n+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",\n+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",\n "dev": true\n },\n "node_modules/abbrev": {\n@@ -327,9 +327,9 @@\n }\n },\n "node_modules/autoprefixer": {\n- "version": "10.4.15",\n- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",\n- "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",\n+ "version": "10.4.16",\n+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",\n+ "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",\n "dev": true,\n "funding": [\n {\n@@ -347,8 +347,8 @@\n ],\n "dependencies": {\n "browserslist": "^4.21.10",\n- "caniuse-lite": "^1.0.30001520",\n- "fraction.js": "^4.2.0",\n+ "caniuse-lite": "^1.0.30001538",\n+ "fraction.js": "^4.3.6",\n "normalize-range": "^0.1.2",\n "picocolors": "^1.0.0",\n "postcss-value-parser": "^4.2.0"\n@@ -431,9 +431,9 @@\n }\n },\n "node_modules/browserslist": {\n- "version": "4.21.10",\n- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",\n- "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",\n+ "version": "4.22.2",\n+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",\n+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",\n "dev": true,\n "funding": [\n {\n@@ -450,10 +450,10 @@\n }\n ],\n "dependencies": {\n- "caniuse-lite": "^1.0.30001517",\n- "electron-to-chromium": "^1.4.477",\n- "node-releases": "^2.0.13",\n- "update-browserslist-db": "^1.0.11"\n+ "caniuse-lite": "^1.0.30001565",\n+ "electron-to-chromium": "^1.4.601",\n+ "node-releases": "^2.0.14",\n+ "update-browserslist-db": "^1.0.13"\n },\n "bin": {\n "browserslist": "cli.js"\n@@ -463,13 +463,14 @@\n }\n },\n "node_modules/call-bind": {\n- "version": "1.0.2",\n- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",\n- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",\n+ "version": "1.0.5",\n+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",\n+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",\n "dev": true,\n "dependencies": {\n- "function-bind": "^1.1.1",\n- "get-intrinsic": "^1.0.2"\n+ "function-bind": "^1.1.2",\n+ "get-intrinsic": "^1.2.1",\n+ "set-function-length": "^1.1.1"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -515,9 +516,9 @@\n }\n },\n "node_modules/caniuse-lite": {\n- "version": "1.0.30001538",\n- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz",\n- "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==",\n+ "version": "1.0.30001568",\n+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz",\n+ "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==",\n "dev": true,\n "funding": [\n {\n@@ -576,9 +577,9 @@\n }\n },\n "node_modules/clean-css": {\n- "version": "5.3.2",\n- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",\n- "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",\n+ "version": "5.3.3",\n+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",\n+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",\n "dev": true,\n "dependencies": {\n "source-map": "~0.6.0"\n@@ -588,13 +589,13 @@\n }\n },\n "node_modules/clean-css-cli": {\n- "version": "5.6.2",\n- "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.2.tgz",\n- "integrity": "sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==",\n+ "version": "5.6.3",\n+ "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.3.tgz",\n+ "integrity": "sha512-MUAta8pEqA/d2DKQwtZU5nm0Og8TCyAglOx3GlWwjhGdKBwY4kVF6E5M6LU/jmmuswv+HbYqG/dKKkq5p1dD0A==",\n "dev": true,\n "dependencies": {\n "chokidar": "^3.5.2",\n- "clean-css": "^5.3.2",\n+ "clean-css": "^5.3.3",\n "commander": "7.x",\n "glob": "^7.1.6"\n },\n@@ -715,6 +716,15 @@\n "node": ">=4.8"\n }\n },\n+ "node_modules/cross-spawn/node_modules/semver": {\n+ "version": "5.7.2",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "dev": true,\n+ "bin": {\n+ "semver": "bin/semver"\n+ }\n+ },\n "node_modules/css-functions-list": {\n "version": "3.2.1",\n "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",\n@@ -750,12 +760,20 @@\n }\n },\n "node_modules/debug": {\n- "version": "3.2.7",\n- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",\n- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",\n+ "version": "4.3.4",\n+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",\n+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",\n "dev": true,\n "dependencies": {\n- "ms": "^2.1.1"\n+ "ms": "2.1.2"\n+ },\n+ "engines": {\n+ "node": ">=6.0"\n+ },\n+ "peerDependenciesMeta": {\n+ "supports-color": {\n+ "optional": true\n+ }\n }\n },\n "node_modules/decamelize": {\n@@ -805,9 +823,9 @@\n }\n },\n "node_modules/define-data-property": {\n- "version": "1.1.0",\n- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz",\n- "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==",\n+ "version": "1.1.1",\n+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",\n+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",\n "dev": true,\n "dependencies": {\n "get-intrinsic": "^1.2.1",\n@@ -857,9 +875,9 @@\n }\n },\n "node_modules/electron-to-chromium": {\n- "version": "1.4.523",\n- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz",\n- "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==",\n+ "version": "1.4.610",\n+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz",\n+ "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==",\n "dev": true\n },\n "node_modules/emoji-regex": {\n@@ -878,26 +896,26 @@\n }\n },\n "node_modules/es-abstract": {\n- "version": "1.22.2",\n- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz",\n- "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==",\n+ "version": "1.22.3",\n+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",\n+ "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",\n "dev": true,\n "dependencies": {\n "array-buffer-byte-length": "^1.0.0",\n "arraybuffer.prototype.slice": "^1.0.2",\n "available-typed-arrays": "^1.0.5",\n- "call-bind": "^1.0.2",\n+ "call-bind": "^1.0.5",\n "es-set-tostringtag": "^2.0.1",\n "es-to-primitive": "^1.2.1",\n "function.prototype.name": "^1.1.6",\n- "get-intrinsic": "^1.2.1",\n+ "get-intrinsic": "^1.2.2",\n "get-symbol-description": "^1.0.0",\n "globalthis": "^1.0.3",\n "gopd": "^1.0.1",\n- "has": "^1.0.3",\n "has-property-descriptors": "^1.0.0",\n "has-proto": "^1.0.1",\n "has-symbols": "^1.0.3",\n+ "hasown": "^2.0.0",\n "internal-slot": "^1.0.5",\n "is-array-buffer": "^3.0.2",\n "is-callable": "^1.2.7",\n@@ -907,7 +925,7 @@\n "is-string": "^1.0.7",\n "is-typed-array": "^1.1.12",\n "is-weakref": "^1.0.2",\n- "object-inspect": "^1.12.3",\n+ "object-inspect": "^1.13.1",\n "object-keys": "^1.1.1",\n "object.assign": "^4.1.4",\n "regexp.prototype.flags": "^1.5.1",\n@@ -921,7 +939,7 @@\n "typed-array-byte-offset": "^1.0.0",\n "typed-array-length": "^1.0.4",\n "unbox-primitive": "^1.0.2",\n- "which-typed-array": "^1.1.11"\n+ "which-typed-array": "^1.1.13"\n },\n "engines": {\n "node": ">= 0.4"\n@@ -931,14 +949,14 @@\n }\n },\n "node_modules/es-set-tostringtag": {\n- "version": "2.0.1",\n- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",\n- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",\n+ "version": "2.0.2",\n+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",\n+ "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.1.3",\n- "has": "^1.0.3",\n- "has-tostringtag": "^1.0.0"\n+ "get-intrinsic": "^1.2.2",\n+ "has-tostringtag": "^1.0.0",\n+ "hasown": "^2.0.0"\n },\n "engines": {\n "node": ">= 0.4"\n@@ -986,9 +1004,9 @@\n "dev": true\n },\n "node_modules/fast-glob": {\n- "version": "3.3.1",\n- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",\n- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",\n+ "version": "3.3.2",\n+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",\n+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",\n "dev": true,\n "dependencies": {\n "@nodelib/fs.stat": "^2.0.2",\n@@ -1020,12 +1038,12 @@\n }\n },\n "node_modules/file-entry-cache": {\n- "version": "7.0.1",\n- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz",\n- "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==",\n+ "version": "7.0.2",\n+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz",\n+ "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==",\n "dev": true,\n "dependencies": {\n- "flat-cache": "^3.1.1"\n+ "flat-cache": "^3.2.0"\n },\n "engines": {\n "node": ">=12.0.0"\n@@ -1060,9 +1078,9 @@\n }\n },\n "node_modules/flat-cache": {\n- "version": "3.1.1",\n- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",\n- "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",\n+ "version": "3.2.0",\n+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",\n+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",\n "dev": true,\n "dependencies": {\n "flatted": "^3.2.9",\n@@ -1070,7 +1088,7 @@\n "rimraf": "^3.0.2"\n },\n "engines": {\n- "node": ">=12.0.0"\n+ "node": "^10.12.0 || >=12.0.0"\n }\n },\n "node_modules/flatted": {\n@@ -1089,9 +1107,9 @@\n }\n },\n "node_modules/fraction.js": {\n- "version": "4.3.6",\n- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz",\n- "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==",\n+ "version": "4.3.7",\n+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",\n+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",\n "dev": true,\n "engines": {\n "node": "*"\n@@ -1102,9 +1120,9 @@\n }\n },\n "node_modules/fs-extra": {\n- "version": "11.1.1",\n- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",\n- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",\n+ "version": "11.2.0",\n+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",\n+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",\n "dev": true,\n "dependencies": {\n "graceful-fs": "^4.2.0",\n@@ -1136,10 +1154,13 @@\n }\n },\n "node_modules/function-bind": {\n- "version": "1.1.1",\n- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",\n- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",\n- "dev": true\n+ "version": "1.1.2",\n+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",\n+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",\n+ "dev": true,\n+ "funding": {\n+ "url": "https://github.com/sponsors/ljharb"\n+ }\n },\n "node_modules/function.prototype.name": {\n "version": "1.1.6",\n@@ -1178,15 +1199,15 @@\n }\n },\n "node_modules/get-intrinsic": {\n- "version": "1.2.1",\n- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",\n- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",\n+ "version": "1.2.2",\n+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",\n+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",\n "dev": true,\n "dependencies": {\n- "function-bind": "^1.1.1",\n- "has": "^1.0.3",\n+ "function-bind": "^1.1.2",\n "has-proto": "^1.0.1",\n- "has-symbols": "^1.0.3"\n+ "has-symbols": "^1.0.3",\n+ "hasown": "^2.0.0"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1357,18 +1378,6 @@\n "node": ">=6"\n }\n },\n- "node_modules/has": {\n- "version": "1.0.3",\n- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",\n- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",\n- "dev": true,\n- "dependencies": {\n- "function-bind": "^1.1.1"\n- },\n- "engines": {\n- "node": ">= 0.4.0"\n- }\n- },\n "node_modules/has-bigints": {\n "version": "1.0.2",\n "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",\n@@ -1388,12 +1397,12 @@\n }\n },\n "node_modules/has-property-descriptors": {\n- "version": "1.0.0",\n- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",\n- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",\n+ "version": "1.0.1",\n+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",\n+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.1.1"\n+ "get-intrinsic": "^1.2.2"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1438,6 +1447,18 @@\n "url": "https://github.com/sponsors/ljharb"\n }\n },\n+ "node_modules/hasown": {\n+ "version": "2.0.0",\n+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",\n+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",\n+ "dev": true,\n+ "dependencies": {\n+ "function-bind": "^1.1.2"\n+ },\n+ "engines": {\n+ "node": ">= 0.4"\n+ }\n+ },\n "node_modules/hosted-git-info": {\n "version": "2.8.9",\n "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",\n@@ -1457,9 +1478,9 @@\n }\n },\n "node_modules/ignore": {\n- "version": "5.2.4",\n- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",\n- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",\n+ "version": "5.3.0",\n+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",\n+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",\n "dev": true,\n "engines": {\n "node": ">= 4"\n@@ -1555,13 +1576,13 @@\n "dev": true\n },\n "node_modules/internal-slot": {\n- "version": "1.0.5",\n- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",\n- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",\n+ "version": "1.0.6",\n+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",\n+ "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.2.0",\n- "has": "^1.0.3",\n+ "get-intrinsic": "^1.2.2",\n+ "hasown": "^2.0.0",\n "side-channel": "^1.0.4"\n },\n "engines": {\n@@ -1641,12 +1662,12 @@\n }\n },\n "node_modules/is-core-module": {\n- "version": "2.13.0",\n- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",\n- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",\n+ "version": "2.13.1",\n+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",\n+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",\n "dev": true,\n "dependencies": {\n- "has": "^1.0.3"\n+ "hasown": "^2.0.0"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1927,12 +1948,12 @@\n "dev": true\n },\n "node_modules/lilconfig": {\n- "version": "2.1.0",\n- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",\n- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",\n+ "version": "3.0.0",\n+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",\n+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",\n "dev": true,\n "engines": {\n- "node": ">=10"\n+ "node": ">=14"\n }\n },\n "node_modules/lines-and-columns": {\n@@ -2088,21 +2109,6 @@\n "node": ">=10"\n }\n },\n- "node_modules/meow/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/merge2": {\n "version": "1.4.1",\n "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",\n@@ -2161,15 +2167,15 @@\n }\n },\n "node_modules/ms": {\n- "version": "2.1.3",\n- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",\n- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",\n+ "version": "2.1.2",\n+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\n+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",\n "dev": true\n },\n "node_modules/nanoid": {\n- "version": "3.3.6",\n- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",\n- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",\n+ "version": "3.3.7",\n+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",\n+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",\n "dev": true,\n "funding": [\n {\n@@ -2191,19 +2197,19 @@\n "dev": true\n },\n "node_modules/node-releases": {\n- "version": "2.0.13",\n- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",\n- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",\n+ "version": "2.0.14",\n+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",\n+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",\n "dev": true\n },\n "node_modules/nodemon": {\n- "version": "3.0.1",\n- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",\n- "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",\n+ "version": "3.0.2",\n+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz",\n+ "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==",\n "dev": true,\n "dependencies": {\n "chokidar": "^3.5.2",\n- "debug": "^3.2.7",\n+ "debug": "^4",\n "ignore-by-default": "^1.0.1",\n "minimatch": "^3.1.2",\n "pstree.remy": "^1.1.8",\n@@ -2224,21 +2230,6 @@\n "url": "https://opencollective.com/nodemon"\n }\n },\n- "node_modules/nodemon/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/nopt": {\n "version": "1.0.10",\n "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",\n@@ -2266,6 +2257,15 @@\n "validate-npm-package-license": "^3.0.1"\n }\n },\n+ "node_modules/normalize-package-data/node_modules/semver": {\n+ "version": "5.7.2",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "dev": true,\n+ "bin": {\n+ "semver": "bin/semver"\n+ }\n+ },\n "node_modules/normalize-path": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",\n@@ -2310,9 +2310,9 @@\n }\n },\n "node_modules/object-inspect": {\n- "version": "1.12.3",\n- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",\n- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",\n+ "version": "1.13.1",\n+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",\n+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",\n "dev": true,\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -2328,13 +2328,13 @@\n }\n },\n "node_modules/object.assign": {\n- "version": "4.1.4",\n- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",\n- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",\n+ "version": "4.1.5",\n+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",\n+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",\n "dev": true,\n "dependencies": {\n- "call-bind": "^1.0.2",\n- "define-properties": "^1.1.4",\n+ "call-bind": "^1.0.5",\n+ "define-properties": "^1.2.1",\n "has-symbols": "^1.0.3",\n "object-keys": "^1.1.1"\n },\n@@ -2491,9 +2491,9 @@\n }\n },\n "node_modules/postcss": {\n- "version": "8.4.31",\n- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",\n- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",\n+ "version": "8.4.32",\n+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",\n+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",\n "dev": true,\n "funding": [\n {\n@@ -2510,7 +2510,7 @@\n }\n ],\n "dependencies": {\n- "nanoid": "^3.3.6",\n+ "nanoid": "^3.3.7",\n "picocolors": "^1.0.0",\n "source-map-js": "^1.0.2"\n },\n@@ -2548,21 +2548,27 @@\n }\n },\n "node_modules/postcss-load-config": {\n- "version": "4.0.1",\n- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",\n- "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",\n+ "version": "4.0.2",\n+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",\n+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",\n "dev": true,\n+ "funding": [\n+ {\n+ "type": "opencollective",\n+ "url": "https://opencollective.com/postcss/"\n+ },\n+ {\n+ "type": "github",\n+ "url": "https://github.com/sponsors/ai"\n+ }\n+ ],\n "dependencies": {\n- "lilconfig": "^2.0.5",\n- "yaml": "^2.1.1"\n+ "lilconfig": "^3.0.0",\n+ "yaml": "^2.3.4"\n },\n "engines": {\n "node": ">= 14"\n },\n- "funding": {\n- "type": "opencollective",\n- "url": "https://opencollective.com/postcss/"\n- },\n "peerDependencies": {\n "postcss": ">=8.0.9",\n "ts-node": ">=9.0.0"\n@@ -2694,9 +2700,9 @@\n "dev": true\n },\n "node_modules/punycode": {\n- "version": "2.3.0",\n- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",\n- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",\n+ "version": "2.3.1",\n+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",\n+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",\n "dev": true,\n "engines": {\n "node": ">=6"\n@@ -2837,21 +2843,6 @@\n "url": "https://github.com/sponsors/sindresorhus"\n }\n },\n- "node_modules/read-pkg-up/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/read-pkg/node_modules/path-type": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",\n@@ -2937,9 +2928,9 @@\n }\n },\n "node_modules/resolve": {\n- "version": "1.22.6",\n- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",\n- "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",\n+ "version": "1.22.8",\n+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",\n+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",\n "dev": true,\n "dependencies": {\n "is-core-module": "^2.13.0",\n@@ -3043,9 +3034,9 @@\n }\n },\n "node_modules/sass": {\n- "version": "1.67.0",\n- "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz",\n- "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==",\n+ "version": "1.69.5",\n+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",\n+ "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",\n "dev": true,\n "dependencies": {\n "chokidar": ">=3.0.0 <4.0.0",\n@@ -3060,12 +3051,33 @@\n }\n },\n "node_modules/semver": {\n- "version": "5.7.2",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "version": "7.5.4",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n "dev": true,\n+ "dependencies": {\n+ "lru-cache": "^6.0.0"\n+ },\n "bin": {\n- "semver": "bin/semver"\n+ "semver": "bin/semver.js"\n+ },\n+ "engines": {\n+ "node": ">=10"\n+ }\n+ },\n+ "node_modules/set-function-length": {\n+ "version": "1.1.1",\n+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",\n+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",\n+ "dev": true,\n+ "dependencies": {\n+ "define-data-property": "^1.1.1",\n+ "get-intrinsic": "^1.2.1",\n+ "gopd": "^1.0.1",\n+ "has-property-descriptors": "^1.0.0"\n+ },\n+ "engines": {\n+ "node": ">= 0.4"\n }\n },\n "node_modules/set-function-name": {\n@@ -3150,21 +3162,6 @@\n "node": ">=10"\n }\n },\n- "node_modules/simple-update-notifier/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/slash": {\n "version": "5.1.0",\n "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",\n@@ -3272,9 +3269,9 @@\n }\n },\n "node_modules/spdx-license-ids": {\n- "version": "3.0.14",\n- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.14.tgz",\n- "integrity": "sha512-U0eS5wcpu/O2/QZk6PcAMOA8H3ZuvRe4mFHA3Q+LNl1SRDmfQ+mD3RoD6tItqnvqubJ32m/zV2Z/ikSmxccD1Q==",\n+ "version": "3.0.16",\n+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",\n+ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",\n "dev": true\n },\n "node_modules/string-width": {\n@@ -3454,9 +3451,9 @@\n }\n },\n "node_modules/stylelint-config-recess-order": {\n- "version": "4.3.0",\n- "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.3.0.tgz",\n- "integrity": "sha512-EWVtxZ8oq4/meTrRNUDrS5TqMz6TX72JjKDwVQq0JJDXE+P/o7UuFw3wWV/0O9yvJfh/da6nJY71ZUn/wSfB4g==",\n+ "version": "4.4.0",\n+ "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.4.0.tgz",\n+ "integrity": "sha512-Q99kvZyIM/aoPEV4dRDkzD3fZLzH0LXi+pawCf1r700uUeF/PHQ5PZXjwFUuGrWhOzd1N+cuVm+OUGsY2fRN5A==",\n "dev": true,\n "dependencies": {\n "stylelint-order": "6.x"\n@@ -3555,25 +3552,25 @@\n }\n },\n "node_modules/stylelint-order": {\n- "version": "6.0.3",\n- "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.3.tgz",\n- "integrity": "sha512-1j1lOb4EU/6w49qZeT2SQVJXm0Ht+Qnq9GMfUa3pMwoyojIWfuA+JUDmoR97Bht1RLn4ei0xtLGy87M7d29B1w==",\n+ "version": "6.0.4",\n+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz",\n+ "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==",\n "dev": true,\n "dependencies": {\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-sorting": "^8.0.2"\n },\n "peerDependencies": {\n- "stylelint": "^14.0.0 || ^15.0.0"\n+ "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1"\n }\n },\n "node_modules/stylelint-scss": {\n- "version": "5.2.1",\n- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.2.1.tgz",\n- "integrity": "sha512-ZoTJUM85/qqpQHfEppjW/St//8s6p9Qsg8deWlYlr56F9iUgC9vXeIDQvH4odkRRJLTLFQzYMALSOFCQ3MDkgw==",\n+ "version": "5.3.2",\n+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz",\n+ "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==",\n "dev": true,\n "dependencies": {\n- "known-css-properties": "^0.28.0",\n+ "known-css-properties": "^0.29.0",\n "postcss-media-query-parser": "^0.2.3",\n "postcss-resolve-nested-selector": "^0.1.1",\n "postcss-selector-parser": "^6.0.13",\n@@ -3583,12 +3580,6 @@\n "stylelint": "^14.5.1 || ^15.0.0"\n }\n },\n- "node_modules/stylelint-scss/node_modules/known-css-properties": {\n- "version": "0.28.0",\n- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",\n- "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==",\n- "dev": true\n- },\n "node_modules/stylelint-stylistic": {\n "version": "0.4.3",\n "resolved": "https://registry.npmjs.org/stylelint-stylistic/-/stylelint-stylistic-0.4.3.tgz",\n@@ -3611,23 +3602,6 @@\n "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",\n "dev": true\n },\n- "node_modules/stylelint/node_modules/debug": {\n- "version": "4.3.4",\n- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",\n- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",\n- "dev": true,\n- "dependencies": {\n- "ms": "2.1.2"\n- },\n- "engines": {\n- "node": ">=6.0"\n- },\n- "peerDependenciesMeta": {\n- "supports-color": {\n- "optional": true\n- }\n- }\n- },\n "node_modules/stylelint/node_modules/globby": {\n "version": "11.1.0",\n "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",\n@@ -3648,12 +3622,6 @@\n "url": "https://github.com/sponsors/sindresorhus"\n }\n },\n- "node_modules/stylelint/node_modules/ms": {\n- "version": "2.1.2",\n- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\n- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",\n- "dev": true\n- },\n "node_modules/stylelint/node_modules/slash": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",\n@@ -3750,9 +3718,9 @@\n "dev": true\n },\n "node_modules/tinymce": {\n- "version": "6.7.1",\n- "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.1.tgz",\n- "integrity": "sha512-SIGJgWk2d/X59VbO+i81QfNx2EP1P5t+sza2/1So3OLGtmMBhEJMag7sN/Mo8sq4s0niwb65Z51yLju32jP11g==",\n+ "version": "6.8.2",\n+ "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.2.tgz",\n+ "integrity": "sha512-Lho79o2Y1Yn+XdlTEkHTEkEmzwYWTXz7IUsvPwxJF3VTtgHUIAAuBab29kik+f2KED3rZvQavr9D7sHVMJ9x4A==",\n "dev": true\n },\n "node_modules/to-regex-range": {\n@@ -3890,18 +3858,18 @@\n "dev": true\n },\n "node_modules/universalify": {\n- "version": "2.0.0",\n- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",\n- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",\n+ "version": "2.0.1",\n+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",\n+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",\n "dev": true,\n "engines": {\n "node": ">= 10.0.0"\n }\n },\n "node_modules/update-browserslist-db": {\n- "version": "1.0.11",\n- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",\n- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",\n+ "version": "1.0.13",\n+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",\n+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",\n "dev": true,\n "funding": [\n {\n@@ -3982,13 +3950,13 @@\n }\n },\n "node_modules/which-typed-array": {\n- "version": "1.1.11",\n- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",\n- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",\n+ "version": "1.1.13",\n+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",\n+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",\n "dev": true,\n "dependencies": {\n "available-typed-arrays": "^1.0.5",\n- "call-bind": "^1.0.2",\n+ "call-bind": "^1.0.4",\n "for-each": "^0.3.3",\n "gopd": "^1.0.1",\n "has-tostringtag": "^1.0.0"\n@@ -4085,9 +4053,9 @@\n "dev": true\n },\n "node_modules/yaml": {\n- "version": "2.3.2",\n- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz",\n- "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==",\n+ "version": "2.3.4",\n+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",\n+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",\n "dev": true,\n "engines": {\n "node": ">= 14"\ndiff --git a/package.json b/package.json\nindex 302d1b44..88cffe86 100644\n--- a/package.json\n+++ b/package.json\n@@ -23,16 +23,16 @@\n "css"\n ],\n "devDependencies": {\n- "autoprefixer": "^10.4.13",\n- "clean-css-cli": "^5.6.2",\n- "nodemon": "^3.0.1",\n+ "autoprefixer": "^10.4.16",\n+ "clean-css-cli": "^5.6.3",\n+ "nodemon": "^3.0.2",\n "npm-run-all": "^4.1.5",\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-cli": "^10.1.0",\n- "sass": "^1.58.3",\n+ "sass": "^1.69.5",\n "stylelint": "^15.11.0",\n "stylelint-config-twbs-bootstrap": "^11.0.1",\n- "tinymce": "^6.7.1"\n+ "tinymce": "^6.8.2"\n },\n "scripts": {\n "watch": "nodemon --watch scss/ --ext scss --exec \\"npm run css-main\\"",\n' -Repository: plone.releaser +Repository: plonetheme.barceloneta Branch: refs/heads/master -Date: 2023-12-07T10:23:35+01:00 -Author: Maurits van Rees (mauritsvanrees) -Commit: https://github.com/plone/plone.releaser/commit/849d81be520fddbc668dd46a9be02bbdb671faf7 - -manage changelog: add --package option. +Date: 2023-12-12T16:02:15+01:00 +Author: Peter Mathis (petschki) +Commit: https://github.com/plone/plonetheme.barceloneta/commit/fc2efddb2997bb93a6588804f5585dd5f0d71895 -I see a problem getting the changelog from plone.restapi, so it is useful to be able to restrict the command to this package. -Found the problem: the start version of plone.restapi is not included in its CHANGES.rst on the main branch. -Explained this corner case in the new help text. +changenote Files changed: -M plone/releaser/changelog.py -M plone/releaser/manage.py +A news/356.bugfix +M package.json -b'diff --git a/plone/releaser/changelog.py b/plone/releaser/changelog.py\nindex c7ac40b..b3183df 100644\n--- a/plone/releaser/changelog.py\n+++ b/plone/releaser/changelog.py\n@@ -85,6 +85,8 @@ def get_changelog(package_name):\n \n class Changelog:\n def __init__(self, file_location=None, content=None):\n+ self.file_location = file_location\n+ self.content = content\n self.data = OrderedDict()\n if content is not None:\n if isinstance(content, bytes):\n@@ -114,11 +116,15 @@ def get_changes(self, start_version, end_version=None):\n try:\n end_version_index = versions.index(str(end_version))\n except ValueError:\n- raise ValueError(f"Unknown version {end_version}")\n+ raise ValueError(\n+ f"End version {end_version} not found in changelog contents."\n+ )\n try:\n start_version_index = versions.index(str(start_version))\n except ValueError:\n- raise ValueError(f"Unknown version {start_version}")\n+ raise ValueError(\n+ f"Start version {start_version} not found in changelog contents."\n+ )\n \n newer_releases = versions[end_version_index:start_version_index]\n changes = defaultdict(list)\n@@ -250,7 +256,7 @@ def _parse(self, content):\n self._parse_md(content)\n \n \n-def build_unified_changelog(start_version, end_version):\n+def build_unified_changelog(start_version, end_version, packages=None):\n try:\n prior_versions = pull_versions(start_version)\n current_versions = pull_versions(end_version)\n@@ -258,9 +264,15 @@ def build_unified_changelog(start_version, end_version):\n print(e)\n return\n \n+ if isinstance(packages, str):\n+ packages = packages.split(",")\n+\n output_str = ""\n try:\n for package, version in current_versions.items():\n+ if packages is not None and package not in packages:\n+ # We are not interested in this package.\n+ continue\n if package in prior_versions:\n prior_version = prior_versions[package]\n try:\n@@ -279,13 +291,13 @@ def build_unified_changelog(start_version, end_version):\n \n logtext = get_changelog(package)\n if not logtext:\n- print("No changelog found.")\n+ print("WARNING: No changelog found.")\n continue\n changelog = Changelog(content=logtext)\n try:\n changes = changelog.get_changes(prior_version, version)\n except ValueError as e:\n- print(e)\n+ print(f"ERROR: {e}")\n else:\n bullet = "- "\n for change in changes:\ndiff --git a/plone/releaser/manage.py b/plone/releaser/manage.py\nindex 661155a..6a34519 100644\n--- a/plone/releaser/manage.py\n+++ b/plone/releaser/manage.py\n@@ -88,10 +88,47 @@ def checkAllPackagesForUpdates(**kwargs):\n @named("changelog")\n @arg("--start")\n @arg("--end", default="here")\n+@arg("--package", default=None)\n def changelog(**kwargs):\n+ """Build a unified changelog.\n+\n+ For each package we get the changes between the start and end version,\n+ and unify them, so the changes of all intermediate versions get combined:\n+ all bug fixes together, all new features, etcetera.\n+\n+ - \'start\' is for example 6.0.7.\n+ This is used to get versions.cfg from dist.plone.org.\n+ - Same for \'end\', where the default is \'here\', meaning we take\n+ versions.cfg from the current directory.\n+ - With \'package\' you can restrict to a single package.]\n+ This is mostly useful when debugging this command.\n+ You can separate packages with a comma:\n+ --package=plone.restapi,Products.CMFPlone\n+\n+ We get the changes from the repository for this package,\n+ as defined in sources.cfg, and try a few locations, for example:\n+ https://raw.githubusercontent.com/plone/plone.restapi/main/CHANGES.rst\n+\n+ Sample output in a problematic case:\n+\n+ $ bin/manage changelog --start=6.0.7 --end=6.0.8 --package=plone.restapi\n+ Parsed https://dist.plone.org/release/6.0.7/versions.cfg\n+ Parsed https://dist.plone.org/release/6.0.8/versions.cfg\n+ plone.restapi has a newer version\n+ ERROR: Start version 8.43.3 not found in changelog contents.\n+\n+ plone.restapi: 8.43.3 \xe2\x86\x92 9.1.2\n+ -----------------------------\n+\n+ The problem here is we get the CHANGES.rst file from the main plone.restapi branch,\n+ and this does not include a header for version 8.43.3: this header is only on the\n+ 8.x branch.\n+ When we run the same command with `--start=6.0.6`, it does work, and you get the\n+ unified changes between version 8.40.0 and 9.1.2.\n+ """\n from plone.releaser.changelog import build_unified_changelog\n \n- build_unified_changelog(kwargs["start"], kwargs["end"])\n+ build_unified_changelog(kwargs["start"], kwargs["end"], packages=kwargs["package"])\n \n \n def _get_checkouts(path=None):\n' +b'diff --git a/news/356.bugfix b/news/356.bugfix\nnew file mode 100644\nindex 00000000..5fb39e1c\n--- /dev/null\n+++ b/news/356.bugfix\n@@ -0,0 +1,2 @@\n+Upgrade dependencies.\n+[petschki]\ndiff --git a/package.json b/package.json\nindex 88cffe86..2340c02c 100644\n--- a/package.json\n+++ b/package.json\n@@ -1,7 +1,7 @@\n {\n "name": "@plone/plonetheme-barceloneta-base",\n "description": "Plone Theme Barceloneta Resources",\n- "version": "3.1.3",\n+ "version": "3.2.0-alpha.0",\n "files": [\n "/scss",\n "/plonetheme/barceloneta/theme/tinymce/*.css"\n' -Repository: plone.releaser +Repository: plonetheme.barceloneta Branch: refs/heads/master -Date: 2023-12-08T13:06:23+01:00 -Author: Gil Forcada Codinachs (gforcada) -Commit: https://github.com/plone/plone.releaser/commit/518ab4ec6170b122ebe803a2d9e1e9615f555ed1 +Date: 2023-12-12T21:59:02+01:00 +Author: Peter Mathis (petschki) +Commit: https://github.com/plone/plonetheme.barceloneta/commit/a67a336d71243619da8961c61f7e09d363b893e6 -Merge pull request #63 from plone/maurits-changelog-parse-markdown +Merge pull request #356 from plone/upgrade-dependencies -Manage changelog: read markdown files as well. +Upgrade dependencies Files changed: -A news/48.bugfix -A plone/releaser/tests/input/changes.md -M plone/releaser/changelog.py -M plone/releaser/manage.py -M plone/releaser/tests/test_changelog.py +A news/356.bugfix +M package-lock.json +M package.json -b'diff --git a/news/48.bugfix b/news/48.bugfix\nnew file mode 100644\nindex 0000000..98f3c32\n--- /dev/null\n+++ b/news/48.bugfix\n@@ -0,0 +1,2 @@\n+Manage changelog: read markdown files as well.\n+[maurits]\ndiff --git a/plone/releaser/changelog.py b/plone/releaser/changelog.py\nindex 00f0ce8..b3183df 100644\n--- a/plone/releaser/changelog.py\n+++ b/plone/releaser/changelog.py\n@@ -8,9 +8,12 @@\n from plone.releaser.release import OLD_HEADING_MAPPING\n from urllib.request import urlopen\n \n+import re\n \n-DIST_URL = "https://dist.plone.org/release/{0}/versions.cfg"\n \n+DIST_URL = "https://dist.plone.org/release/{0}/versions.cfg"\n+MD_HEADING_RE = re.compile(r"## (\\S*).*")\n+MD_SUB_HEADING_RE = re.compile(r"### (.*)")\n buildout = Buildout()\n \n \n@@ -62,7 +65,7 @@ def get_changelog(package_name):\n if not source_url:\n return ""\n file_names = ["CHANGES", "HISTORY"]\n- file_extensions = [".rst", ".txt"]\n+ file_extensions = [".rst", ".md", ".txt"]\n if "github" in source_url:\n paths = [f"{branch}/", f"{branch}/docs/"]\n else:\n@@ -82,8 +85,12 @@ def get_changelog(package_name):\n \n class Changelog:\n def __init__(self, file_location=None, content=None):\n+ self.file_location = file_location\n+ self.content = content\n self.data = OrderedDict()\n if content is not None:\n+ if isinstance(content, bytes):\n+ content = content.decode("utf-8")\n self._parse(content)\n elif file_location is not None:\n with open(file_location) as f:\n@@ -92,6 +99,9 @@ def __init__(self, file_location=None, content=None):\n def __iter__(self):\n return self.data.__iter__()\n \n+ def __eq__(self, other):\n+ return self.data == other.data\n+\n def iteritems(self):\n return self.data.items()\n \n@@ -106,11 +116,15 @@ def get_changes(self, start_version, end_version=None):\n try:\n end_version_index = versions.index(str(end_version))\n except ValueError:\n- raise ValueError(f"Unknown version {end_version}")\n+ raise ValueError(\n+ f"End version {end_version} not found in changelog contents."\n+ )\n try:\n start_version_index = versions.index(str(start_version))\n except ValueError:\n- raise ValueError(f"Unknown version {start_version}")\n+ raise ValueError(\n+ f"Start version {start_version} not found in changelog contents."\n+ )\n \n newer_releases = versions[end_version_index:start_version_index]\n changes = defaultdict(list)\n@@ -130,7 +144,7 @@ def latest(self):\n return list(self.data.items())[0]\n return None\n \n- def _parse(self, content):\n+ def _parse_rst(self, content):\n tree = publish_doctree(content)\n \n def is_valid_version_section(x):\n@@ -173,8 +187,76 @@ def is_list_item(x):\n entries[current] = [a.rawsource.strip() for a in list_items]\n self.data[version] = entries\n \n+ def _parse_md(self, content):\n+ # Parse as markdown.\n+ # I thought of using markdown-it-py, but I don\'t find it intuitive\n+ # enough for our use case. So try it "by hand".\n+\n+ def heading(text):\n+ if text in HEADINGS:\n+ return text\n+ # Might be an old heading or unknown.\n+ return OLD_HEADING_MAPPING.get(text, "other")\n \n-def build_unified_changelog(start_version, end_version):\n+ version = None\n+ current = "other"\n+ entries = defaultdict(list)\n+ list_item = None\n+ for line in content.splitlines():\n+ if not line.strip():\n+ continue\n+ match = MD_HEADING_RE.match(line)\n+ if match:\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ if version:\n+ # Store the previous version\n+ self.data[version] = entries\n+ list_item = None\n+ entries = defaultdict(list)\n+ current = "other"\n+ version = match.groups()[0]\n+ continue\n+ if not version:\n+ continue\n+ match = MD_SUB_HEADING_RE.match(line)\n+ if match:\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ list_item = None\n+ text = match.groups()[0]\n+ child_heading = heading(text)\n+ if child_heading:\n+ current = child_heading\n+ continue\n+ # Now look for the real entries: list items.\n+ if line.startswith("- ") or line.startswith("* "):\n+ if list_item:\n+ # add previous list item\n+ entries[current].append(list_item)\n+ # start new list item\n+ list_item = line[2:]\n+ continue\n+ if list_item:\n+ list_item += "\\n" + line.strip()\n+ if list_item:\n+ # Store the last list item.\n+ entries[current].append(list_item)\n+ if version:\n+ # Store the last version.\n+ self.data[version] = entries\n+\n+ def _parse(self, content):\n+ # Try to parse as restructuredtext.\n+ self._parse_rst(content)\n+ if not self.data:\n+ # Try to parse as markdown.\n+ self._parse_md(content)\n+\n+\n+def build_unified_changelog(start_version, end_version, packages=None):\n try:\n prior_versions = pull_versions(start_version)\n current_versions = pull_versions(end_version)\n@@ -182,9 +264,15 @@ def build_unified_changelog(start_version, end_version):\n print(e)\n return\n \n+ if isinstance(packages, str):\n+ packages = packages.split(",")\n+\n output_str = ""\n try:\n for package, version in current_versions.items():\n+ if packages is not None and package not in packages:\n+ # We are not interested in this package.\n+ continue\n if package in prior_versions:\n prior_version = prior_versions[package]\n try:\n@@ -203,13 +291,13 @@ def build_unified_changelog(start_version, end_version):\n \n logtext = get_changelog(package)\n if not logtext:\n- print("No changelog found.")\n+ print("WARNING: No changelog found.")\n continue\n changelog = Changelog(content=logtext)\n try:\n changes = changelog.get_changes(prior_version, version)\n except ValueError as e:\n- print(e)\n+ print(f"ERROR: {e}")\n else:\n bullet = "- "\n for change in changes:\ndiff --git a/plone/releaser/manage.py b/plone/releaser/manage.py\nindex 661155a..6a34519 100644\n--- a/plone/releaser/manage.py\n+++ b/plone/releaser/manage.py\n@@ -88,10 +88,47 @@ def checkAllPackagesForUpdates(**kwargs):\n @named("changelog")\n @arg("--start")\n @arg("--end", default="here")\n+@arg("--package", default=None)\n def changelog(**kwargs):\n+ """Build a unified changelog.\n+\n+ For each package we get the changes between the start and end version,\n+ and unify them, so the changes of all intermediate versions get combined:\n+ all bug fixes together, all new features, etcetera.\n+\n+ - \'start\' is for example 6.0.7.\n+ This is used to get versions.cfg from dist.plone.org.\n+ - Same for \'end\', where the default is \'here\', meaning we take\n+ versions.cfg from the current directory.\n+ - With \'package\' you can restrict to a single package.]\n+ This is mostly useful when debugging this command.\n+ You can separate packages with a comma:\n+ --package=plone.restapi,Products.CMFPlone\n+\n+ We get the changes from the repository for this package,\n+ as defined in sources.cfg, and try a few locations, for example:\n+ https://raw.githubusercontent.com/plone/plone.restapi/main/CHANGES.rst\n+\n+ Sample output in a problematic case:\n+\n+ $ bin/manage changelog --start=6.0.7 --end=6.0.8 --package=plone.restapi\n+ Parsed https://dist.plone.org/release/6.0.7/versions.cfg\n+ Parsed https://dist.plone.org/release/6.0.8/versions.cfg\n+ plone.restapi has a newer version\n+ ERROR: Start version 8.43.3 not found in changelog contents.\n+\n+ plone.restapi: 8.43.3 \xe2\x86\x92 9.1.2\n+ -----------------------------\n+\n+ The problem here is we get the CHANGES.rst file from the main plone.restapi branch,\n+ and this does not include a header for version 8.43.3: this header is only on the\n+ 8.x branch.\n+ When we run the same command with `--start=6.0.6`, it does work, and you get the\n+ unified changes between version 8.40.0 and 9.1.2.\n+ """\n from plone.releaser.changelog import build_unified_changelog\n \n- build_unified_changelog(kwargs["start"], kwargs["end"])\n+ build_unified_changelog(kwargs["start"], kwargs["end"], packages=kwargs["package"])\n \n \n def _get_checkouts(path=None):\ndiff --git a/plone/releaser/tests/input/changes.md b/plone/releaser/tests/input/changes.md\nnew file mode 100644\nindex 0000000..6acb43a\n--- /dev/null\n+++ b/plone/releaser/tests/input/changes.md\n@@ -0,0 +1,28 @@\n+Example MarkDown changelog from Products.CMFPlone package.\n+\n+## 6.0.5rc1 (2023-05-25)\n+\n+\n+### Bug fixes:\n+\n+- Do not truncate the sortable_title index\n+ [erral] #3690\n+- Fix password validation tests. [tschorr] #3784\n+- Updated metadata version to 6016.\n+ [maurits] #6016\n+\n+\n+### Internal:\n+\n+- Update configuration files.\n+ [plone devs] 2a5f5557\n+\n+\n+## 6.0.4 (2023-04-24)\n+\n+\n+### Bug fixes:\n+\n+- Prepare 6.0.4 final. No changes compared to the release candidate.\n+ [maurits] #604\n+\ndiff --git a/plone/releaser/tests/test_changelog.py b/plone/releaser/tests/test_changelog.py\nindex 5f69457..8075658 100644\n--- a/plone/releaser/tests/test_changelog.py\n+++ b/plone/releaser/tests/test_changelog.py\n@@ -5,11 +5,12 @@\n \n TESTS_DIR = pathlib.Path(__file__).parent\n INPUT_DIR = TESTS_DIR / "input"\n-CHANGES_FILE = INPUT_DIR / "changes.rst"\n+CHANGES_RST = INPUT_DIR / "changes.rst"\n+CHANGES_MD = INPUT_DIR / "changes.md"\n \n \n-def test_get_changes():\n- cf = Changelog(CHANGES_FILE)\n+def test_get_changes_rst():\n+ cf = Changelog(CHANGES_RST)\n assert "3.0.2" in cf\n assert "3.0.3" in cf\n assert sorted(list(cf.get("3.0.3").keys())) == ["Bug fixes:", "Internal:", "other"]\n@@ -24,3 +25,30 @@ def test_get_changes():\n "Internal:",\n "Update configuration files.\\n[plone devs] (55bda5c9)",\n ]\n+\n+\n+def test_get_changes_md():\n+ cf = Changelog(CHANGES_MD)\n+ assert "6.0.5rc1" in cf\n+ assert "6.0.4" in cf\n+ # assert sorted(list(cf.get("6.0.5rc1").keys())) == ["Bug fixes:", "Internal:"]\n+ assert cf.get_changes("6.0.5rc1") == []\n+ assert cf.get_changes("6.0.4") == [\n+ "Bug fixes:",\n+ "Do not truncate the sortable_title index\\n[erral] #3690",\n+ "Fix password validation tests. [tschorr] #3784",\n+ "Updated metadata version to 6016.\\n[maurits] #6016",\n+ "Internal:",\n+ "Update configuration files.\\n[plone devs] 2a5f5557",\n+ ]\n+\n+\n+def test_get_changes_content():\n+ from_file = Changelog(CHANGES_RST)\n+ from_string = Changelog(content=CHANGES_RST.read_bytes())\n+ from_bytes = Changelog(content=CHANGES_RST.read_bytes())\n+ assert "3.0.2" in from_file\n+ assert "3.0.2" in from_string\n+ assert "3.0.2" in from_bytes\n+ assert from_file == from_string\n+ assert from_string == from_bytes\n' +b'diff --git a/news/356.bugfix b/news/356.bugfix\nnew file mode 100644\nindex 00000000..5fb39e1c\n--- /dev/null\n+++ b/news/356.bugfix\n@@ -0,0 +1,2 @@\n+Upgrade dependencies.\n+[petschki]\ndiff --git a/package-lock.json b/package-lock.json\nindex 7b74ad9e..8bb38222 100644\n--- a/package-lock.json\n+++ b/package-lock.json\n@@ -12,25 +12,25 @@\n "bootstrap": "5.3.2"\n },\n "devDependencies": {\n- "autoprefixer": "^10.4.13",\n- "clean-css-cli": "^5.6.2",\n- "nodemon": "^3.0.1",\n+ "autoprefixer": "^10.4.16",\n+ "clean-css-cli": "^5.6.3",\n+ "nodemon": "^3.0.2",\n "npm-run-all": "^4.1.5",\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-cli": "^10.1.0",\n- "sass": "^1.58.3",\n+ "sass": "^1.69.5",\n "stylelint": "^15.11.0",\n "stylelint-config-twbs-bootstrap": "^11.0.1",\n- "tinymce": "^6.7.1"\n+ "tinymce": "^6.8.2"\n }\n },\n "node_modules/@babel/code-frame": {\n- "version": "7.22.13",\n- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",\n- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",\n+ "version": "7.23.5",\n+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",\n+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",\n "dev": true,\n "dependencies": {\n- "@babel/highlight": "^7.22.13",\n+ "@babel/highlight": "^7.23.4",\n "chalk": "^2.4.2"\n },\n "engines": {\n@@ -47,9 +47,9 @@\n }\n },\n "node_modules/@babel/highlight": {\n- "version": "7.22.20",\n- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",\n- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",\n+ "version": "7.23.4",\n+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",\n+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",\n "dev": true,\n "dependencies": {\n "@babel/helper-validator-identifier": "^7.22.20",\n@@ -192,15 +192,15 @@\n }\n },\n "node_modules/@types/minimist": {\n- "version": "1.2.4",\n- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz",\n- "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==",\n+ "version": "1.2.5",\n+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",\n+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",\n "dev": true\n },\n "node_modules/@types/normalize-package-data": {\n- "version": "2.4.3",\n- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz",\n- "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==",\n+ "version": "2.4.4",\n+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",\n+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",\n "dev": true\n },\n "node_modules/abbrev": {\n@@ -327,9 +327,9 @@\n }\n },\n "node_modules/autoprefixer": {\n- "version": "10.4.15",\n- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",\n- "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",\n+ "version": "10.4.16",\n+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",\n+ "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",\n "dev": true,\n "funding": [\n {\n@@ -347,8 +347,8 @@\n ],\n "dependencies": {\n "browserslist": "^4.21.10",\n- "caniuse-lite": "^1.0.30001520",\n- "fraction.js": "^4.2.0",\n+ "caniuse-lite": "^1.0.30001538",\n+ "fraction.js": "^4.3.6",\n "normalize-range": "^0.1.2",\n "picocolors": "^1.0.0",\n "postcss-value-parser": "^4.2.0"\n@@ -431,9 +431,9 @@\n }\n },\n "node_modules/browserslist": {\n- "version": "4.21.10",\n- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",\n- "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",\n+ "version": "4.22.2",\n+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",\n+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",\n "dev": true,\n "funding": [\n {\n@@ -450,10 +450,10 @@\n }\n ],\n "dependencies": {\n- "caniuse-lite": "^1.0.30001517",\n- "electron-to-chromium": "^1.4.477",\n- "node-releases": "^2.0.13",\n- "update-browserslist-db": "^1.0.11"\n+ "caniuse-lite": "^1.0.30001565",\n+ "electron-to-chromium": "^1.4.601",\n+ "node-releases": "^2.0.14",\n+ "update-browserslist-db": "^1.0.13"\n },\n "bin": {\n "browserslist": "cli.js"\n@@ -463,13 +463,14 @@\n }\n },\n "node_modules/call-bind": {\n- "version": "1.0.2",\n- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",\n- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",\n+ "version": "1.0.5",\n+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",\n+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",\n "dev": true,\n "dependencies": {\n- "function-bind": "^1.1.1",\n- "get-intrinsic": "^1.0.2"\n+ "function-bind": "^1.1.2",\n+ "get-intrinsic": "^1.2.1",\n+ "set-function-length": "^1.1.1"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -515,9 +516,9 @@\n }\n },\n "node_modules/caniuse-lite": {\n- "version": "1.0.30001538",\n- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz",\n- "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==",\n+ "version": "1.0.30001568",\n+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz",\n+ "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==",\n "dev": true,\n "funding": [\n {\n@@ -576,9 +577,9 @@\n }\n },\n "node_modules/clean-css": {\n- "version": "5.3.2",\n- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",\n- "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",\n+ "version": "5.3.3",\n+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",\n+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",\n "dev": true,\n "dependencies": {\n "source-map": "~0.6.0"\n@@ -588,13 +589,13 @@\n }\n },\n "node_modules/clean-css-cli": {\n- "version": "5.6.2",\n- "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.2.tgz",\n- "integrity": "sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==",\n+ "version": "5.6.3",\n+ "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.3.tgz",\n+ "integrity": "sha512-MUAta8pEqA/d2DKQwtZU5nm0Og8TCyAglOx3GlWwjhGdKBwY4kVF6E5M6LU/jmmuswv+HbYqG/dKKkq5p1dD0A==",\n "dev": true,\n "dependencies": {\n "chokidar": "^3.5.2",\n- "clean-css": "^5.3.2",\n+ "clean-css": "^5.3.3",\n "commander": "7.x",\n "glob": "^7.1.6"\n },\n@@ -715,6 +716,15 @@\n "node": ">=4.8"\n }\n },\n+ "node_modules/cross-spawn/node_modules/semver": {\n+ "version": "5.7.2",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "dev": true,\n+ "bin": {\n+ "semver": "bin/semver"\n+ }\n+ },\n "node_modules/css-functions-list": {\n "version": "3.2.1",\n "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",\n@@ -750,12 +760,20 @@\n }\n },\n "node_modules/debug": {\n- "version": "3.2.7",\n- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",\n- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",\n+ "version": "4.3.4",\n+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",\n+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",\n "dev": true,\n "dependencies": {\n- "ms": "^2.1.1"\n+ "ms": "2.1.2"\n+ },\n+ "engines": {\n+ "node": ">=6.0"\n+ },\n+ "peerDependenciesMeta": {\n+ "supports-color": {\n+ "optional": true\n+ }\n }\n },\n "node_modules/decamelize": {\n@@ -805,9 +823,9 @@\n }\n },\n "node_modules/define-data-property": {\n- "version": "1.1.0",\n- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz",\n- "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==",\n+ "version": "1.1.1",\n+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",\n+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",\n "dev": true,\n "dependencies": {\n "get-intrinsic": "^1.2.1",\n@@ -857,9 +875,9 @@\n }\n },\n "node_modules/electron-to-chromium": {\n- "version": "1.4.523",\n- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz",\n- "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==",\n+ "version": "1.4.610",\n+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz",\n+ "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==",\n "dev": true\n },\n "node_modules/emoji-regex": {\n@@ -878,26 +896,26 @@\n }\n },\n "node_modules/es-abstract": {\n- "version": "1.22.2",\n- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz",\n- "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==",\n+ "version": "1.22.3",\n+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",\n+ "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",\n "dev": true,\n "dependencies": {\n "array-buffer-byte-length": "^1.0.0",\n "arraybuffer.prototype.slice": "^1.0.2",\n "available-typed-arrays": "^1.0.5",\n- "call-bind": "^1.0.2",\n+ "call-bind": "^1.0.5",\n "es-set-tostringtag": "^2.0.1",\n "es-to-primitive": "^1.2.1",\n "function.prototype.name": "^1.1.6",\n- "get-intrinsic": "^1.2.1",\n+ "get-intrinsic": "^1.2.2",\n "get-symbol-description": "^1.0.0",\n "globalthis": "^1.0.3",\n "gopd": "^1.0.1",\n- "has": "^1.0.3",\n "has-property-descriptors": "^1.0.0",\n "has-proto": "^1.0.1",\n "has-symbols": "^1.0.3",\n+ "hasown": "^2.0.0",\n "internal-slot": "^1.0.5",\n "is-array-buffer": "^3.0.2",\n "is-callable": "^1.2.7",\n@@ -907,7 +925,7 @@\n "is-string": "^1.0.7",\n "is-typed-array": "^1.1.12",\n "is-weakref": "^1.0.2",\n- "object-inspect": "^1.12.3",\n+ "object-inspect": "^1.13.1",\n "object-keys": "^1.1.1",\n "object.assign": "^4.1.4",\n "regexp.prototype.flags": "^1.5.1",\n@@ -921,7 +939,7 @@\n "typed-array-byte-offset": "^1.0.0",\n "typed-array-length": "^1.0.4",\n "unbox-primitive": "^1.0.2",\n- "which-typed-array": "^1.1.11"\n+ "which-typed-array": "^1.1.13"\n },\n "engines": {\n "node": ">= 0.4"\n@@ -931,14 +949,14 @@\n }\n },\n "node_modules/es-set-tostringtag": {\n- "version": "2.0.1",\n- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",\n- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",\n+ "version": "2.0.2",\n+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",\n+ "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.1.3",\n- "has": "^1.0.3",\n- "has-tostringtag": "^1.0.0"\n+ "get-intrinsic": "^1.2.2",\n+ "has-tostringtag": "^1.0.0",\n+ "hasown": "^2.0.0"\n },\n "engines": {\n "node": ">= 0.4"\n@@ -986,9 +1004,9 @@\n "dev": true\n },\n "node_modules/fast-glob": {\n- "version": "3.3.1",\n- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",\n- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",\n+ "version": "3.3.2",\n+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",\n+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",\n "dev": true,\n "dependencies": {\n "@nodelib/fs.stat": "^2.0.2",\n@@ -1020,12 +1038,12 @@\n }\n },\n "node_modules/file-entry-cache": {\n- "version": "7.0.1",\n- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz",\n- "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==",\n+ "version": "7.0.2",\n+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz",\n+ "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==",\n "dev": true,\n "dependencies": {\n- "flat-cache": "^3.1.1"\n+ "flat-cache": "^3.2.0"\n },\n "engines": {\n "node": ">=12.0.0"\n@@ -1060,9 +1078,9 @@\n }\n },\n "node_modules/flat-cache": {\n- "version": "3.1.1",\n- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",\n- "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",\n+ "version": "3.2.0",\n+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",\n+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",\n "dev": true,\n "dependencies": {\n "flatted": "^3.2.9",\n@@ -1070,7 +1088,7 @@\n "rimraf": "^3.0.2"\n },\n "engines": {\n- "node": ">=12.0.0"\n+ "node": "^10.12.0 || >=12.0.0"\n }\n },\n "node_modules/flatted": {\n@@ -1089,9 +1107,9 @@\n }\n },\n "node_modules/fraction.js": {\n- "version": "4.3.6",\n- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz",\n- "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==",\n+ "version": "4.3.7",\n+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",\n+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",\n "dev": true,\n "engines": {\n "node": "*"\n@@ -1102,9 +1120,9 @@\n }\n },\n "node_modules/fs-extra": {\n- "version": "11.1.1",\n- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",\n- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",\n+ "version": "11.2.0",\n+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",\n+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",\n "dev": true,\n "dependencies": {\n "graceful-fs": "^4.2.0",\n@@ -1136,10 +1154,13 @@\n }\n },\n "node_modules/function-bind": {\n- "version": "1.1.1",\n- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",\n- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",\n- "dev": true\n+ "version": "1.1.2",\n+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",\n+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",\n+ "dev": true,\n+ "funding": {\n+ "url": "https://github.com/sponsors/ljharb"\n+ }\n },\n "node_modules/function.prototype.name": {\n "version": "1.1.6",\n@@ -1178,15 +1199,15 @@\n }\n },\n "node_modules/get-intrinsic": {\n- "version": "1.2.1",\n- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",\n- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",\n+ "version": "1.2.2",\n+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",\n+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",\n "dev": true,\n "dependencies": {\n- "function-bind": "^1.1.1",\n- "has": "^1.0.3",\n+ "function-bind": "^1.1.2",\n "has-proto": "^1.0.1",\n- "has-symbols": "^1.0.3"\n+ "has-symbols": "^1.0.3",\n+ "hasown": "^2.0.0"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1357,18 +1378,6 @@\n "node": ">=6"\n }\n },\n- "node_modules/has": {\n- "version": "1.0.3",\n- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",\n- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",\n- "dev": true,\n- "dependencies": {\n- "function-bind": "^1.1.1"\n- },\n- "engines": {\n- "node": ">= 0.4.0"\n- }\n- },\n "node_modules/has-bigints": {\n "version": "1.0.2",\n "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",\n@@ -1388,12 +1397,12 @@\n }\n },\n "node_modules/has-property-descriptors": {\n- "version": "1.0.0",\n- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",\n- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",\n+ "version": "1.0.1",\n+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",\n+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.1.1"\n+ "get-intrinsic": "^1.2.2"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1438,6 +1447,18 @@\n "url": "https://github.com/sponsors/ljharb"\n }\n },\n+ "node_modules/hasown": {\n+ "version": "2.0.0",\n+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",\n+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",\n+ "dev": true,\n+ "dependencies": {\n+ "function-bind": "^1.1.2"\n+ },\n+ "engines": {\n+ "node": ">= 0.4"\n+ }\n+ },\n "node_modules/hosted-git-info": {\n "version": "2.8.9",\n "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",\n@@ -1457,9 +1478,9 @@\n }\n },\n "node_modules/ignore": {\n- "version": "5.2.4",\n- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",\n- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",\n+ "version": "5.3.0",\n+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",\n+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",\n "dev": true,\n "engines": {\n "node": ">= 4"\n@@ -1555,13 +1576,13 @@\n "dev": true\n },\n "node_modules/internal-slot": {\n- "version": "1.0.5",\n- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",\n- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",\n+ "version": "1.0.6",\n+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",\n+ "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",\n "dev": true,\n "dependencies": {\n- "get-intrinsic": "^1.2.0",\n- "has": "^1.0.3",\n+ "get-intrinsic": "^1.2.2",\n+ "hasown": "^2.0.0",\n "side-channel": "^1.0.4"\n },\n "engines": {\n@@ -1641,12 +1662,12 @@\n }\n },\n "node_modules/is-core-module": {\n- "version": "2.13.0",\n- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",\n- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",\n+ "version": "2.13.1",\n+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",\n+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",\n "dev": true,\n "dependencies": {\n- "has": "^1.0.3"\n+ "hasown": "^2.0.0"\n },\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -1927,12 +1948,12 @@\n "dev": true\n },\n "node_modules/lilconfig": {\n- "version": "2.1.0",\n- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",\n- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",\n+ "version": "3.0.0",\n+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",\n+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",\n "dev": true,\n "engines": {\n- "node": ">=10"\n+ "node": ">=14"\n }\n },\n "node_modules/lines-and-columns": {\n@@ -2088,21 +2109,6 @@\n "node": ">=10"\n }\n },\n- "node_modules/meow/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/merge2": {\n "version": "1.4.1",\n "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",\n@@ -2161,15 +2167,15 @@\n }\n },\n "node_modules/ms": {\n- "version": "2.1.3",\n- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",\n- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",\n+ "version": "2.1.2",\n+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\n+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",\n "dev": true\n },\n "node_modules/nanoid": {\n- "version": "3.3.6",\n- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",\n- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",\n+ "version": "3.3.7",\n+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",\n+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",\n "dev": true,\n "funding": [\n {\n@@ -2191,19 +2197,19 @@\n "dev": true\n },\n "node_modules/node-releases": {\n- "version": "2.0.13",\n- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",\n- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",\n+ "version": "2.0.14",\n+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",\n+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",\n "dev": true\n },\n "node_modules/nodemon": {\n- "version": "3.0.1",\n- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",\n- "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",\n+ "version": "3.0.2",\n+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz",\n+ "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==",\n "dev": true,\n "dependencies": {\n "chokidar": "^3.5.2",\n- "debug": "^3.2.7",\n+ "debug": "^4",\n "ignore-by-default": "^1.0.1",\n "minimatch": "^3.1.2",\n "pstree.remy": "^1.1.8",\n@@ -2224,21 +2230,6 @@\n "url": "https://opencollective.com/nodemon"\n }\n },\n- "node_modules/nodemon/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/nopt": {\n "version": "1.0.10",\n "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",\n@@ -2266,6 +2257,15 @@\n "validate-npm-package-license": "^3.0.1"\n }\n },\n+ "node_modules/normalize-package-data/node_modules/semver": {\n+ "version": "5.7.2",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "dev": true,\n+ "bin": {\n+ "semver": "bin/semver"\n+ }\n+ },\n "node_modules/normalize-path": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",\n@@ -2310,9 +2310,9 @@\n }\n },\n "node_modules/object-inspect": {\n- "version": "1.12.3",\n- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",\n- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",\n+ "version": "1.13.1",\n+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",\n+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",\n "dev": true,\n "funding": {\n "url": "https://github.com/sponsors/ljharb"\n@@ -2328,13 +2328,13 @@\n }\n },\n "node_modules/object.assign": {\n- "version": "4.1.4",\n- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",\n- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",\n+ "version": "4.1.5",\n+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",\n+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",\n "dev": true,\n "dependencies": {\n- "call-bind": "^1.0.2",\n- "define-properties": "^1.1.4",\n+ "call-bind": "^1.0.5",\n+ "define-properties": "^1.2.1",\n "has-symbols": "^1.0.3",\n "object-keys": "^1.1.1"\n },\n@@ -2491,9 +2491,9 @@\n }\n },\n "node_modules/postcss": {\n- "version": "8.4.31",\n- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",\n- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",\n+ "version": "8.4.32",\n+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",\n+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",\n "dev": true,\n "funding": [\n {\n@@ -2510,7 +2510,7 @@\n }\n ],\n "dependencies": {\n- "nanoid": "^3.3.6",\n+ "nanoid": "^3.3.7",\n "picocolors": "^1.0.0",\n "source-map-js": "^1.0.2"\n },\n@@ -2548,21 +2548,27 @@\n }\n },\n "node_modules/postcss-load-config": {\n- "version": "4.0.1",\n- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",\n- "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",\n+ "version": "4.0.2",\n+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",\n+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",\n "dev": true,\n+ "funding": [\n+ {\n+ "type": "opencollective",\n+ "url": "https://opencollective.com/postcss/"\n+ },\n+ {\n+ "type": "github",\n+ "url": "https://github.com/sponsors/ai"\n+ }\n+ ],\n "dependencies": {\n- "lilconfig": "^2.0.5",\n- "yaml": "^2.1.1"\n+ "lilconfig": "^3.0.0",\n+ "yaml": "^2.3.4"\n },\n "engines": {\n "node": ">= 14"\n },\n- "funding": {\n- "type": "opencollective",\n- "url": "https://opencollective.com/postcss/"\n- },\n "peerDependencies": {\n "postcss": ">=8.0.9",\n "ts-node": ">=9.0.0"\n@@ -2694,9 +2700,9 @@\n "dev": true\n },\n "node_modules/punycode": {\n- "version": "2.3.0",\n- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",\n- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",\n+ "version": "2.3.1",\n+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",\n+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",\n "dev": true,\n "engines": {\n "node": ">=6"\n@@ -2837,21 +2843,6 @@\n "url": "https://github.com/sponsors/sindresorhus"\n }\n },\n- "node_modules/read-pkg-up/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/read-pkg/node_modules/path-type": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",\n@@ -2937,9 +2928,9 @@\n }\n },\n "node_modules/resolve": {\n- "version": "1.22.6",\n- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",\n- "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",\n+ "version": "1.22.8",\n+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",\n+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",\n "dev": true,\n "dependencies": {\n "is-core-module": "^2.13.0",\n@@ -3043,9 +3034,9 @@\n }\n },\n "node_modules/sass": {\n- "version": "1.67.0",\n- "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz",\n- "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==",\n+ "version": "1.69.5",\n+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",\n+ "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",\n "dev": true,\n "dependencies": {\n "chokidar": ">=3.0.0 <4.0.0",\n@@ -3060,12 +3051,33 @@\n }\n },\n "node_modules/semver": {\n- "version": "5.7.2",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",\n- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",\n+ "version": "7.5.4",\n+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n "dev": true,\n+ "dependencies": {\n+ "lru-cache": "^6.0.0"\n+ },\n "bin": {\n- "semver": "bin/semver"\n+ "semver": "bin/semver.js"\n+ },\n+ "engines": {\n+ "node": ">=10"\n+ }\n+ },\n+ "node_modules/set-function-length": {\n+ "version": "1.1.1",\n+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",\n+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",\n+ "dev": true,\n+ "dependencies": {\n+ "define-data-property": "^1.1.1",\n+ "get-intrinsic": "^1.2.1",\n+ "gopd": "^1.0.1",\n+ "has-property-descriptors": "^1.0.0"\n+ },\n+ "engines": {\n+ "node": ">= 0.4"\n }\n },\n "node_modules/set-function-name": {\n@@ -3150,21 +3162,6 @@\n "node": ">=10"\n }\n },\n- "node_modules/simple-update-notifier/node_modules/semver": {\n- "version": "7.5.4",\n- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",\n- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",\n- "dev": true,\n- "dependencies": {\n- "lru-cache": "^6.0.0"\n- },\n- "bin": {\n- "semver": "bin/semver.js"\n- },\n- "engines": {\n- "node": ">=10"\n- }\n- },\n "node_modules/slash": {\n "version": "5.1.0",\n "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",\n@@ -3272,9 +3269,9 @@\n }\n },\n "node_modules/spdx-license-ids": {\n- "version": "3.0.14",\n- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.14.tgz",\n- "integrity": "sha512-U0eS5wcpu/O2/QZk6PcAMOA8H3ZuvRe4mFHA3Q+LNl1SRDmfQ+mD3RoD6tItqnvqubJ32m/zV2Z/ikSmxccD1Q==",\n+ "version": "3.0.16",\n+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",\n+ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",\n "dev": true\n },\n "node_modules/string-width": {\n@@ -3454,9 +3451,9 @@\n }\n },\n "node_modules/stylelint-config-recess-order": {\n- "version": "4.3.0",\n- "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.3.0.tgz",\n- "integrity": "sha512-EWVtxZ8oq4/meTrRNUDrS5TqMz6TX72JjKDwVQq0JJDXE+P/o7UuFw3wWV/0O9yvJfh/da6nJY71ZUn/wSfB4g==",\n+ "version": "4.4.0",\n+ "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.4.0.tgz",\n+ "integrity": "sha512-Q99kvZyIM/aoPEV4dRDkzD3fZLzH0LXi+pawCf1r700uUeF/PHQ5PZXjwFUuGrWhOzd1N+cuVm+OUGsY2fRN5A==",\n "dev": true,\n "dependencies": {\n "stylelint-order": "6.x"\n@@ -3555,25 +3552,25 @@\n }\n },\n "node_modules/stylelint-order": {\n- "version": "6.0.3",\n- "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.3.tgz",\n- "integrity": "sha512-1j1lOb4EU/6w49qZeT2SQVJXm0Ht+Qnq9GMfUa3pMwoyojIWfuA+JUDmoR97Bht1RLn4ei0xtLGy87M7d29B1w==",\n+ "version": "6.0.4",\n+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz",\n+ "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==",\n "dev": true,\n "dependencies": {\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-sorting": "^8.0.2"\n },\n "peerDependencies": {\n- "stylelint": "^14.0.0 || ^15.0.0"\n+ "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1"\n }\n },\n "node_modules/stylelint-scss": {\n- "version": "5.2.1",\n- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.2.1.tgz",\n- "integrity": "sha512-ZoTJUM85/qqpQHfEppjW/St//8s6p9Qsg8deWlYlr56F9iUgC9vXeIDQvH4odkRRJLTLFQzYMALSOFCQ3MDkgw==",\n+ "version": "5.3.2",\n+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz",\n+ "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==",\n "dev": true,\n "dependencies": {\n- "known-css-properties": "^0.28.0",\n+ "known-css-properties": "^0.29.0",\n "postcss-media-query-parser": "^0.2.3",\n "postcss-resolve-nested-selector": "^0.1.1",\n "postcss-selector-parser": "^6.0.13",\n@@ -3583,12 +3580,6 @@\n "stylelint": "^14.5.1 || ^15.0.0"\n }\n },\n- "node_modules/stylelint-scss/node_modules/known-css-properties": {\n- "version": "0.28.0",\n- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",\n- "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==",\n- "dev": true\n- },\n "node_modules/stylelint-stylistic": {\n "version": "0.4.3",\n "resolved": "https://registry.npmjs.org/stylelint-stylistic/-/stylelint-stylistic-0.4.3.tgz",\n@@ -3611,23 +3602,6 @@\n "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",\n "dev": true\n },\n- "node_modules/stylelint/node_modules/debug": {\n- "version": "4.3.4",\n- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",\n- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",\n- "dev": true,\n- "dependencies": {\n- "ms": "2.1.2"\n- },\n- "engines": {\n- "node": ">=6.0"\n- },\n- "peerDependenciesMeta": {\n- "supports-color": {\n- "optional": true\n- }\n- }\n- },\n "node_modules/stylelint/node_modules/globby": {\n "version": "11.1.0",\n "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",\n@@ -3648,12 +3622,6 @@\n "url": "https://github.com/sponsors/sindresorhus"\n }\n },\n- "node_modules/stylelint/node_modules/ms": {\n- "version": "2.1.2",\n- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\n- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",\n- "dev": true\n- },\n "node_modules/stylelint/node_modules/slash": {\n "version": "3.0.0",\n "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",\n@@ -3750,9 +3718,9 @@\n "dev": true\n },\n "node_modules/tinymce": {\n- "version": "6.7.1",\n- "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.1.tgz",\n- "integrity": "sha512-SIGJgWk2d/X59VbO+i81QfNx2EP1P5t+sza2/1So3OLGtmMBhEJMag7sN/Mo8sq4s0niwb65Z51yLju32jP11g==",\n+ "version": "6.8.2",\n+ "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.2.tgz",\n+ "integrity": "sha512-Lho79o2Y1Yn+XdlTEkHTEkEmzwYWTXz7IUsvPwxJF3VTtgHUIAAuBab29kik+f2KED3rZvQavr9D7sHVMJ9x4A==",\n "dev": true\n },\n "node_modules/to-regex-range": {\n@@ -3890,18 +3858,18 @@\n "dev": true\n },\n "node_modules/universalify": {\n- "version": "2.0.0",\n- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",\n- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",\n+ "version": "2.0.1",\n+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",\n+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",\n "dev": true,\n "engines": {\n "node": ">= 10.0.0"\n }\n },\n "node_modules/update-browserslist-db": {\n- "version": "1.0.11",\n- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",\n- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",\n+ "version": "1.0.13",\n+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",\n+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",\n "dev": true,\n "funding": [\n {\n@@ -3982,13 +3950,13 @@\n }\n },\n "node_modules/which-typed-array": {\n- "version": "1.1.11",\n- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",\n- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",\n+ "version": "1.1.13",\n+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",\n+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",\n "dev": true,\n "dependencies": {\n "available-typed-arrays": "^1.0.5",\n- "call-bind": "^1.0.2",\n+ "call-bind": "^1.0.4",\n "for-each": "^0.3.3",\n "gopd": "^1.0.1",\n "has-tostringtag": "^1.0.0"\n@@ -4085,9 +4053,9 @@\n "dev": true\n },\n "node_modules/yaml": {\n- "version": "2.3.2",\n- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz",\n- "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==",\n+ "version": "2.3.4",\n+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",\n+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",\n "dev": true,\n "engines": {\n "node": ">= 14"\ndiff --git a/package.json b/package.json\nindex 302d1b44..2340c02c 100644\n--- a/package.json\n+++ b/package.json\n@@ -1,7 +1,7 @@\n {\n "name": "@plone/plonetheme-barceloneta-base",\n "description": "Plone Theme Barceloneta Resources",\n- "version": "3.1.3",\n+ "version": "3.2.0-alpha.0",\n "files": [\n "/scss",\n "/plonetheme/barceloneta/theme/tinymce/*.css"\n@@ -23,16 +23,16 @@\n "css"\n ],\n "devDependencies": {\n- "autoprefixer": "^10.4.13",\n- "clean-css-cli": "^5.6.2",\n- "nodemon": "^3.0.1",\n+ "autoprefixer": "^10.4.16",\n+ "clean-css-cli": "^5.6.3",\n+ "nodemon": "^3.0.2",\n "npm-run-all": "^4.1.5",\n- "postcss": "^8.4.21",\n+ "postcss": "^8.4.32",\n "postcss-cli": "^10.1.0",\n- "sass": "^1.58.3",\n+ "sass": "^1.69.5",\n "stylelint": "^15.11.0",\n "stylelint-config-twbs-bootstrap": "^11.0.1",\n- "tinymce": "^6.7.1"\n+ "tinymce": "^6.8.2"\n },\n "scripts": {\n "watch": "nodemon --watch scss/ --ext scss --exec \\"npm run css-main\\"",\n'