From 24c095f109c844fa88d23e98ab0dd5e173f2caf8 Mon Sep 17 00:00:00 2001 From: brysonbw Date: Sat, 13 Sep 2025 19:40:51 -0600 Subject: [PATCH 1/5] Add lit/task lib --- package-lock.json | 10 ++++++++++ package.json | 1 + 2 files changed, 11 insertions(+) diff --git a/package-lock.json b/package-lock.json index 4b6b4f0..bb2b14c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "code-cause-site", "version": "1.0.1", "dependencies": { + "@lit/task": "^1.0.3", "@vaadin/router": "^2.0.0", "lit": "^3.3.1", "three": "^0.179.1", @@ -2353,6 +2354,15 @@ "@lit-labs/ssr-dom-shim": "^1.2.0" } }, + "node_modules/@lit/task": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lit/task/-/task-1.0.3.tgz", + "integrity": "sha512-1gJGJl8WON+2j0y9xfcD+XsS1rvcy3XDgsIhcdUW++yTR8ESjZW6o7dn8M8a4SZM8NnJe6ynS2cKWwsbfLOurg==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.0.0 || ^2.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", diff --git a/package.json b/package.json index 817c6d5..32f432d 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "format": "prettier --write ." }, "dependencies": { + "@lit/task": "^1.0.3", "@vaadin/router": "^2.0.0", "lit": "^3.3.1", "three": "^0.179.1", From df7f520da669a0ea6d1822db7e600033c0684fd8 Mon Sep 17 00:00:00 2001 From: brysonbw Date: Sat, 13 Sep 2025 19:44:01 -0600 Subject: [PATCH 2/5] Add projects view --- src/components/header/header.ts | 24 ++++- src/routes.ts | 12 +++ src/utils/constants.ts | 2 + src/views/projects-view.ts | 177 ++++++++++++++++++++++++++++++++ 4 files changed, 214 insertions(+), 1 deletion(-) create mode 100644 src/views/projects-view.ts diff --git a/src/components/header/header.ts b/src/components/header/header.ts index 049b831..3239de3 100644 --- a/src/components/header/header.ts +++ b/src/components/header/header.ts @@ -23,11 +23,14 @@ export class HeaderComponent extends LitElement { ` @@ -59,6 +62,11 @@ export class HeaderComponent extends LitElement { align-items: center; } + .nav-logo a { + text-decoration: none; + color: var(--primary-text-color); + } + .logo { height: 1.8rem; width: auto; @@ -85,6 +93,20 @@ export class HeaderComponent extends LitElement { a:hover { color: #4b7ce6; } + + @media only screen and (max-width: 640px) { + .logo { + height: 1.65rem; + } + + .app-title { + font-size: 0.95rem; + } + + .nav-links a { + font-size: 0.95rem; + } + } `; } diff --git a/src/routes.ts b/src/routes.ts index 63ccf90..46b7de5 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -31,6 +31,18 @@ export const routes: Route[] = [ return commands.component('about-view'); }, }, + { + path: '/projects', + async action( + this: Route, + _context: RouteContext, + commands: Commands + ): Promise { + await import('./views/projects-view'); + document.title = `${APP_TITLE} | Projects`; + return commands.component('projects-view'); + }, + }, { path: '(.*)', async action( diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 853c90c..7fd38b5 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -1 +1,3 @@ export const APP_TITLE = 'Code Cause'; +export const GITHUB_API_BASE_URL = 'https://api.github.com/'; +export const GITHUB_USERNAME = 'Code-Cause-Collective'; diff --git a/src/views/projects-view.ts b/src/views/projects-view.ts new file mode 100644 index 0000000..2481e79 --- /dev/null +++ b/src/views/projects-view.ts @@ -0,0 +1,177 @@ +import { Task } from '@lit/task'; +import { LitElement, css, html, type TemplateResult } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { GITHUB_API_BASE_URL, GITHUB_USERNAME } from '../utils/constants'; +import '../shared/loading-indicator'; + +// Types +type Repo = { + id: number; + name: string; + full_name: string; + private: boolean; + html_url: string; + description: string; + stargazers_count: number; +}; + +@customElement('projects-view') +export class ProjectsView extends LitElement { + connectedCallback(): void { + super.connectedCallback(); + this._githubReposTask.run(); + } + + private _githubReposTask = new Task(this, { + task: async (_args, { signal }): Promise => { + return await fetch( + `${GITHUB_API_BASE_URL}users/${GITHUB_USERNAME}/repos`, + { signal } + ) + .then((response) => response.json()) + .then((data: Repo[]) => { + if (!data || !Array.isArray(data)) { + throw Error(); + } + return data.filter((repo: Repo) => repo.name !== '.github'); + }); + }, + }); + + render(): TemplateResult { + return html` ${this._githubReposTask.render({ + pending: () => html``, + complete: (repos) => html` +
+
+

Projects

+

A curated list of our open source repositories

+
+
    + ${repos.map((repo) => { + return html`
  • +
    ⭐ ${repo.stargazers_count}
    + + ${repo.name} + +

    ${repo.description}

    +
  • `; + })} +
+
+ `, + error: () => html` +
+ Unable to display projects. Please try again later. +
+ `, + })}`; + } + + static styles = css` + :host { + width: 100%; + } + + .container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1.5rem; + width: 100%; + max-width: 1200px; + margin: 0 auto; + padding: 1rem 2rem; + box-sizing: border-box; + } + + .title { + text-align: center; + } + + .repo-list { + list-style: none; + padding: 0; + margin: 0; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 1.5rem; + width: 100%; + } + + .repo-card { + position: relative; + background: transparent; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 8px; + transition: + transform 0.2s ease, + box-shadow 0.2s ease; + } + + .repo-card:hover { + transform: translateY(-3px); + } + + .repo-description { + font-size: 0.9rem; + color: #e5e7eb; + margin: 0; + } + + .repo-link { + font-size: 0.9rem; + color: #4da6ff; + text-decoration: none; + font-size: 1.2rem; + font-weight: 600; + } + + .repo-link:hover { + text-decoration: underline; + } + + .repo-stars { + position: absolute; + top: 16px; + right: 12px; + font-size: 0.9rem; + color: #f5d547; + font-weight: 500; + opacity: 0; + transition: opacity 0.2s ease; + } + + .repo-card:hover .repo-stars { + opacity: 1; + } + + .error { + color: orange; + margin-top: 5em; + text-align: center; + } + + loading-indicator { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + z-index: 9999; + } + `; +} + +declare global { + interface HTMLElementTagNameMap { + 'projects-view': ProjectsView; + } +} From cc7187e6f502276b4cfec8c9331c57af79f64d72 Mon Sep 17 00:00:00 2001 From: brysonbw Date: Sat, 13 Sep 2025 19:44:18 -0600 Subject: [PATCH 3/5] Add shared loading indicator el --- src/shared/loading-indicator.ts | 63 +++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/shared/loading-indicator.ts diff --git a/src/shared/loading-indicator.ts b/src/shared/loading-indicator.ts new file mode 100644 index 0000000..7166688 --- /dev/null +++ b/src/shared/loading-indicator.ts @@ -0,0 +1,63 @@ +import { LitElement, css, html, type TemplateResult } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; + +@customElement('loading-indicator') +export class LoadingIndicator extends LitElement { + @property({ reflect: true }) size: string = 'default'; + @property({ reflect: true }) color: string = '#ffffff'; + + render(): TemplateResult { + return html`
+
+ Loading... +
`; + } + + static styles = css` + :host { + display: inline-block; + } + + .spinner-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 8px; + height: 100%; + } + + .spinner { + width: 40px; + height: 40px; + border: 4px solid rgba(255, 255, 255, 0.2); + border-top-color: var(--spinner-color, #ffffff); + border-radius: 50%; + animation: spin 1s linear infinite; + } + + .spinner-text { + font-size: 14px; + color: var(--spinner-color, #007bff); + text-align: center; + } + + @keyframes spin { + to { + transform: rotate(360deg); + } + } + + :host([size='small']) .spinner { + width: 24px; + height: 24px; + border-width: 3px; + } + `; +} + +declare global { + interface HTMLElementTagNameMap { + 'loading-indicator': LoadingIndicator; + } +} From 0e2872a7c012d3eaa92a7b7f4e96567416ec6fe1 Mon Sep 17 00:00:00 2001 From: brysonbw Date: Sat, 13 Sep 2025 19:44:34 -0600 Subject: [PATCH 4/5] Add JSDoc comments for functions --- src/utils/dateFunctions.ts | 1 + src/utils/helperFunctions.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/utils/dateFunctions.ts b/src/utils/dateFunctions.ts index 34eb273..831b752 100644 --- a/src/utils/dateFunctions.ts +++ b/src/utils/dateFunctions.ts @@ -1,3 +1,4 @@ +/** Get current date year */ export function currentYear(): string { const date = new Date(); return date.getFullYear().toString(); diff --git a/src/utils/helperFunctions.ts b/src/utils/helperFunctions.ts index e3eb5de..550311b 100644 --- a/src/utils/helperFunctions.ts +++ b/src/utils/helperFunctions.ts @@ -1,4 +1,6 @@ import { v4 as uuidv4 } from 'uuid'; + +/** Get UUIDv4 */ export function UUIDv4(): string { if (crypto && typeof crypto?.randomUUID === 'function') { return crypto.randomUUID(); From 97f71080dc6b4ce29cd421806c46dd65881081a8 Mon Sep 17 00:00:00 2001 From: brysonbw Date: Sat, 13 Sep 2025 19:47:23 -0600 Subject: [PATCH 5/5] Bump deps --- package-lock.json | 215 +++++++++++++++++++++++----------------------- package.json | 14 +-- 2 files changed, 116 insertions(+), 113 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb2b14c..4833e92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,23 +11,23 @@ "@lit/task": "^1.0.3", "@vaadin/router": "^2.0.0", "lit": "^3.3.1", - "three": "^0.179.1", + "three": "^0.180.0", "three-stdlib": "^2.36.0", - "uuid": "^11.1.0" + "uuid": "^13.0.0" }, "devDependencies": { - "@types/three": "^0.179.0", + "@types/three": "^0.180.0", "@vitejs/plugin-legacy": "^7.2.1", - "eslint": "^9.33.0", + "eslint": "^9.35.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-lit": "^2.1.1", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-eslint": "^16.4.2", - "terser": "^5.43.1", + "terser": "^5.44.0", "typescript": "~5.9.2", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2", + "typescript-eslint": "^8.43.0", + "vite": "^7.1.5", "vite-plugin-eslint": "^1.8.1" }, "engines": { @@ -2046,9 +2046,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2150,9 +2150,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", - "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", + "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", "dev": true, "license": "MIT", "engines": { @@ -2780,9 +2780,9 @@ "license": "MIT" }, "node_modules/@types/three": { - "version": "0.179.0", - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.179.0.tgz", - "integrity": "sha512-VgbFG2Pgsm84BqdegZzr7w2aKbQxmgzIu4Dy7/75ygiD/0P68LKmp5ie08KMPNqGTQwIge8s6D1guZf1RnZE0A==", + "version": "0.180.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.180.0.tgz", + "integrity": "sha512-ykFtgCqNnY0IPvDro7h+9ZeLY+qjgUWv+qEvUt84grhenO60Hqd4hScHE7VTB9nOQ/3QM8lkbNE+4vKjEpUxKg==", "dev": true, "license": "MIT", "dependencies": { @@ -2815,17 +2815,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.1.tgz", - "integrity": "sha512-yYegZ5n3Yr6eOcqgj2nJH8cH/ZZgF+l0YIdKILSDjYFRjgYQMgv/lRjV5Z7Up04b9VYUondt8EPMqg7kTWgJ2g==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.43.0.tgz", + "integrity": "sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/type-utils": "8.39.1", - "@typescript-eslint/utils": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/type-utils": "8.43.0", + "@typescript-eslint/utils": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -2839,7 +2839,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.39.1", + "@typescript-eslint/parser": "^8.43.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -2855,16 +2855,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.39.1.tgz", - "integrity": "sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", + "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", "debug": "^4.3.4" }, "engines": { @@ -2880,14 +2880,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.39.1.tgz", - "integrity": "sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", + "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.39.1", - "@typescript-eslint/types": "^8.39.1", + "@typescript-eslint/tsconfig-utils": "^8.43.0", + "@typescript-eslint/types": "^8.43.0", "debug": "^4.3.4" }, "engines": { @@ -2902,14 +2902,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.39.1.tgz", - "integrity": "sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", + "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1" + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2920,9 +2920,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.1.tgz", - "integrity": "sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", + "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", "dev": true, "license": "MIT", "engines": { @@ -2937,15 +2937,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.39.1.tgz", - "integrity": "sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.43.0.tgz", + "integrity": "sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/utils": "8.43.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -2962,9 +2962,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.39.1.tgz", - "integrity": "sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", + "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", "dev": true, "license": "MIT", "engines": { @@ -2976,16 +2976,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", + "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/project-service": "8.43.0", + "@typescript-eslint/tsconfig-utils": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3031,16 +3031,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.39.1.tgz", - "integrity": "sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.43.0.tgz", + "integrity": "sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1" + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3055,13 +3055,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.1.tgz", - "integrity": "sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", + "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", + "@typescript-eslint/types": "8.43.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -3648,19 +3648,19 @@ } }, "node_modules/eslint": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", - "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", + "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.33.0", + "@eslint/js": "9.35.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -3942,11 +3942,14 @@ } }, "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -5742,14 +5745,14 @@ "license": "MIT" }, "node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -5768,9 +5771,9 @@ "license": "MIT" }, "node_modules/three": { - "version": "0.179.1", - "resolved": "https://registry.npmjs.org/three/-/three-0.179.1.tgz", - "integrity": "sha512-5y/elSIQbrvKOISxpwXCR4sQqHtGiOI+MKLc3SsBdDXA2hz3Mdp3X59aUp8DyybMa34aeBwbFTpdoLJaUDEWSw==", + "version": "0.180.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz", + "integrity": "sha512-o+qycAMZrh+TsE01GqWUxUIKR1AL0S8pq7zDkYOQw8GqfX8b8VoCKYUoHbhiX5j+7hr8XsuHDVU6+gkQJQKg9w==", "license": "MIT" }, "node_modules/three-stdlib": { @@ -5791,14 +5794,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -5880,16 +5883,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.39.1.tgz", - "integrity": "sha512-GDUv6/NDYngUlNvwaHM1RamYftxf782IyEDbdj3SeaIHHv8fNQVRC++fITT7kUJV/5rIA/tkoRSSskt6osEfqg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.43.0.tgz", + "integrity": "sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.39.1", - "@typescript-eslint/parser": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1" + "@typescript-eslint/eslint-plugin": "8.43.0", + "@typescript-eslint/parser": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/utils": "8.43.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5989,31 +5992,31 @@ } }, "node_modules/uuid": { - "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==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/vite": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz", - "integrity": "sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "fdir": "^6.4.6", + "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" diff --git a/package.json b/package.json index 32f432d..e9af048 100644 --- a/package.json +++ b/package.json @@ -18,23 +18,23 @@ "@lit/task": "^1.0.3", "@vaadin/router": "^2.0.0", "lit": "^3.3.1", - "three": "^0.179.1", + "three": "^0.180.0", "three-stdlib": "^2.36.0", - "uuid": "^11.1.0" + "uuid": "^13.0.0" }, "devDependencies": { - "@types/three": "^0.179.0", + "@types/three": "^0.180.0", "@vitejs/plugin-legacy": "^7.2.1", - "eslint": "^9.33.0", + "eslint": "^9.35.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-lit": "^2.1.1", "eslint-plugin-prettier": "^5.5.4", "prettier": "^3.6.2", "prettier-eslint": "^16.4.2", - "terser": "^5.43.1", + "terser": "^5.44.0", "typescript": "~5.9.2", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2", + "typescript-eslint": "^8.43.0", + "vite": "^7.1.5", "vite-plugin-eslint": "^1.8.1" } }