diff --git a/.gitignore b/.gitignore index ce5b968..d203b36 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ pids # Directory for instrumented libs generated by jscoverage/JSCover lib-cov +lib dist # Coverage directory used by tools like istanbul diff --git a/README.md b/README.md index f4f02ca..03735f4 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,16 @@ At the moment to start a tracker you have to configure the config file in turtle Would be good create a mintNew method to allow new ones to be created in the UI. +# Development Setup + +This project uses Node `20.19.2` (see `.nvmrc`). + +```bash +nvm use +npm install +npm run start +``` + # Testing Guide ## Running Tests @@ -17,4 +27,12 @@ npm run lint # Auto-fix linting issues npm run lint-fix -``` \ No newline at end of file +``` + +## Generative AI usage +The SolidOS team is using GitHub Copilot integrated in Visual Studio Code. +We have added comments in the code to make it explicit which parts are 100% written by AI. +Example: +* Some code was generated by the GPT-5.3-Codex model in GitHub Copilot based on the following prompt: +* can you style my table and make it look nice. +* can you handle the visibility in exposeOverlay with css? diff --git a/declarations.d.ts b/declarations.d.ts new file mode 100644 index 0000000..2c131cd --- /dev/null +++ b/declarations.d.ts @@ -0,0 +1,4 @@ +declare module '*.ttl' { + const content: string; + export default content; +} \ No newline at end of file diff --git a/dev/dev-global.css b/dev/dev-global.css new file mode 100644 index 0000000..b7ad4fd --- /dev/null +++ b/dev/dev-global.css @@ -0,0 +1,388 @@ +/* ---ONLY FOR LOCAL DEV--- */ +/* ---final version is in mashlib--- */ + +/* Global CSS: base styles, variables, and resets */ +/* Accessible color palette */ + +:root { + /* Primary/Accent colors (profile-pane specific) */ + --color-primary: #7C4DFF; /* Vivid Purple */ + --color-secondary: #0077B6; /* Accessible Blue */ + --color-accent: #FFD600; /* Bright Yellow */ + --color-error: #B00020; /* Accessible Red */ + --color-success: #00C853; /* Accessible Green */ + + /* Card/Section backgrounds */ + --color-background: #FFFFFF; /* White */ + --color-card-bg: #FFFFFF; /* White for inner cards */ + --color-section-bg: #F5F5F5; /* Light grey for outer sections */ + + --color-text: #1A1A1A; /* Near-black */ + --color-text-secondary: #666; /* Added for repeated usage */ + --color-text-muted: #444; /* Added for repeated usage */ + --color-border-pale: #eee; /* Added for repeated borders */ + --border-radius-full: 1em; /* Matches module usage */ + --border-radius-base: 0.5em; + --box-shadow: 0 2px 8px rgba(124,77,255,0.08); /* Matches module usage */ + --box-shadow-sm: 0 1px 4px rgba(124,77,255,0.12); + --spacing-xs: 0.5em; + --spacing-sm: 0.75em; + --spacing-md: 1em; + --spacing-lg: 1.5em; + --spacing-xl: 2em; + --font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; + --font-size-base: 1em; /* 16px default */ + --font-size-sm: 0.875em; /* 14px */ + --font-size-lg: 1.125em; /* 18px */ + --font-size-xl: 1.25em; /* 20px */ + --line-height-base: 1.5; /* WCAG recommended */ + --line-height-tight: 1.4; + --line-height-loose: 1.6; + --letter-spacing-wide: 0.025em; + + /* Minimum font sizes for accessibility */ + --min-font-size: 14px; + --min-line-height: 1.4; + + /* Accessibility improvements */ + --min-touch-target: 44px; /* WCAG minimum touch target */ + --focus-ring-width: 2px; + --animation-duration: 0.2s; /* Reduced motion friendly */ + + /* Additional accessibility variables */ + --focus-indicator-width: 3px; + --animation-duration-slow: 0.3s; + --high-contrast-ratio: 7:1; /* WCAG AAA standard */ +} + + +/* Improve text rendering */ +html, body { + margin: 0; + padding: 0; + font-family: var(--font-family-base); + font-size: var(--font-size-base); + line-height: var(--line-height-base); + background: var(--color-background); + color: var(--color-text); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +/* Improved heading hierarchy */ +h1, h2, h3, h4, h5, h6 { + color: var(--color-primary); + font-weight: 600; + line-height: var(--line-height-tight); + margin-top: 0; + margin-bottom: var(--spacing-sm); +} + +h1 { font-size: 2em; } /* 32px */ +h2 { font-size: 1.5em; } /* 24px */ +h3 { font-size: 1.25em; } /* 20px */ +h4 { font-size: 1.125em; }/* 18px */ +h5, h6 { font-size: 1em; }/* 16px */ + +/* Better paragraph spacing */ +p { + margin-bottom: var(--spacing-md); + line-height: var(--line-height-base); + max-width: 65ch; /* Optimal reading width */ +} + +/* Improved link accessibility */ +a { + color: var(--color-primary); + text-decoration: underline; + text-underline-offset: 0.125em; + text-decoration-thickness: 0.0625em; +} + +a:hover, a:focus { + text-decoration-thickness: 0.125em; +} + +/* Ensure minimum font sizes are respected */ +@media screen and (max-width: 768px) { + html { + font-size: max(16px, 1rem); /* Never smaller than 16px on mobile */ + } +} + +/* Support for larger text preferences */ +@media (prefers-reduced-motion: no-preference) { + html { + scroll-behavior: smooth; + } +} + +/* Accessibility: focus styles */ +:focus { + outline: 2px solid var(--color-primary); + outline-offset: 1px; + box-shadow: 0 0 0 1px var(--color-background); +} + +/* Accessibility: Respect user motion preferences */ +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* Accessibility: High contrast mode support */ +@media (prefers-contrast: high) { + :root { + --color-border-pale: #000; + --box-shadow: 0 2px 4px rgba(0,0,0,0.5); + --box-shadow-sm: 0 1px 2px rgba(0,0,0,0.3); + } +} + +/* Accessibility: Improved focus management */ +:focus-visible { + outline: var(--focus-ring-width) solid var(--color-primary); + outline-offset: 2px; + box-shadow: 0 0 0 1px var(--color-background); +} + +:focus:not(:focus-visible) { + outline: none; +} + +/* Skip link for screen readers */ +.skip-link { + position: absolute; + top: -40px; + left: 6px; + background: var(--color-primary); + color: white; + padding: var(--spacing-sm) var(--spacing-md); + text-decoration: none; + border-radius: var(--border-radius-base); + z-index: 1000; + font-weight: 600; + font-size: var(--font-size-base); + line-height: 1; +} + +.skip-link:focus { + top: 6px; + outline: 2px solid white; + outline-offset: 2px; +} + +/* Semantic HTML5 improvements */ +article, aside, section { + display: block; +} + +header { + margin-bottom: var(--spacing-md); +} + +nav { + display: block; +} + +nav ul { + list-style: none; + padding: 0; + margin: 0; +} + +/* Enhanced keyboard navigation */ +*:focus-visible { + outline: var(--focus-indicator-width) solid var(--color-primary); + outline-offset: 2px; + box-shadow: 0 0 0 1px var(--color-background), 0 0 0 4px rgba(124, 77, 255, 0.2); + border-radius: 2px; + transition: none; /* Remove transitions on focus for immediate feedback */ +} + +/* Improve focus management for interactive elements */ +[role="button"]:focus, +[role="link"]:focus, +button:focus, +a:focus { + outline: 2px solid var(--color-primary); + outline-offset: 2px; + box-shadow: 0 0 0 1px var(--color-background); +} + +/* Enhanced error message accessibility */ +[role="alert"] { + padding: var(--spacing-md); + border: 2px solid var(--color-error); + border-radius: var(--border-radius-base); + background-color: rgba(176, 0, 32, 0.1); + margin: var(--spacing-md) 0; +} + +/* Success message styling */ +[role="status"] { + padding: var(--spacing-md); + border: 2px solid var(--color-success); + border-radius: var(--border-radius-base); + background-color: rgba(0, 200, 83, 0.1); + margin: var(--spacing-md) 0; +} + +/* Enhanced table accessibility */ +table { + border-collapse: collapse; + width: 100%; +} + +th { + background-color: var(--color-section-bg); + font-weight: 600; + text-align: left; + padding: var(--spacing-sm); +} + +td { + padding: var(--spacing-sm); +} + +/* Focus trap for modals */ +.focus-trap { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; +} + +/* Enhanced button accessibility */ +button, [role="button"] { + cursor: pointer; + border: none; + border-radius: var(--border-radius-base); + padding: var(--spacing-sm) var(--spacing-md); + min-height: var(--min-touch-target); + min-width: var(--min-touch-target); + font-size: var(--font-size-base); + font-weight: 600; + transition: all var(--animation-duration) ease; + position: relative; + border: 1px solid grey; +} + +button:disabled, [role="button"][aria-disabled="true"] { + opacity: 0.6; + cursor: not-allowed; + pointer-events: none; +} + +/* Loading indicator accessibility */ +.loading-spinner { + width: 40px; + height: 40px; + border: 3px solid var(--color-border-pale); + border-top: 3px solid var(--color-primary); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +@media (prefers-reduced-motion: reduce) { + .loading-spinner { + animation: none; + border-top-color: var(--color-primary); + } +} + +/* Utility classes */ +.u-flex { + display: flex; +} +.u-grid { + display: grid; +} +.u-center { + justify-content: center; + align-items: center; +} +.u-gap { + gap: 1em; +} + +/* Common card component - used across all modules */ +.module-card { + background: var(--color-card-bg); + border-radius: var(--border-radius-full); + box-shadow: var(--box-shadow); + padding: var(--spacing-lg); + margin-bottom: var(--spacing-lg); + width: 100%; + max-width: 100%; + box-sizing: border-box; +} + +/* Common header styles */ +.module-header { + text-align: center; + margin-bottom: var(--spacing-md); +} + +/* Common flex patterns */ +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.flex-column-center { + display: flex; + flex-direction: column; + align-items: center; +} + +/* Text utilities */ +.text-center { + text-align: center; +} + +.text-secondary { + color: var(--color-text-secondary); +} + +.text-muted { + color: var(--color-text-muted); +} + +/* Override solid-ui error message close button styling */ +.errorMessageBlock .close, +.errorMessageBlock button[type="button"], +.errorMessageBlock .button { + background: var(--color-border-pale) !important; + color: var(--color-text) !important; + border: 1px solid var(--color-border-pale) !important; +} + +.errorMessageBlock .close:hover, +.errorMessageBlock button[type="button"]:hover, +.errorMessageBlock .button:hover { + background: var(--color-text-secondary) !important; + color: var(--color-background) !important; +} diff --git a/dev/index.js b/dev/index.js index a8864b6..1edfbbf 100644 --- a/dev/index.js +++ b/dev/index.js @@ -1,5 +1,6 @@ import { sym } from 'rdflib' import pane from '../src/issuePane' +import './dev-global.css' // Import after src to override component styles import { context, fetcher } from './context' import { authn, authSession } from 'solid-logic' import * as UI from 'solid-ui' @@ -32,7 +33,7 @@ finishLogin() // const targetURIToShow = "https://solidproject.solidcommunity.net/Roadmap/index.ttl#this"; // const targetURIToShow = "https://timbl.com/timbl/Automation/mother/tracker.n3#mother" - +// const targetURIToShow = 'https://sstratsianis.solidcommunity.net/TestingTracker/index.ttl#this' const targetURIToShow = new URL('./big-tracker.ttl#this', window.location.href).href fetcher.load(targetURIToShow).then(() => { diff --git a/package-lock.json b/package-lock.json index 762576b..592a27c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,8 @@ "@eslint/js": "^9.39.2", "babel-loader": "^10.0.0", "babel-plugin-inline-import": "^3.0.0", + "copy-webpack-plugin": "^14.0.0", + "css-loader": "^7.1.2", "eslint": "^9.39.2", "globals": "^17.1.0", "html-webpack-plugin": "^5.6.6", @@ -25,9 +27,13 @@ "rdflib": "^2.3.6", "solid-logic": "^4.0.6", "solid-ui": "^3.0.5", + "style-loader": "^4.0.0", "webpack-cli": "^7.0.0", "webpack-dev-server": "^5.2.3" }, + "engines": { + "node": ">=20.19.2" + }, "peerDependencies": { "rdflib": "^2.3.5", "solid-logic": "^4.0.2", @@ -50,9 +56,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", - "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -449,23 +455,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", - "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", @@ -985,9 +974,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", - "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1420,20 +1409,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", - "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.29.3", + "@babel/compat-data": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", @@ -1465,7 +1453,7 @@ "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.4", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", @@ -1521,9 +1509,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1592,9 +1580,9 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.0.0.tgz", - "integrity": "sha512-dDlz3W405VMFO4w5kIP9DOmELBcvFQGmLoKSdIRstBDubKFYwaNHV1NnlzMCQpXQFGWVALmeMORAuiLx18AvZQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.1.0.tgz", + "integrity": "sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==", "dev": true, "license": "MIT", "engines": { @@ -1644,13 +1632,13 @@ } }, "node_modules/@eslint/compat": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.1.0.tgz", - "integrity": "sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.3.tgz", + "integrity": "sha512-SjIJhGigp8hmd1YGIBwh7Ovri7Kisl42GYFjrOyHhtfYGGoLW6teYi/5p8W50KSsawUPpuLOSmsq1bD0NGQLBw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.2.1" + "@eslint/core": "^1.1.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -1706,9 +1694,9 @@ } }, "node_modules/@eslint/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", - "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", + "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1878,37 +1866,64 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inrupt/oidc-client": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@inrupt/oidc-client/-/oidc-client-1.11.6.tgz", + "integrity": "sha512-1rCTk1T6pdm/7gKozutZutk7jwmYBADlnkGGoI5ypke099NOCa5KFXjkQpbjsps0PRkKZ+0EaR70XN5+xqmViA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^7.4.1", + "base64-js": "^1.5.1", + "core-js": "^3.8.3", + "crypto-js": "^4.0.0", + "serialize-javascript": "^4.0.0" + } + }, "node_modules/@inrupt/oidc-client-ext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-4.0.0.tgz", - "integrity": "sha512-E32/yElFpADyWRFO6FdCyB1Ew1svsNX/fFdvHWP3qCBhSlfJVq2hMChWxs/RIRmTjHePyjT2UKEuItM09WXaWA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-3.1.1.tgz", + "integrity": "sha512-vftKD2u5nufZTFkdUDMS3Uxj5xNQwArP11OFaALFkq6/3RwCAhe3lwOv8hNzL7Scv98T+KbAErBM0TwGGrS69g==", "dev": true, "license": "MIT", "dependencies": { - "@inrupt/solid-client-authn-core": "^4.0.0", + "@inrupt/oidc-client": "^1.11.6", + "@inrupt/solid-client-authn-core": "^3.1.1", "jose": "^5.1.3", - "oidc-client-ts": "^3.5.0", "uuid": "^11.1.0" } }, + "node_modules/@inrupt/oidc-client/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@inrupt/solid-client-authn-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-4.0.0.tgz", - "integrity": "sha512-b7DpLMjYVMPiRv3QWqOmCeYqKL1t2THYQawuYM1zNqtN1SJGG5XEkXIy3ZQxx12tzAjeLNjH3ZAOg/CK/ehg2w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-3.1.1.tgz", + "integrity": "sha512-Wd7TREmvdhTp+Sk88ei3hlg54sG1fNqkkPkuS+2tDBkcsXaViRQAEugVyh5pWRkd1xSFKrEzftb7UYEG4mJ0CQ==", "dev": true, "license": "MIT", "dependencies": { - "@inrupt/oidc-client-ext": "^4.0.0", - "@inrupt/solid-client-authn-core": "^4.0.0", + "@inrupt/oidc-client-ext": "^3.1.1", + "@inrupt/solid-client-authn-core": "^3.1.1", "events": "^3.3.0", "jose": "^5.1.3", "uuid": "^11.1.0" } }, "node_modules/@inrupt/solid-client-authn-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-4.0.0.tgz", - "integrity": "sha512-q4iur4TxEkhk9XaGAvyRP/+MjU1oBv2xlBdGE+uoXmDHAnIqUN71zZjCWZfZlyQFRETgH3OfZ9tPrNSDIPA/wg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-3.1.1.tgz", + "integrity": "sha512-1oDSQCh/pVtPlTyvLQ2uwHo+hpLJF7izg82tjB+Ge8jqGYwkQyId0BrfncpCk//uJXxgRIcfAQp2MhXYbZo80Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1917,7 +1932,7 @@ "uuid": "^11.1.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^20.0.0 || ^22.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -2109,23 +2124,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", - "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@lit/reactive-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", - "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.5.0" - } - }, "node_modules/@noble/curves": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", @@ -2565,13 +2563,6 @@ "@types/node": "*" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -3054,13 +3045,13 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", - "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.6" + "node": ">=10.0.0" } }, "node_modules/@xtuc/ieee754": { @@ -3092,16 +3083,6 @@ "node": ">=6.5" } }, - "node_modules/abs": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/abs/-/abs-1.3.15.tgz", - "integrity": "sha512-bpFChpVyZ2F2ppgx7qjZ5TTEO6VVwBauUZDZibpclRGhfcXTHyj11nlqwrg5dN1knxCchssROehm76uCcCayRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ul": "^5.0.0" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3299,9 +3280,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -3538,9 +3519,9 @@ } }, "node_modules/babel-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", - "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.0.tgz", + "integrity": "sha512-5HTUZa013O4SWEYlJDHexrqSIYkWatfA9w/ZZQa7V2nMc0dRWkfu/0pmioC7XMYm8M7Z/3+q42NWj6e+fAT0MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3681,9 +3662,9 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "dependencies": { @@ -3695,7 +3676,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.15.1", + "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -4163,19 +4144,6 @@ "canonicalize": "bin/canonicalize.js" } }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4449,6 +4417,52 @@ "dev": true, "license": "MIT" }, + "node_modules/copy-webpack-plugin": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^7.0.3", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 20.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.4.tgz", + "integrity": "sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/core-js": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-js-compat": { "version": "3.48.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", @@ -4488,19 +4502,6 @@ "dev": true, "license": "MIT" }, - "node_modules/create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "capture-stack-trace": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -4589,6 +4590,60 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-loader": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz", + "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -4619,6 +4674,18 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -4691,16 +4758,6 @@ } } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4738,16 +4795,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deffy": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/deffy/-/deffy-2.2.5.tgz", - "integrity": "sha512-6TX2cfIo97eKqWmqgMDAUulCwnveAe3K+4VGsTGPJsL3NtSEnSBFZ3sUXdS4EBhZ8GbdaZBzXQ04ton18dJrug==", - "dev": true, - "license": "MIT", - "dependencies": { - "typpy": "^2.0.0" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -4989,56 +5036,6 @@ "node": ">= 0.4" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5123,26 +5120,6 @@ "node": ">=4" } }, - "node_modules/err": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/err/-/err-1.1.1.tgz", - "integrity": "sha512-N97Ybd2jJHVQ+Ft3Q5+C2gM3kgygkdeQmEqbN2z15UTVyyEsIwLA1VK39O1DHEJhXbwIFcJLqm6iARNhFANcQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "typpy": "^2.2.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/es-abstract": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", @@ -5747,27 +5724,16 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exec-limiter": { - "version": "3.2.14", - "resolved": "https://registry.npmjs.org/exec-limiter/-/exec-limiter-3.2.14.tgz", - "integrity": "sha512-ZQjJmAnXD+1kQ6ejMZAS5Vxdt7LLMz0Eq7mEu6+7NhlauykuyLihhUkpp4S784QKsmJQIpuuERhQ8Tav8bF3zQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "limit-it": "^3.0.0", - "typpy": "^2.1.0" - } - }, "node_modules/express": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", - "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "~1.20.5", + "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", @@ -5786,7 +5752,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "~6.15.1", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", @@ -5844,9 +5810,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -6005,16 +5971,16 @@ } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -6093,16 +6059,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.name": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/function.name/-/function.name-1.0.14.tgz", - "integrity": "sha512-s99L814NRuLxwF2sJMIcLhkQhueGXb3oKyvorzrUKKwlVB0SBbWrgZt4+EwKAo3ujCXnT7vshmCvXgZA09kCMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "noop6": "^1.0.1" - } - }, "node_modules/function.prototype.name": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", @@ -6225,72 +6181,23 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/git-package-json": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/git-package-json/-/git-package-json-1.4.11.tgz", - "integrity": "sha512-A/P5K2qqQ52+BwBf+qyrjtdauMlb7n1WVa++/VPDxTcgKZ2X5/Eh/EQwbxNvRKBsKAkMAeyV/UIdnb/saVFnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "deffy": "^2.2.1", - "err": "^1.1.1", - "gry": "^5.0.0", - "normalize-package-data": "^2.3.5", - "oargv": "^3.4.1", - "one-by-one": "^3.1.0", - "r-json": "^1.2.1", - "r-package-json": "^1.0.0", - "tmp": "0.0.28" - } - }, - "node_modules/git-source": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/git-source/-/git-source-1.1.11.tgz", - "integrity": "sha512-oubUf/uply9xvR5olZxxPpip19wMEpESN3bFfPcFMvl/0fwrVrcAppwOJ7Dghcguze68WAIjs/A1YrdMDIW8XA==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "git-url-parse": "^5.0.1" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/git-up": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-1.2.1.tgz", - "integrity": "sha512-SRVN3rOLACva8imc7BFrB6ts5iISWKH1/h/1Z+JZYoUI7UVQM7gQqk4M2yxUENbq2jUUT09NEND5xwP1i7Ktlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-ssh": "^1.0.0", - "parse-url": "^1.0.0" - } - }, - "node_modules/git-url-parse": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-5.0.1.tgz", - "integrity": "sha512-4uSiOgrryNEMBX+gTWogenYRUh2j1D+95STTSEF2RCTgLkfJikl8c7BGr0Bn274hwuxTsbS2/FQ5pVS9FoXegQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "git-up": "^1.0.0" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regex.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", - "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6362,84 +6269,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz", - "integrity": "sha512-MnypzkaW8dldA8AbJFjMs7y14+ykd2V8JCLKSvX1Gmzx1alH3Y+3LArywHDoAF2wS3pnZp4gacoYtvqBeF6drQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "create-error-class": "^3.0.1", - "duplexer2": "^0.1.4", - "is-plain-obj": "^1.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "node-status-codes": "^1.0.0", - "object-assign": "^4.0.1", - "parse-json": "^2.1.0", - "pinkie-promise": "^2.0.0", - "read-all-stream": "^3.0.0", - "readable-stream": "^2.0.5", - "timed-out": "^2.0.0", - "unzip-response": "^1.0.0", - "url-parse-lax": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/got/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/got/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/got/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/got/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/got/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -6447,19 +6276,6 @@ "dev": true, "license": "ISC" }, - "node_modules/gry": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/gry/-/gry-5.0.8.tgz", - "integrity": "sha512-meq9ZjYVpLzZh3ojhTg7IMad9grGsx6rUUKHLqPnhLXzJkRQvEL2U3tQpS5/WentYTtHtxkT3Ew/mb10D6F6/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abs": "^1.2.1", - "exec-limiter": "^3.0.0", - "one-by-one": "^3.0.0", - "ul": "^5.0.0" - } - }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -6608,13 +6424,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -6691,9 +6500,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.6.7", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz", - "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==", + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", + "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", "dev": true, "license": "MIT", "dependencies": { @@ -6844,6 +6653,18 @@ "node": ">=0.10.0" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -6998,13 +6819,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -7075,13 +6889,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", @@ -7415,16 +7222,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -7444,16 +7241,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7483,26 +7270,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ssh": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", - "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "protocols": "^2.0.1" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -7650,13 +7417,6 @@ "node": ">=10" } }, - "node_modules/iterate-object": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.5.tgz", - "integrity": "sha512-eL23u8oFooYTq6TtJKjp2RYjZnCkUYQvC0T/6fJfWykXJ3quvdDdzKZ3CEjy8b3JGOvLTjDYMEMIp5243R906A==", - "dev": true, - "license": "MIT" - }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -7846,16 +7606,6 @@ "node": ">=4.0" } }, - "node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7914,50 +7664,6 @@ "node": ">= 0.8.0" } }, - "node_modules/limit-it": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/limit-it/-/limit-it-3.2.11.tgz", - "integrity": "sha512-VdLa1lZYZnzT98oLMeCDl6Lwd9cEYIMQlPg34qL6CYuA+yQKoG7K12tfgI5K6bRC51kRM8v1UX67IhpNsnvo3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "typpy": "^2.0.0" - } - }, - "node_modules/lit": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", - "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@lit/reactive-element": "^2.1.0", - "lit-element": "^4.2.0", - "lit-html": "^3.3.0" - } - }, - "node_modules/lit-element": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", - "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.5.0", - "@lit/reactive-element": "^2.1.0", - "lit-html": "^3.3.0" - } - }, - "node_modules/lit-html": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", - "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", @@ -7990,9 +7696,9 @@ } }, "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, @@ -8033,16 +7739,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -8147,9 +7843,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -8247,16 +7943,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8334,6 +8020,24 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8520,16 +8224,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha512-1cBMgRxdMWE8KeWCqk2RIOrvUb0XCwYfEsY5/y2NlXyq4Y/RumnOZvTj4Nbr77+Vb2C+kyBoRTdkNOS8L3d/aQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-stdlib-browser": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", @@ -8569,36 +8263,6 @@ "node": ">=10" } }, - "node_modules/noop6": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/noop6/-/noop6-1.0.10.tgz", - "integrity": "sha512-WZvuCILZFZHK+WuqCQwxLBGllkBK1ct8s8Mu9FMDbEsBE6/bqNxyFGbX7Xky+6bYFL8X2Ou4Cis4CJyrwXLvQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -8622,27 +8286,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/oargv": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/oargv/-/oargv-3.4.11.tgz", - "integrity": "sha512-FGTon9C71936EnOjx/NTsMxlLeWmw8zQQld4KDmgRxRtZ8fH1XpbLLRHmOioeZs/WoURz2OGR4KmDoTaL4ErJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iterate-object": "^1.1.0", - "ul": "^5.0.0" - } - }, - "node_modules/obj-def": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/obj-def/-/obj-def-1.0.10.tgz", - "integrity": "sha512-RJpNUkO+1r/rXTBs82iU4scoC9Q1yp9HZbSk0ldpFe8362S6eTjUjSgTmECa1TtOBIe5pn4pwSzxIiWc8+jmWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "deffy": "^2.2.2" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8775,19 +8418,6 @@ "dev": true, "license": "MIT" }, - "node_modules/oidc-client-ts": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.5.0.tgz", - "integrity": "sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jwt-decode": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -8811,17 +8441,6 @@ "node": ">= 0.8" } }, - "node_modules/one-by-one": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/one-by-one/-/one-by-one-3.2.9.tgz", - "integrity": "sha512-H10TAq02LKrkSRTQz1mgvcKb64rRajZ+B5HWHBvkGigYNCPqL0Q/tLIN3vfha/DqZxXeKNfyCmgfEYo2hgFQgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "obj-def": "^1.0.0", - "sliced": "^1.0.1" - } - }, "node_modules/open": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", @@ -8866,16 +8485,6 @@ "dev": true, "license": "MIT" }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -8954,72 +8563,17 @@ "node": ">=6" } }, - "node_modules/package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha512-PRg65iXMTt/uK8Rfh5zvzkUbfAPitF17YaCY+IbHsYgksiLvtzWWTUildHth3mVaZ7871OJ7gtP4LBRBlmAdXg==", + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, - "license": "MIT", - "dependencies": { - "got": "^5.0.0", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "(MIT AND Zlib)" }, - "node_modules/package-json-path": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/package-json-path/-/package-json-path-1.0.10.tgz", - "integrity": "sha512-DOlmVIfx+qDHHWaaxg573brZ8mH0Nxo4ecYA4SKkrpCOhCP64NXk7VxJtWVKZQ9urfU2Ivl74HeYUO42PLCpLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "abs": "^1.2.1" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/package-lock.json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-lock.json/-/package-lock.json-1.0.0.tgz", - "integrity": "sha512-+yEXtNdlCs5N0Zy/9uvkifgf/RqnGu0WqP4j9Wu1Us4YReFe1YNBh2Krmf8B1xGxjpYnta63K55QP8bkafnOzA==", - "dev": true - }, - "node_modules/package.json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/package.json/-/package.json-2.0.1.tgz", - "integrity": "sha512-pSxZ6XR5yEawRN2ekxx9IKgPN5uNAYco7MCPxtBEWMKO3UKWa1X2CtQMzMgloeGj2g2o6cue3Sb5iPkByIJqlw==", - "deprecated": "Use pkg.json instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "git-package-json": "^1.4.0", - "git-source": "^1.1.0", - "package-json": "^2.3.1" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/pane-registry": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-3.1.0.tgz", - "integrity": "sha512-Et1ydzeai6AgQ2Q4mJAW4BbcxetAmu4QIueba1qLiykOY5bxj9wSmdsMUGtDVgPo2pGPgI5enx4yGU2spKpIdg==", + "node_modules/pane-registry": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-3.0.2.tgz", + "integrity": "sha512-jd3lbAdNWZ5ig+vUdHayKn8g/QkrB/CyT8f9JCGohzCqwxXmZS6ust2m4HzM/5xtktDcx1abjaWnbG4wTBkIJw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9068,37 +8622,6 @@ "node": ">= 0.10" } }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-url": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-1.3.11.tgz", - "integrity": "sha512-1wj9nkgH/5EboDxLwaTMGJh3oH3f+Gue+aGdh631oCqoSBpokzmMmOldvOeBPtB8GJBYJbaF93KPzlkU+Y1ksg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-ssh": "^1.3.0", - "protocols": "^1.4.0" - } - }, - "node_modules/parse-url/node_modules/protocols": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", - "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", - "dev": true, - "license": "MIT" - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9205,9 +8728,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -9217,29 +8740,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pkg-dir": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", @@ -9294,6 +8794,112 @@ "node": ">= 0.4" } }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -9304,16 +8910,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", @@ -9354,13 +8950,6 @@ "react-is": "^16.13.1" } }, - "node_modules/protocols": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz", - "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==", - "dev": true, - "license": "MIT" - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -9435,9 +9024,9 @@ } }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9459,27 +9048,6 @@ "node": ">=0.4.x" } }, - "node_modules/r-json": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/r-json/-/r-json-1.3.1.tgz", - "integrity": "sha512-5nhRFfjVMQdrwKUfUlRpDUCocdKtjSnYZ1R/86mpZDV3MfsZ3dYYNjSGuMX+mPBvFvQBhdzxSqxkuLPLv4uFGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "w-json": "1.3.10" - } - }, - "node_modules/r-package-json": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/r-package-json/-/r-package-json-1.0.10.tgz", - "integrity": "sha512-g+KLu+aq3tkhW6gzjsfdWAyd+ZkueLTzkX2zpB2GIW7M/lOXal3nB8U36XOrIBGogJsz2H//xWA4mj9uGlcigw==", - "dev": true, - "license": "MIT", - "dependencies": { - "package-json-path": "^1.0.0", - "r-json": "^1.2.1" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9558,32 +9126,6 @@ "node": ">= 0.8" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rdf-canonize": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-5.0.0.tgz", @@ -9598,21 +9140,19 @@ } }, "node_modules/rdflib": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-2.3.9.tgz", - "integrity": "sha512-6HnEQ22QzgqPW2/R8y5IaeQoXnho6U+ovU1q/ZF556zEnSK4buwhw8/CDdRDwIHZQh5+PAncQxUhluO3JmguJQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-2.3.6.tgz", + "integrity": "sha512-Hf2bz+wv0bVtq5Ark9/TcZdcieMPsdiYGRlZIEk8t0nti2suUn+8k82Uq8ceUqbg0SXreYCF31A1CaJP/Iq+jA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.29.2", + "@babel/runtime": "^7.28.6", "@frogcat/ttl2jsonld": "^0.0.10", "@rdfjs/types": "^2.0.1", - "@xmldom/xmldom": "^0.9.10", + "@xmldom/xmldom": "^0.8.11", "cross-fetch": "^4.1.0", "jsonld": "^9.0.0", "n3": "^2.0.3", - "package-lock.json": "^1.0.0", - "package.json": "^2.0.1", "solid-namespace": "^0.5.4" } }, @@ -9623,60 +9163,6 @@ "dev": true, "license": "MIT" }, - "node_modules/read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha512-DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie-promise": "^2.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-all-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/read-all-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/read-all-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/read-all-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9706,9 +9192,9 @@ } }, "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -9820,30 +9306,6 @@ "node": ">=4" } }, - "node_modules/registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", @@ -10302,6 +9764,16 @@ "node": ">= 0.8" } }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -10636,14 +10108,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", - "deprecated": "Unsupported", - "dev": true, - "license": "MIT" - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -10667,20 +10131,20 @@ } }, "node_modules/solid-logic": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-4.0.7.tgz", - "integrity": "sha512-qVHu6juUr+zg2swuc3dHLb/Zjb0aYLNvwpG3xWTqXe/iT3ZF9ORA6fs9UgQuMnsijSJcaoXjK/gB2hvpbm53fA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-4.0.6.tgz", + "integrity": "sha512-yOljjrNK4oPU1br3ThydycVAbyUkMn+5auFiDXn7ODq6QEWZHokqiaRCpeJ4vzaHgvYoLlMD6UB3T3JtS5hx5Q==", "dev": true, "license": "MIT", "dependencies": { - "@inrupt/solid-client-authn-browser": "^4.0.0", + "@inrupt/solid-client-authn-browser": "^3.1.1", "solid-namespace": "^0.5.4" }, "engines": { "node": ">=18" }, "peerDependencies": { - "rdflib": "^2.3.7" + "rdflib": "^2.3.6" } }, "node_modules/solid-namespace": { @@ -10691,18 +10155,17 @@ "license": "MIT" }, "node_modules/solid-ui": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-3.1.0.tgz", - "integrity": "sha512-IKNooyEcJ3IduJqGCw24UC0xPpCCQZVFXzlPC8jcicO7R2FM9GHgwVhpeDTRDl5E/KpoC+h6HCVxGqd/qkfMag==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-3.0.6.tgz", + "integrity": "sha512-+33Tp2Bab5iAeMia5XF3967X9QFzqSPTI3+8ppX7OZq4U609Zsztu9Zx4j77Eov8+ktssT+wvzxKjTnklBaaWg==", "dev": true, "license": "MIT", "dependencies": { "@noble/curves": "^2.0.1", "@noble/hashes": "^2.0.1", "escape-html": "^1.0.3", - "lit": "^3.3.2", "mime-types": "^3.0.2", - "pane-registry": "^3.1.0", + "pane-registry": "^3.0.2", "solid-namespace": "^0.5.4", "uuid": "^13.0.0" }, @@ -10738,6 +10201,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -10749,42 +10221,6 @@ "source-map": "^0.6.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -10999,6 +10435,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11059,9 +10511,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "dev": true, "license": "MIT", "peer": true, @@ -11069,6 +10521,7 @@ "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -11082,44 +10535,28 @@ "webpack": "^5.1.0" }, "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, "@swc/core": { "optional": true }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, "esbuild": { "optional": true }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, "uglify-js": { "optional": true } } }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -11151,16 +10588,6 @@ "dev": true, "license": "MIT" }, - "node_modules/timed-out": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", - "integrity": "sha512-pqqJOi1rF5zNs/ps4vmbE4SFCrM4iR7LW+GHAsHqO/EumqbIWceioevYLM5xZRgQSH6gFgL9J/uB7EcJhQ9niQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", @@ -11191,19 +10618,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tmp": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "integrity": "sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/to-buffer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", @@ -11516,27 +10930,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/typpy": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/typpy/-/typpy-2.4.0.tgz", - "integrity": "sha512-a16Uv5doNtvHzaG4wZCHmXN+l9xxmTMpyODtPz7B3DSTsDVNXilTSJGuNw68sUh0Un4bf+ghRMbEcJCI6r06mQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function.name": "^1.0.3" - } - }, - "node_modules/ul": { - "version": "5.2.16", - "resolved": "https://registry.npmjs.org/ul/-/ul-5.2.16.tgz", - "integrity": "sha512-v1YrSEsJZpJsywzF/MKgsQwMdOwBlwwmNiUOJh/yX6FHrq7dYjeua1YOhLV0q0KioqEFZC4P7MsKmpEsGdZz3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "deffy": "^2.2.2", - "typpy": "^2.3.4" - } - }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -11557,9 +10950,9 @@ } }, "node_modules/undici": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz", - "integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "dev": true, "license": "MIT", "engines": { @@ -11640,16 +11033,6 @@ "node": ">= 0.8" } }, - "node_modules/unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha512-pwCcjjhEcpW45JZIySExBHYv5Y9EeL2OIGEfrSKp2dMUFGFv4CpvZkwJbVge8OvGH2BNNtJBx67DuKuJhf+N5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -11715,19 +11098,6 @@ "node": ">= 0.4" } }, - "node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -11767,9 +11137,9 @@ } }, "node_modules/uuid": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", - "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", @@ -11780,17 +11150,6 @@ "uuid": "dist/esm/bin/uuid" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -11808,13 +11167,6 @@ "dev": true, "license": "MIT" }, - "node_modules/w-json": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/w-json/-/w-json-1.3.10.tgz", - "integrity": "sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==", - "dev": true, - "license": "MIT" - }, "node_modules/watchpack": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", @@ -11979,9 +11331,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.4.tgz", - "integrity": "sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 372489e..dd2de3f 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,17 @@ "name": "issue-pane", "version": "3.0.2", "description": "Solid-compatible Panes: issue editor", - "main": "dist/issuePane.js", - "sideEffects": false, + "main": "lib/issue-pane.js", + "sideEffects": [ + "**/*.css" + ], "files": [ - "dist/", + "lib/", "README.md", - "LICENSE" + "LICENSE.md" ], "scripts": { - "clean": "rm -rf dist", + "clean": "rm -rf lib", "build": "npm run clean && npm run build-dist", "build-dist": "webpack --progress", "lint": "eslint", @@ -43,6 +45,9 @@ "url": "https://github.com/SolidOS/issue-pane/issues" }, "homepage": "https://github.com/SolidOS/issue-pane", + "engines": { + "node": ">=20.19.2" + }, "dependencies": { "@babel/runtime": "^7.28.6" }, @@ -57,6 +62,8 @@ "@eslint/js": "^9.39.2", "babel-loader": "^10.0.0", "babel-plugin-inline-import": "^3.0.0", + "copy-webpack-plugin": "^14.0.0", + "css-loader": "^7.1.2", "eslint": "^9.39.2", "globals": "^17.1.0", "html-webpack-plugin": "^5.6.6", @@ -66,6 +73,7 @@ "solid-logic": "^4.0.6", "solid-ui": "^3.0.5", "webpack-cli": "^7.0.0", + "style-loader": "^4.0.0", "webpack-dev-server": "^5.2.3" } } diff --git a/src/board.js b/src/board.js index 5faca27..fb66180 100644 --- a/src/board.js +++ b/src/board.js @@ -13,26 +13,27 @@ import { ns, utils, widgets } from 'solid-ui' import { store } from 'solid-logic' import * as $rdf from 'rdflib' +import './styles/board.css' export function board (dom, columnValues, renderItem, options) { const board = dom.createElement('div') - board.style = 'width: 100%;' - board.style.margin = '1em' + board.classList.add('trackerBoard') const table = board.appendChild(dom.createElement('table')) - table.style = 'width: 100%;' - table.style.borderCollapse = 'collapse' + table.classList.add('trackerBoardTable') const headerRow = table.appendChild(dom.createElement('tr')) + headerRow.classList.add('trackerBoardHeader') const mainRow = table.appendChild(dom.createElement('tr')) + mainRow.classList.add('trackerBoardMainRow') columnValues.forEach(x => { const cell = headerRow.appendChild(dom.createElement('th')) + cell.classList.add('trackerBoardHeaderCell') cell.textContent = utils.label(x, true) // Initial capital cell.subject = x - cell.style = 'margin: 0.3em; padding: 0.5em 1em; font-treatment: bold; font-size: 120%;' const column = mainRow.appendChild(dom.createElement('td')) + column.classList.add('trackerBoardColumn') column.subject = x - column.style = 'border: 0.01em solid white; padding: 0.1em;' // display: flex; flex-direction: column; align-items: center; function droppedURIHandler (uris) { uris.forEach(function (u) { @@ -52,13 +53,15 @@ export function board (dom, columnValues, renderItem, options) { */ function defaultRenderItem (item, category) { const card = dom.createElement('div') + card.classList.add('trackerBoardCard') const table = card.appendChild(dom.createElement('table')) + table.classList.add('trackerBoardCardTable') const classes = store.each(item, ns.rdf('type')) const catColors = classes.map(cat => store.any(cat, ns.ui('backgroundColor'))).filter(c => c) table.appendChild(widgets.personTR(dom, null, item)) table.subject = item - table.style = 'margin: 1em;' // @@ use style.js + const backgroundColor = catColors[0] || store.any(category, ns.ui('backgroundColor')) card.style.backgroundColor = backgroundColor ? backgroundColor.value : '#fff' return card diff --git a/src/issue.js b/src/issue.js index feb1aab..bc15fb8 100644 --- a/src/issue.js +++ b/src/issue.js @@ -1,9 +1,11 @@ // All the UI for a single issue, without store load or listening for changes // -import { icons, messageArea, ns, style, utils, widgets } from 'solid-ui' +import { icons, messageArea, ns, utils, widgets } from 'solid-ui' import { authn, store } from 'solid-logic' import { newIssueForm } from './newIssue' import * as $rdf from 'rdflib' +import './styles/issue.css' +import './styles/utilities.css' const kb = store @@ -58,22 +60,21 @@ export function renderIssueCard (issue, context) { const uncategorized = !getBackgroundColorFromTypes(issue) // This is a suspect issue. Prompt to delete it const card = dom.createElement('div') + card.classList.add('trackerBoardIssueCard') const table = card.appendChild(dom.createElement('table')) - table.style.width = '100%' + table.classList.add('trackerBoardIssueCardTable') const options = { draggable: false } // Let the board make the whole card draggable table.appendChild(widgets.personTR(dom, null, issue, options)) table.subject = issue - card.style = 'border-radius: 0.4em; border: 0.05em solid grey; margin: 0.3em;' const img = card.firstChild.firstChild.firstChild.firstChild // div/table/tr/td/img img.setAttribute('src', icons.iconBase + 'noun_Danger_1259514.svg') // override // Add a button for viewing the whole issue in overlay const buttonsCell = card.firstChild.firstChild.children[2] // right hand part of card + buttonsCell.classList.add('trackerBoardIssueCardButtons') const editButton = widgets.button(dom, icons.iconBase + 'noun_253504.svg', 'edit', async _event => { exposeOverlay(issue, context) }) - const editButtonImage = editButton.firstChild - editButtonImage.style.width = editButtonImage.style.height = '1.5em' buttonsCell.appendChild(editButton) // If uncategorized, shortcut to delete issue @@ -91,32 +92,32 @@ export function renderIssueCard (issue, context) { }) buttonsCell.appendChild(deleteButton) } - card.style.maxWidth = '24em' // @@ User adjustable?? card.refresh = refresh refresh() return card } - +// This code was generated by Generative AI (GPT-5.3-Codex in GitHub Copilot) based on the following prompt: +// can you handle the visibility in exposeOverlay with css? export function exposeOverlay (subject, context) { function hideOverlay () { overlay.innerHTML = '' // clear overlay - overlay.style.visibility = 'hidden' + overlay.classList.remove('trackerOverlayVisible') } const overlay = context.overlay + overlay.classList.add('trackerOverlay') overlay.innerHTML = '' // clear existing - const button = overlay.appendChild( + const issuePanel = renderIssue(subject, context) + overlay.appendChild(issuePanel) + const button = issuePanel.appendChild( widgets.button(context.dom, icons.iconBase + 'noun_1180156.svg', 'close', hideOverlay)) - button.style.float = 'right' - button.style.margin = '0.7em' + button.classList.add('trackerOverlayCloseButton') delete button.style.backgroundColor // do not want white - overlay.style.visibility = 'visible' - overlay.appendChild(renderIssue(subject, context)) - overlay.firstChild.style.overflow = 'auto' // was scroll + overlay.classList.add('trackerOverlayVisible') } function renderSpacer (dom, backgroundColor) { const spacer = dom.createElement('div') - spacer.setAttribute('style', 'height: 1em; margin: 0.5em;') // spacer and placeHolder + spacer.classList.add('trackerIssueSpacer') spacer.style.backgroundColor = backgroundColor // try that return spacer } @@ -134,10 +135,10 @@ export function renderIssue (issue, context) { kb.updater.update(deletions, insertions, function (_uri, _ok, _body) {}) } } - - function say (message, style) { + /* no longer pass in style it is not used */ + function say (message) { const pre = dom.createElement('pre') - pre.setAttribute('style', style || 'color: grey') + pre.classList.add('trackerIssueMessage') issueDiv.appendChild(pre) pre.appendChild(dom.createTextNode(message)) return pre @@ -170,10 +171,7 @@ export function renderIssue (issue, context) { function setPaneStyle () { const backgroundColor = getBackgroundColorFromTypes(issue) || '#eee' // default grey - const mystyle0 = 'padding: 0.5em 1.5em 1em 1.5em; border: 0.7em;' - const mystyle = mystyle0 + 'border-color: ' + backgroundColor + '; ' - issueDiv.setAttribute('style', mystyle) - issueDiv.style.backgroundColor = 'white' + issueDiv.style.borderColor = backgroundColor } /// ////////////// Body of renderIssue @@ -187,6 +185,7 @@ export function renderIssue (issue, context) { const store = issue.doc() const issueDiv = dom.createElement('div') + issueDiv.classList.add('trackerIssue') const me = authn.currentUser() const backgroundColor = getBackgroundColorFromTypes(issue) || 'white' @@ -195,6 +194,7 @@ export function renderIssue (issue, context) { authn.checkUser() // kick off async operation const iconButton = issueDiv.appendChild(widgets.button(dom, iconForIssue(issue))) + iconButton.classList.add('trackerIssueIconButton') widgets.makeDraggable(iconButton, issue) // Drag me wherever you need to do stuff with this issue const states = kb.any(tracker, ns.wf('issueClass')) @@ -239,8 +239,8 @@ export function renderIssue (issue, context) { // For when issue is the main solo subject, include link to tracker itself. const a = dom.createElement('a') + a.classList.add('trackerIssueTrackerLink') a.setAttribute('href', tracker.uri) - a.setAttribute('style', 'float:right') issueDiv.appendChild(a).textContent = utils.label(tracker) a.addEventListener('click', widgets.openHrefInOutlineMode, true) @@ -281,6 +281,7 @@ export function renderIssue (issue, context) { stateStore, complainIfBad ) + form.classList.add('trackerIssueForm') issueDiv.appendChild(form) form.style.backgroundColor = backgroundColor @@ -364,11 +365,11 @@ export function renderIssue (issue, context) { } if (getOption(tracker, 'allowSubIssues')) { const subIssuePanel = issueDiv.appendChild(dom.createElement('div')) - subIssuePanel.style = 'margin: 1em; padding: 1em;' + subIssuePanel.classList.add('trackerIssueSubIssuePanel') subIssuePanel.appendChild(dom.createElement('h4')).textContent = 'Super Issues' const listOfSupers = subIssuePanel.appendChild(dom.createElement('div')) - listOfSupers.style.display = 'flex' + listOfSupers.classList.add('trackerIssueSubIssuePanelSupersList') listOfSupers.refresh = function () { // const supers = kb.each(null, ns.wf('dependent'), issue, issue.doc()) const supers = supersOver(issue) @@ -379,8 +380,7 @@ export function renderIssue (issue, context) { // Sub issues subIssuePanel.appendChild(dom.createElement('h4')).textContent = 'Sub Issues' const listOfSubs = subIssuePanel.appendChild(dom.createElement('div')) - listOfSubs.style.display = 'flex' - listOfSubs.style.flexDirection = 'reverse' // Or center + listOfSubs.classList.add('trackerIssueSubIssuePanelSubsList') listOfSubs.refresh = function () { const subs = kb.each(issue, ns.wf('dependent'), null, issue.doc()) utils.syncTableToArrayReOrdered(listOfSubs, subs, renderSubIssue) @@ -388,11 +388,11 @@ export function renderIssue (issue, context) { listOfSubs.refresh() const b = dom.createElement('button') + b.classList.add('trackerIssueSubIssuePanelNewSubButton') b.setAttribute('type', 'button') subIssuePanel.appendChild(b) const classLabel = utils.label(states) b.innerHTML = 'New sub ' + classLabel - b.setAttribute('style', 'float: right; margin: 0.5em 1em;') b.addEventListener( 'click', function (_event) { @@ -422,7 +422,6 @@ export function renderIssue (issue, context) { // Comment/discussion area const spacer = issueDiv.appendChild(renderSpacer(dom, backgroundColor)) - const template = kb.anyValue(tracker, ns.wf('issueURITemplate')) /* var chatDocURITemplate = kb.anyValue(tracker, ns.wf('chatDocURITemplate')) // relaive to issue @@ -444,10 +443,12 @@ export function renderIssue (issue, context) { kb.fetcher.nowOrWhenFetched(messageStore, function (ok, body, _xhr) { if (!ok) { const er = dom.createElement('p') + er.classList.add('trackerIssueMessageAreaError') er.textContent = body // @@ use nice error message issueDiv.insertBefore(er, spacer) } else { const discussion = messageArea(dom, kb, issue, messageStore) + discussion.classList.add('trackerIssueMessageArea') issueDiv.insertBefore(discussion, spacer) issueDiv.insertBefore(renderSpacer(dom, backgroundColor), discussion) } // Not sure why e stuck this in upwards rather than downwards @@ -455,6 +456,7 @@ export function renderIssue (issue, context) { // Draggable attachment list const attachmentHint = issueDiv.appendChild(dom.createElement('div')) + attachmentHint.classList.add('trackerIssueAttachmentHint') attachmentHint.innerHTML = `
Drag files, emails, web pages onto the paper clip, or click the file upload button.
` @@ -479,13 +481,15 @@ export function renderIssue (issue, context) { } // @@ refreshTree complain('DELETED OK', context) - issueDiv.style.backgroundColor = '#eee' - issueDiv.style.fontColor = 'orange' + // This code was generated by Generative AI (GPT-5.3-Codex in GitHub Copilot) based on the following prompt: + // Could you move the color changes after // @@refreshTree into css? + issueDiv.classList.add('trackerIssueDeleted') }) - deleteButton.style.float = 'right' + deleteButton.classList.add('trackerIssueDeleteButton') // Refresh button const refreshButton = dom.createElement('button') + refreshButton.classList.add('trackerIssueRefreshButton') refreshButton.textContent = 'refresh messages' refreshButton.addEventListener( 'click', @@ -500,7 +504,6 @@ export function renderIssue (issue, context) { }, false ) - refreshButton.setAttribute('style', style.button) issueDiv.appendChild(refreshButton) return issueDiv } // renderIssue diff --git a/src/issuePane.js b/src/issuePane.js index 29fe6a0..a6d38f2 100644 --- a/src/issuePane.js +++ b/src/issuePane.js @@ -14,6 +14,13 @@ import { newIssueForm } from './newIssue' import { csvButton } from './csvButton' import { trackerSettingsFormText } from './ontology/trackerSettingsForm.ttl' import * as $rdf from 'rdflib' +import './styles/issue.css' +import './styles/board.css' +import './styles/newTracker.css' +import './styles/newIssue.css' +import './styles/csvButton.css' +import './styles/issuePane.css' +import './styles/utilities.css' const kb = store @@ -21,7 +28,8 @@ const kb = store // const TRACKER_ICON = UI.icons.iconBase + 'noun_list_638112' // const TASK_ICON = UI.icons.iconBase + 'noun_17020.svg' -const OVERFLOW_STYLE = 'position: fixed; z-index: 100; top: 1.51em; right: 2em; left: 2em; bottom:1.5em; border: 0.1em grey; overflow: scroll;' +const OVERFLOW_CLASS = 'trackerOverlay' + export default { icon: icons.iconBase + 'noun_122196.svg', // was: js/panes/issue/tbl-bug-22.png // noun_list_638112 is a checklist document @@ -100,7 +108,7 @@ export default { } catch (err) { return widgets.complain(context, 'Error writing tracker state file: ' + err) } -*/ + */ const dom = context.dom const div = options.div @@ -180,6 +188,7 @@ export default { // These are states we will show by default: the open issues. const stateArray = kb.any(klass, ns.owl('disjointUnionOf')) + if (!stateArray) { return complain(`Configuration error: state ${states} does not have substates`) } @@ -221,6 +230,7 @@ export default { } // const columnValues = states // @@ optionally selected states would work const boardDiv = board(dom, columnValues, localRenderIssueCard, options) + boardDiv.classList.add('trackerBoard') return boardDiv } @@ -316,6 +326,7 @@ export default { }) const stateStore = kb.any(subject, ns.wf('stateStore')) tableDiv.appendChild(tableRefreshButton(stateStore, tableDiv)) + tableDiv.classList.add('trackerBoardTable') return tableDiv } @@ -335,6 +346,7 @@ export default { const issuePane = context.session.paneRegistry.byName('issue') const relevantPanes = [issuePane] create.newThingUI(creationContext, context, relevantPanes) // Have to pass panes down newUI + creationDiv.classList.add('trackerCreationControlContainer') return creationDiv } @@ -389,7 +401,7 @@ export default { } else if (object.sameTerm(instancesView)) { ele.appendChild(renderInstances(ns.wf('Tracker'))) } else if ((kb.holds(tracker, ns.wf('issueCategory'), object)) || - (kb.holds(tracker, ns.wf('issueClass'), object))) { + (kb.holds(tracker, ns.wf('issueClass'), object))) { ele.appendChild(renderBoard(tracker, object)) } else { throw new Error('Unexpected tab type: ' + object) @@ -471,14 +483,16 @@ export default { const newIssueButton = dom.createElement('button') const container = dom.createElement('div') newIssueButton.setAttribute('type', 'button') - newIssueButton.setAttribute('style', 'padding: 0.3em; font-size: 100%; margin: 0.5em;') + newIssueButton.classList.add('trackerIssuePaneNewIssueButton') + container.classList.add('trackerIssuePaneNewIssueButtonContainer') container.appendChild(newIssueButton) paneDiv.appendChild(container) const img = dom.createElement('img') + img.classList.add('trackerIssuePaneNewIssueButtonImage') img.setAttribute('src', icons.iconBase + 'noun_19460_green.svg') - img.setAttribute('style', 'width: 1em; height: 1em; margin: 0.2em;') newIssueButton.appendChild(img) const span = dom.createElement('span') + span.classList.add('trackerIssuePaneNewIssueButtonText') span.innerHTML = 'New ' + classLabel newIssueButton.appendChild(span) newIssueButton.addEventListener( @@ -556,9 +570,8 @@ export default { let loginOutButton const overlay = paneDiv.appendChild(dom.createElement('div')) + overlay.classList.add(OVERFLOW_CLASS) context.overlay = overlay - overlay.style = OVERFLOW_STYLE - overlay.style.visibility = 'hidden' authn.checkUser().then(webId => { if (webId) { @@ -579,7 +592,7 @@ export default { } }) - loginOutButton.setAttribute('style', 'margin: 0.5em 1em;') + loginOutButton.classList.add('trackerIssuePaneLoginButton') paneDiv.appendChild(loginOutButton) if (!context.statusArea) { context.statusArea = paneDiv.appendChild(dom.createElement('div')) @@ -589,5 +602,3 @@ export default { return paneDiv } } - -// ends diff --git a/src/newIssue.js b/src/newIssue.js index 8de1d35..59f1021 100644 --- a/src/newIssue.js +++ b/src/newIssue.js @@ -2,10 +2,13 @@ // import { ns, utils } from 'solid-ui' import * as $rdf from 'rdflib' +import './styles/newIssue.css' -export function newIssueForm (dom, kb, tracker, superIssue, showNewIssue) { +export function newIssueForm (dom, kb, tracker, superIssue, showNewIssue, onCancel) { const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error + form.classList.add('trackerNewIssueForm') const stateStore = kb.any(tracker, ns.wf('stateStore')) + onCancel = onCancel || function () {} const timestring = function () { const now = new Date() @@ -86,20 +89,32 @@ export function newIssueForm (dom, kb, tracker, superIssue, showNewIssue) { const states = kb.any(tracker, ns.wf('issueClass')) const classLabel = utils.label(states) - form.innerHTML = - 'Title of new ' + - classLabel + - ':
' + const closeForm = function () { + if (form.parentNode) { + form.parentNode.removeChild(form) + } + onCancel() + } + + const header = form.appendChild(dom.createElement('div')) + header.classList.add('trackerNewIssueHeader') + + const heading = header.appendChild(dom.createElement('h2')) + heading.textContent = 'Add new ' + (superIssue ? 'sub ' : '') + classLabel + + const closeButton = header.appendChild(dom.createElement('button')) + closeButton.classList.add('trackerNewIssueCloseButton') + closeButton.setAttribute('type', 'button') + closeButton.setAttribute('aria-label', 'Close new issue form') + closeButton.textContent = '×' + closeButton.addEventListener('click', closeForm, false) + + const prompt = form.appendChild(dom.createElement('p')) + prompt.textContent = 'Title of new ' + classLabel + ':' + const titlefield = dom.createElement('input') + titlefield.classList.add('trackerNewIssueTitleField') titlefield.setAttribute('type', 'text') - titlefield.setAttribute( - 'style', - 'margin: 0.5em; font-size: 100%; padding: 0.3em;' - ) - titlefield.setAttribute('size', '100') titlefield.setAttribute('maxLength', '2048') // No arbitrary limits titlefield.select() // focus next user input titlefield.addEventListener( diff --git a/src/newTracker.js b/src/newTracker.js index d24c9c0..e452236 100644 --- a/src/newTracker.js +++ b/src/newTracker.js @@ -1,6 +1,7 @@ import * as UI from 'solid-ui' import * as $rdf from 'rdflib' import { store } from 'solid-logic' +import './styles/newTracker.css' const ns = UI.ns const updater = store.updater @@ -125,7 +126,6 @@ export function newTrackerButton (thisTracker, context) { // @@ Optionally link new instance to list of instances -- both ways? and to child/parent? // @@ Set up access control for new config and store. }) // callback to newAppInstance - - button.setAttribute('style', 'margin: 0.5em 1em;') + button.classList.add('trackerNewTrackerButton') return button } // newTrackerButton diff --git a/src/styles/board.css b/src/styles/board.css new file mode 100644 index 0000000..6f4dbf7 --- /dev/null +++ b/src/styles/board.css @@ -0,0 +1,42 @@ +.trackerBoard { + width: fit-content; + border-collapse: collapse; + margin: var(--spacing-md, 1em); +} + +.trackerBoardTable { + width: fit-content; + border-collapse: collapse; +} + +.trackerBoardHeader { + margin: var(--spacing-sm); + padding: var(--spacing-sm) 1em; + font-weight: bold; + font-size: 120%; +} + +.trackerBoardColumn { + border: 0.01em solid white; + padding: 0.1em; + /* display: flex; flex-direction: column; align-items: center; */ +} + +.trackerBoardHeaderCell { + margin: var(--spacing-sm); + padding: var(--spacing-sm) var(--spacing-md); + font-weight: bold; + font-size: 120%; +} + +.trackerBoardCard { + width: 100%; + border: 0.01em solid grey; + border-radius: var(--border-radius-base); + padding: var(--spacing-sm); + margin: var(--spacing-sm) 0; +} + +.trackerBoardCardTable { + margin: var(--spacing-md); +} diff --git a/src/styles/csvButton.css b/src/styles/csvButton.css new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/issue.css b/src/styles/issue.css new file mode 100644 index 0000000..2320c42 --- /dev/null +++ b/src/styles/issue.css @@ -0,0 +1,171 @@ +/* Some of the styles below are generated by AI using GPT-5.3-Codex +from Github while trying to fiddle with the layout and fix the +issue not popping up */ +.trackerBoardIssueCard { + margin: var(--spacing-xs, 0.3em); + max-width: 24em; + padding: var(--spacing-xs, 0.5em); + border: 0.05em solid grey; + border-radius: var(--border-radius-base, 0.4em); +} + +.trackerBoardIssueCardTable { + width: 100%; +} +.trackerBoardIssueCardTable td { + padding: 0.1em 0.7em 0.1em 0.1em; +} +.trackerBoardIssueCardTable img { + width: var(--icon-xs, 1.5em); + height: var(--icon-xs, 1.5em); + border-radius: 50%; +} + +.trackerBoardIssueCardTable { + width: 100%; + border-collapse: collapse; +} + +.trackerOverlayCloseButton { + background: none; + border: none; + cursor: pointer; + position: absolute; + top: var(--spacing-sm, 0.7em); + right: var(--spacing-sm, 0.7em); + margin: 0; +} +.trackerOverlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 9999; + visibility: hidden; + opacity: 0; + pointer-events: none; +} + +.trackerOverlay.trackerOverlayVisible { + visibility: visible; + opacity: 1; + pointer-events: auto; +} + +.trackerIssue { + position: relative; + background: white; + padding: var(--spacing-sm, 0.5em) var(--spacing-lg, 1.5em) var(--spacing-md, 1em) var(--spacing-lg, 1.5em); + border: 0.7em solid transparent; + border-radius: var(--border-radius-base, 0.5em); + max-width: 80%; + max-height: 80%; + overflow: auto; +} + +.trackerIssueIconButton { + width: var(--icon-sm, 1.5em); + height: var(--icon-sm, 1.5em); + border-radius: 50%; +} + +.trackerIssueSpacer { + height: var(--spacing-md, 1em); + margin: var(--spacing-sm, 0.5em); +} + +.trackerIssueForm { + margin-top: var(--spacing-md, 1em); + padding: var(--spacing-sm, 0.75em); + border: 0.05em solid grey; + border-radius: var(--border-radius-base, 0.5em); +} +.trackerIssueSubIssuePanel { + margin: var(--spacing-md, 1em); + padding: var(--spacing-md, 1em); + border: 0.05em solid grey; + border-radius: var(--border-radius-base, 0.5em); +} + +.trackerIssueSubIssuePanelSupersList { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-sm, 0.75em); +} + +.trackerIssueSubIssuePanelSubsList { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-sm, 0.75em); + flex-direction: row-reverse; /* Not sure if it should be row or column */ +} + +.trackerIssueSubIssuePanelNewSubButton { + margin: var(--spacing-sm, 0.75em) var(--spacing-md, 1em); + padding: var(--spacing-sm, 0.75em); + border: 0.05em solid grey; + border-radius: var(--border-radius-base, 0.5em); + background-color: #f0f0f0; + cursor: pointer; + float: right; +} + +.trackerIssueTrackerLink { + float: right; + margin: var(--spacing-xs, 0.5em) 4em; + padding: var(--spacing-xs, 0.5em); +} + +.trackerIssueMessage { + color: grey; +} + +.trackerIssueDeleteButton { + color: white; + border: none; + padding: var(--spacing-xs, 0.5em); + border-radius: var(--border-radius-base, 0.4em); + cursor: pointer; + float: right; /* this is the only one from the code */ +} + +.trackerIssueDeleted { + background-color: #eee; + color: orange; +} + +/* below styles the remove task popup */ +.trackerIssue > div[style*="position: relative"] { + z-index: 2000; +} + +.trackerIssue > div[style*="position: relative"] > div[style*="position: absolute"] { + top: -1em !important; + left: 50% !important; + transform: translate(-55%, -3em); + z-index: 2001; +} + +.trackerIssueRefreshButton { + clear: both; + position: relative; + z-index: 1; +} + +.trackerIssueMessageArea { + border: 0.05em solid grey; + border-radius: var(--border-radius-base, 0.5em); + padding: var(--spacing-md, 1em); +} + +.trackerIssueMessageAreaError { + color: red; + font-weight: bold; +} + + diff --git a/src/styles/issuePane.css b/src/styles/issuePane.css new file mode 100644 index 0000000..5b863c2 --- /dev/null +++ b/src/styles/issuePane.css @@ -0,0 +1,47 @@ +/* CSS for the issue pane component was influenced by generative AI +using the GPT-5.3-Codex model in GitHub. The prompts used are below: +- can you style my table and make it look nice? +- can you handle the visibility in exposeOverlay with css? */ + +.trackerIssuePaneNewIssueButtonContainer { + display: flex; + flex-direction: row; +} + +.trackerIssuePaneNewIssueButton { + display: inline-flex; + background-color: #F0F0F0; + color: #505050; + flex-direction: row; + align-items: center; + justify-content: flex-start; + border: 1px solid grey; + border-radius: var(--border-radius-base, 0.5em); + cursor: pointer; + gap: var(--spacing-sm, 0.75em); + white-space: nowrap; + text-align: left; + padding: var(--spacing-sm, 0.75em); + font-size: 100%; + margin: var(--spacing-sm, 0.75em); +} + +.trackerIssuePaneNewIssueButton > .trackerIssuePaneNewIssueButtonImage { + order: 1; + display: inline-block; + width: var(--icon-xxs, 1em); + height: var(--icon-xxs, 1em); + margin: 0.2em; + vertical-align: middle; +} + +.trackerIssuePaneNewIssueButton > .trackerIssuePaneNewIssueButtonText { + order: 2; + display: inline-block; + margin-left: 0; + vertical-align: middle; +} + +.trackerIssuePaneLoginButton { + margin: var(--spacing-sm) var(--spacing-md); +} diff --git a/src/styles/newIssue.css b/src/styles/newIssue.css new file mode 100644 index 0000000..f192e04 --- /dev/null +++ b/src/styles/newIssue.css @@ -0,0 +1,13 @@ +.trackerNewIssueForm { + display: flex; + flex-direction: column; + gap: var(--spacing-sm, 0.75em); + padding: var(--spacing-md, 1em); +} + +.trackerNewIssueTitleField { + margin: var(--spacing-sm, 0.75em); + font-size: 100%; + padding: var(--spacing-sm, 0.75em); + width: 100%; +} diff --git a/src/styles/newTracker.css b/src/styles/newTracker.css new file mode 100644 index 0000000..f6979c7 --- /dev/null +++ b/src/styles/newTracker.css @@ -0,0 +1,3 @@ +.trackerNewTrackerButton { + margin: var(--spacing-sm, 0.75em) var(--spacing-md, 1em); +} diff --git a/src/styles/utilities.css b/src/styles/utilities.css new file mode 100644 index 0000000..d6c5885 --- /dev/null +++ b/src/styles/utilities.css @@ -0,0 +1,4 @@ +:root { + --icon-xxs: 1em; + --icon-xs: 1.5em; +} \ No newline at end of file diff --git a/webpack.config.mjs b/webpack.config.mjs index 663c957..df0b639 100644 --- a/webpack.config.mjs +++ b/webpack.config.mjs @@ -1,56 +1,97 @@ -import NodePolyfillPlugin from 'node-polyfill-webpack-plugin' import path from 'path' +import { moduleRules } from './webpack.module.rules.mjs' +import TerserPlugin from 'terser-webpack-plugin' +import CopyPlugin from 'copy-webpack-plugin' -export default [ - { - mode: 'production', - entry: { - board: './src/board.js', - csvButton: './src/csvButton.js', - issue: './src/issue.js', - issuePane: './src/issuePane.js', - newIssue: './src/newIssue.js', - newTracker: './src/newTracker.js', - }, - output: { - path: path.resolve(process.cwd(), 'dist'), - filename: '[name].js', - library: { - name: '[name]', - type: 'umd' - }, - globalObject: 'this', - clean: false +const common = { + entry: './src/issuePane.js', + resolve: { + extensions: ['.js', '.ts'], + }, + module: { + rules: moduleRules, + }, + externals: { + fs: 'null', + 'node-fetch': 'fetch', + 'isomorphic-fetch': 'fetch', + 'text-encoding': 'TextEncoder', + '@trust/webcrypto': 'crypto', + rdflib: 'rdflib', + 'solid-logic': 'SolidLogic', + 'solid-ui': 'UI' + }, + devtool: 'source-map', +} + +const normalConfig = { + ...common, + mode: 'production', + output: { + path: path.resolve(process.cwd(), 'lib'), + filename: 'issue-pane.js', + library: { + type: 'umd', + name: 'IssuePane', + export: 'default', }, - plugins: [ - new NodePolyfillPlugin({ - excludeAliases: ['console', 'process'] - }) - ], - module: { - rules: [ + globalObject: 'this', + clean: true, + }, + plugins: [ + ...(common.plugins || []), + new CopyPlugin({ + patterns: [ { - test: /\.(js|ts)$/, - exclude: /node_modules/, - use: ['babel-loader'], + from: path.resolve('src/styles'), + to: path.resolve('lib/styles'), }, + ], + }), + ], + optimization: { + minimize: false, + } +} +const minConfig = { + ...common, + mode: 'production', + output: { + path: path.resolve(process.cwd(), 'lib'), + filename: 'issue-pane.min.js', + library: { + type: 'umd', + name: 'IssuePane', + export: 'default', + }, + globalObject: 'this', + clean: false, + }, + plugins: [ + ...(common.plugins || []), + new CopyPlugin({ + patterns: [ { - test: /\.ttl$/, // Target text files - type: 'asset/source', // Load the file's content as a string + from: path.resolve('src/styles'), + to: path.resolve('lib/styles'), }, - ], - }, - externals: { - 'solid-ui': 'UI', - 'solid-logic': 'SolidLogic', - rdflib: '$rdf', - }, - resolve: { - extensions: ['.js', '.ts'] - }, + }), + ], + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + format: { + comments: false, + }, + }, + extractComments: false, + }) + ], + } +} - devtool: false, - }, -] +export default [normalConfig, minConfig] diff --git a/webpack.dev.config.mjs b/webpack.dev.config.mjs index e4d727f..8493b38 100644 --- a/webpack.dev.config.mjs +++ b/webpack.dev.config.mjs @@ -1,5 +1,6 @@ import HtmlWebpackPlugin from 'html-webpack-plugin' import NodePolyfillPlugin from 'node-polyfill-webpack-plugin' +import { moduleRules } from './webpack.module.rules.mjs' export default [ { @@ -10,19 +11,7 @@ export default [ new NodePolyfillPlugin() ], module: { - rules: [ - { - test: /\.(js|ts)$/, - exclude: /node_modules/, - use: ['babel-loader'], - }, - - { - test: /\.ttl$/, // Target text files - type: 'asset/source', // Load the file's content as a string - }, - - ], + rules: moduleRules, }, resolve: { extensions: ['.js', '.ts'], diff --git a/webpack.module.rules.mjs b/webpack.module.rules.mjs new file mode 100644 index 0000000..cfc5c02 --- /dev/null +++ b/webpack.module.rules.mjs @@ -0,0 +1,16 @@ +export const moduleRules = [ + { + test: /\.(js|ts)$/, + exclude: /node_modules/, + use: ['babel-loader'], + }, + { + test: /\.css$/, + exclude: /\.module\.css$/, + use: ['style-loader', 'css-loader'], + }, + { + test: /\.ttl$/, + type: 'asset/source', + } +]