generated from nhcarrigan/template
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f1ac1ab4e9 | |||
| de9272d8d1 | |||
| f94202bbf5 | |||
| f61075eb36 |
@@ -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
|
||||||
+1
-1
@@ -17,7 +17,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nhcarrigan/eslint-config": "5.2.0",
|
"@nhcarrigan/eslint-config": "5.2.0",
|
||||||
"@types/node": "22.14.0",
|
"@types/node": "22.14.0",
|
||||||
"cspell": "8.18.1",
|
"cspell": "9.6.4",
|
||||||
"eslint": "9.24.0",
|
"eslint": "9.24.0",
|
||||||
"tsx": "4.19.3",
|
"tsx": "4.19.3",
|
||||||
"vitest": "3.1.1",
|
"vitest": "3.1.1",
|
||||||
|
|||||||
Generated
+526
-491
File diff suppressed because it is too large
Load Diff
@@ -1,21 +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
|
|
||||||
strictPeerDependencies: true
|
|
||||||
# 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
|
|
||||||
+3
-42
@@ -28,42 +28,6 @@ const htmlBeginning = `<!DOCTYPE html>
|
|||||||
const htmlEnd = ` </main>
|
const htmlEnd = ` </main>
|
||||||
</body>
|
</body>
|
||||||
<script src="./dates.js"></script>
|
<script src="./dates.js"></script>
|
||||||
<script>
|
|
||||||
var _cdnStyle = null;
|
|
||||||
var _condensedSections = [];
|
|
||||||
|
|
||||||
window.addEventListener("beforeprint", function() {
|
|
||||||
_cdnStyle = document.getElementById("nhcarrigan-global-styles");
|
|
||||||
if (_cdnStyle) { _cdnStyle.remove(); }
|
|
||||||
});
|
|
||||||
window.addEventListener("afterprint", function() {
|
|
||||||
if (_cdnStyle) { document.head.appendChild(_cdnStyle); _cdnStyle = null; }
|
|
||||||
_condensedSections.forEach(function(el) { el.style.display = ""; });
|
|
||||||
_condensedSections = [];
|
|
||||||
});
|
|
||||||
|
|
||||||
function downloadFile(url, filename) {
|
|
||||||
fetch(url)
|
|
||||||
.then(function(r) { return r.blob(); })
|
|
||||||
.then(function(blob) {
|
|
||||||
var a = document.createElement("a");
|
|
||||||
a.href = URL.createObjectURL(blob);
|
|
||||||
a.download = filename;
|
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
document.body.removeChild(a);
|
|
||||||
URL.revokeObjectURL(a.href);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function printCondensed() {
|
|
||||||
["certifications", "projects", "publications"].forEach(function(id) {
|
|
||||||
var el = document.getElementById(id);
|
|
||||||
if (el) { el.style.display = "none"; _condensedSections.push(el); }
|
|
||||||
});
|
|
||||||
window.print();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</html>`;
|
</html>`;
|
||||||
|
|
||||||
const request = await fetch(
|
const request = await fetch(
|
||||||
@@ -150,12 +114,9 @@ const heading = `<h1>${yaml.name}</h1>
|
|||||||
<a href="#projects">Projects</a> |
|
<a href="#projects">Projects</a> |
|
||||||
<a href="#publications">Publications</a> |
|
<a href="#publications">Publications</a> |
|
||||||
</p>
|
</p>
|
||||||
<div id="formats">
|
<p id="formats">
|
||||||
<button onclick="downloadFile('https://data.nhcarrigan.com/resume.yml', 'resume.yml')">Download YAML</button>
|
Get this resume in <a href="https://data.nhcarrigan.com/resume.yml">YAML</a> or <a href="https://data.nhcarrigan.com/resume.json">JSON</a> format. You can also <span style="text-decoration: underline" onclick="window.print();return false;">print</span> the resume (and optionally save as a PDF).
|
||||||
<button onclick="downloadFile('https://data.nhcarrigan.com/resume.json', 'resume.json')">Download JSON</button>
|
</p>
|
||||||
<button onclick="window.print()">Print Resume</button>
|
|
||||||
<button onclick="printCondensed()">Print Condensed Resume</button>
|
|
||||||
</div>
|
|
||||||
<p class="cta">
|
<p class="cta">
|
||||||
Interested in hiring me?
|
Interested in hiring me?
|
||||||
<a href="https://testimonials.nhcarrigan.com" target="_blank"
|
<a href="https://testimonials.nhcarrigan.com" target="_blank"
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ hr {
|
|||||||
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.7);
|
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.7);
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
footer {
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@media print {
|
@media print {
|
||||||
:root {
|
:root {
|
||||||
@@ -53,15 +50,6 @@ hr {
|
|||||||
* {
|
* {
|
||||||
color: black;
|
color: black;
|
||||||
font-family: "Times New Roman", serif;
|
font-family: "Times New Roman", serif;
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 1.8rem;
|
|
||||||
}
|
|
||||||
.info {
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
video,
|
video,
|
||||||
footer,
|
footer,
|
||||||
|
|||||||
Reference in New Issue
Block a user