Compare commits

..

6 Commits

Author SHA1 Message Date
minori 2f040f29cf deps: update @types/node to 25.2.3
Node.js CI / CI (pull_request) Successful in 30s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m21s
2026-02-20 07:01:39 -08:00
minori eeb12e3766 deps: update @types/node to 25.2.2
Node.js CI / CI (pull_request) Successful in 28s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m26s
2026-02-18 07:01:22 -08:00
minori 4e81c85132 deps: update @types/node to 25.2.1
Node.js CI / CI (pull_request) Successful in 32s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m25s
2026-02-15 07:01:27 -08:00
minori 175fa80e9e deps: update @types/node to 25.2.0
Node.js CI / CI (pull_request) Successful in 31s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m20s
2026-02-12 07:01:37 -08:00
minori 981a59be23 deps: update @types/node to 25.1.0
Node.js CI / CI (pull_request) Successful in 48s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 2m13s
2026-02-08 07:02:00 -08:00
minori 42799ae84e deps: update @types/node to 25.0.10
Node.js CI / CI (pull_request) Successful in 25s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m16s
2026-02-03 19:28:30 -08:00
5 changed files with 67 additions and 84 deletions
+25
View File
@@ -0,0 +1,25 @@
# Package Manager Configuration
# Force pnpm usage - breaks npm/yarn intentionally
node-linker=pnpm
# Security: Disable all lifecycle scripts
ignore-scripts=true
enable-pre-post-scripts=false
# Security: Require packages to be 10+ days old before installation
minimum-release-age=14400
# Security: Verify package integrity hashes
verify-store-integrity=true
# Security: Enforce strict trust policies
trust-policy=strict
# Security: Strict peer dependency resolution
strict-peer-dependencies=true
# Performance: Use symlinks for node_modules
symlink=true
# Lockfile: Ensure lockfile is not modified during install
frozen-lockfile=false
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "website-headers",
"version": "4.1.0",
"version": "4.0.0",
"description": "",
"main": "index.js",
"type": "module",
@@ -20,7 +20,7 @@
"devDependencies": {
"@nhcarrigan/eslint-config": "5.0.0",
"@nhcarrigan/typescript-config": "4.0.0",
"@types/node": "22.10.2",
"@types/node": "25.2.3",
"concurrently": "9.1.0",
"eslint": "9.17.0",
"globals": "15.14.0",
+26 -26
View File
@@ -10,13 +10,13 @@ importers:
devDependencies:
'@nhcarrigan/eslint-config':
specifier: 5.0.0
version: 5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))
version: 5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@25.2.3)(terser@5.37.0))
'@nhcarrigan/typescript-config':
specifier: 4.0.0
version: 4.0.0(typescript@5.7.2)
'@types/node':
specifier: 22.10.2
version: 22.10.2
specifier: 25.2.3
version: 25.2.3
concurrently:
specifier: 9.1.0
version: 9.1.0
@@ -575,8 +575,8 @@ packages:
'@types/json5@0.0.29':
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
'@types/node@22.10.2':
resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
'@types/node@25.2.3':
resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -2015,8 +2015,8 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
undici-types@6.20.0:
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
update-browserslist-db@1.1.1:
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
@@ -2380,7 +2380,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@nhcarrigan/eslint-config@5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))':
'@nhcarrigan/eslint-config@5.0.0(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(playwright@1.49.1)(react@19.0.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@25.2.3)(terser@5.37.0))':
dependencies:
'@eslint/compat': 1.2.4(eslint@9.17.0)
'@eslint/eslintrc': 3.2.0
@@ -2388,7 +2388,7 @@ snapshots:
'@stylistic/eslint-plugin': 2.12.0(eslint@9.17.0)(typescript@5.7.2)
'@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)
'@typescript-eslint/parser': 8.17.0(eslint@9.17.0)(typescript@5.7.2)
'@vitest/eslint-plugin': 1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))
'@vitest/eslint-plugin': 1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@25.2.3)(terser@5.37.0))
eslint: 9.17.0
eslint-plugin-deprecation: 3.0.0(eslint@9.17.0)(typescript@5.7.2)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)
@@ -2401,7 +2401,7 @@ snapshots:
playwright: 1.49.1
react: 19.0.0
typescript: 5.7.2
vitest: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
vitest: 2.1.8(@types/node@25.2.3)(terser@5.37.0)
transitivePeerDependencies:
- '@typescript-eslint/utils'
- eslint-import-resolver-typescript
@@ -2503,9 +2503,9 @@ snapshots:
'@types/json5@0.0.29': {}
'@types/node@22.10.2':
'@types/node@25.2.3':
dependencies:
undici-types: 6.20.0
undici-types: 7.16.0
'@types/normalize-package-data@2.4.4': {}
@@ -2666,13 +2666,13 @@ snapshots:
'@typescript-eslint/types': 8.18.1
eslint-visitor-keys: 4.2.0
'@vitest/eslint-plugin@1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0))':
'@vitest/eslint-plugin@1.1.14(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8(@types/node@25.2.3)(terser@5.37.0))':
dependencies:
'@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2)
eslint: 9.17.0
optionalDependencies:
typescript: 5.7.2
vitest: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
vitest: 2.1.8(@types/node@25.2.3)(terser@5.37.0)
'@vitest/expect@2.1.8':
dependencies:
@@ -2681,13 +2681,13 @@ snapshots:
chai: 5.1.2
tinyrainbow: 1.2.0
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))':
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@25.2.3)(terser@5.37.0))':
dependencies:
'@vitest/spy': 2.1.8
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
vite: 5.4.11(@types/node@25.2.3)(terser@5.37.0)
'@vitest/pretty-format@2.1.8':
dependencies:
@@ -4249,7 +4249,7 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
undici-types@6.20.0: {}
undici-types@7.16.0: {}
update-browserslist-db@1.1.1(browserslist@4.24.3):
dependencies:
@@ -4266,13 +4266,13 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
vite-node@2.1.8(@types/node@22.10.2)(terser@5.37.0):
vite-node@2.1.8(@types/node@25.2.3)(terser@5.37.0):
dependencies:
cac: 6.7.14
debug: 4.4.0
es-module-lexer: 1.5.4
pathe: 1.1.2
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
vite: 5.4.11(@types/node@25.2.3)(terser@5.37.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -4284,20 +4284,20 @@ snapshots:
- supports-color
- terser
vite@5.4.11(@types/node@22.10.2)(terser@5.37.0):
vite@5.4.11(@types/node@25.2.3)(terser@5.37.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.29.0
optionalDependencies:
'@types/node': 22.10.2
'@types/node': 25.2.3
fsevents: 2.3.3
terser: 5.37.0
vitest@2.1.8(@types/node@22.10.2)(terser@5.37.0):
vitest@2.1.8(@types/node@25.2.3)(terser@5.37.0):
dependencies:
'@vitest/expect': 2.1.8
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@25.2.3)(terser@5.37.0))
'@vitest/pretty-format': 2.1.8
'@vitest/runner': 2.1.8
'@vitest/snapshot': 2.1.8
@@ -4313,11 +4313,11 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.2
tinyrainbow: 1.2.0
vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0)
vite-node: 2.1.8(@types/node@22.10.2)(terser@5.37.0)
vite: 5.4.11(@types/node@25.2.3)(terser@5.37.0)
vite-node: 2.1.8(@types/node@25.2.3)(terser@5.37.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.10.2
'@types/node': 25.2.3
transitivePeerDependencies:
- less
- lightningcss
-22
View File
@@ -1,22 +0,0 @@
# Security
# Do not execute any scripts of installed packages (project scripts still run)
ignoreDepScripts: true
# Do not automatically run pre/post scripts (e.g. preinstall, postbuild)
enablePrePostScripts: false
# Only allow packages published at least 10 days ago (reduces risk of compromised packages)
minimumReleaseAge: 14400
# Fail if a package's trust level has decreased compared to previous releases
trustPolicy: no-downgrade
# Ignore trust policy for packages published more than 1 year ago (predates provenance signing)
trustPolicyIgnoreAfter: 525960
# Fail if there are missing or invalid peer dependencies
# We are temporarily disabling this to allow for the development of the website-headers package
strictPeerDependencies: false
# Prevent transitive dependencies from using exotic sources (git repos, direct tarball URLs)
blockExoticSubdeps: true
# Lockfile
# Allow the lockfile to be updated during install (set to true in CI for stricter reproducibility)
preferFrozenLockfile: false
+14 -34
View File
@@ -180,10 +180,14 @@ nhcarriganHeadersLargeIcon.href
const nhcarriganHeadersStyles = document.createElement("style");
nhcarriganHeadersStyles.id = "nhcarrigan-global-styles";
nhcarriganHeadersStyles.innerHTML = `
@font-face {
font-family: 'Vampyr';
src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
}
/* Import fun and whimsical fonts! */
@import url('https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Creepster&family=Griffy&family=Henny+Penny&display=swap');
:root {
/* Witchy Purple Rose Palette */
--witch-purple: #2B1B3D;
@@ -682,7 +686,7 @@ pre {
}
.mystical-text {
font-family: 'Henny Penny', cursive;
font-family: 'Henny Penny', 'Vampyr', cursive;
letter-spacing: 2px;
text-shadow: 2px 2px 4px rgba(68, 39, 90, 0.4);
}
@@ -699,43 +703,20 @@ pre {
text-shadow: none;
}
@media screen and (max-width: 1000px) {
#tree-nation-tree-counter {
display: none;
}
}
@media screen and (max-width: 835px) {
#theme-select-button {
font-size: 10pt;
padding: 8px 16px;
}
#show-socials-button {
font-size: 10pt;
padding: 8px 16px;
}
}
@media screen and (max-width: 768px) {
@media screen and (max-width: 625px) {
#tree-nation-offset-website {
display: none;
}
}
@media screen and (max-width: 625px) {
footer, #footer-inner-container {
height: 75px;
height: 50px;
justify-content: space-around;
}
main {
margin-bottom: 85px;
}
#footer-copyright {
font-size: 10pt;
margin-bottom: 60px;
}
}
@media screen and (max-width: 560px) {
@media screen and (max-width: 425px) {
#donate-badge {
display: none;
}
@@ -755,7 +736,6 @@ pre {
const nhcarriganHeadersFooter = document.createElement("footer");
nhcarriganHeadersFooter.innerHTML = `
<div id="footer-inner-container">
<div id="tree-nation-tree-counter" data-widget-type="tree-counter" data-tree-nation-code="52a9395caa57df28" data-lang="en" data-theme="dark"></div>
<p id="footer-copyright" style="margin: 0; display: flex; align-items: center;">&copy; <a href="https://nhcarrigan.com" target="_blank" style="margin-left: 5px;">Naomi Carrigan</a></p>
<button id="show-socials-button" type="button">
<i class="fa-solid fa-share-nodes"></i> Connect with Us
@@ -766,7 +746,7 @@ nhcarriganHeadersFooter.innerHTML = `
<a id="donate-badge" href="https://buy.stripe.com/cN24iTfqu1j6b3afZ2" target="_blank" rel="noreferrer">
<img src="https://cdn.nhcarrigan.com/donate.png" alt="Donate" style="width: 70px; height: 70px;">
</a>
<div id="tree-nation-offset-website" data-widget-type="offset-website" data-tree-nation-code="a17464e0cd351220" data-lang="en" data-theme="dark"></div>
<div id="tree-nation-offset-website"></div>
</div>
<div id="social-list">
<div class="social-list-item">
@@ -828,7 +808,7 @@ nhcarriganHeadersFooter.innerHTML = `
const nhcarriganHeadersTreeNation = document.createElement("script");
nhcarriganHeadersTreeNation.src
= "https://widgets.tree-nation.com/js/widgets/v3/widgets.min.js";
= "https://widgets.tree-nation.com/js/widgets/v1/widgets.min.js?v=1.0";
const nhcarriganHeadersTreeNationBottom = document.createElement("script");
nhcarriganHeadersTreeNationBottom.defer = true;
nhcarriganHeadersTreeNationBottom.async = true;
@@ -848,7 +828,7 @@ const interval = setInterval(() => {
}, 1000);
`;
const nhcarriganHeadersFontAwesome = document.createElement("script");
nhcarriganHeadersFontAwesome.src = "https://cdn.nhcarrigan.com/font-awesome/all.min.js";
nhcarriganHeadersFontAwesome.src = "https://kit.fontawesome.com/f949111719.js";
const nhcarriganHeadersAnalytics = document.createElement("script");
nhcarriganHeadersAnalytics.defer = true;
nhcarriganHeadersAnalytics.src
@@ -1011,7 +991,7 @@ nhcarriganHeadersCta.id = "community-cta";
nhcarriganHeadersCta.innerHTML = `
<h1 autofocus style="font-size: 2rem; margin-bottom: 20px; color: var(--witch-plum);">Welcome~!</h1>
<div style="display: flex; justify-content: space-around; margin-bottom: 25px; align-items: center;">
<img src="https://cdn.nhcarrigan.com/profile_personal.jpg" alt="Naomi's Avatar" style="width: 80px; height: 80px; border-radius: 50%;">
<img src="https://cdn.nhcarrigan.com/logo.png" alt="NHCarrigan Logo" style="width: 80px; height: 80px;">
<p style="flex: 1; margin-left: 20px; line-height: 1.8;">
Join Naomi's personal Discord community to stay connected with her latest projects and activities!
</p>