Tucker McKnight <tucker@pangolin.lan> | Sat Jan 03 2026
Change feed.njk to a typescript template This is the last njk template that needed to be changed over. Several changes have been made to this template. First, the RSS plugin isn't expected to be provided by the parent 11ty site anymore. Instead, this plugin will require the RSS plugin itself. The dateToRfc3339 function is therefore being imported directly, instead of being looked for as an eleventyConfig filter. Some of the other functions dealing with absolute URLs are no longer being used. This is using its own baseUrl value instead. (May want to revisit this later, but let's just use baseUrl for now.)
20 21 22 23 24
import indexJsTemplate from './js_templates/index.ts'
import branchesJsTemplate from './js_templates/branches.ts'
import rawJsTemplate from './js_templates/raw.ts'
const ajv = new Ajv()
const exec = util.promisify(childProcess.exec)20 21 22 23 24 25
import indexJsTemplate from './js_templates/index.ts'
import branchesJsTemplate from './js_templates/branches.ts'
import rawJsTemplate from './js_templates/raw.ts'
import feedJsTemplate from './js_templates/feed.ts'
const ajv = new Ajv()
const exec = util.promisify(childProcess.exec)5 6 7 8 9 10
mkdir -p dist/img
cp frontend/top.js dist/frontend/top.js
cp -r frontend/img dist/frontend/img
cp templates/*.njk dist/templates
cp partial_templates/*.njk dist/partial_templates
cp -r vendor dist/
5 6 7 8
mkdir -p dist/img
cp frontend/top.js dist/frontend/top.js
cp -r frontend/img dist/frontend/img
cp -r vendor dist/
8 9 10 11 12
"version": "0.0.1-alpha.1",
"license": "ISC",
"dependencies": {
"ajv": "^8.17.1",
"diff": "^8.0.2",
"lodash": "^4.17.21"8 9 10 11 12 13
"version": "0.0.1-alpha.1",
"license": "ISC",
"dependencies": {
"@11ty/eleventy-plugin-rss": "^2.0.4",
"ajv": "^8.17.1",
"diff": "^8.0.2",
"lodash": "^4.17.21"1053 1054 1055 1056 1057
"node": ">= 8"
}
},
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073
"node": ">= 8"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",1191 1192 1193 1194 1195
"node": ">=4.0"
}
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203
"node": ">=4.0"
}
},
"node_modules/evaluate-value": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/evaluate-value/-/evaluate-value-2.0.0.tgz",
"integrity": "sha512-VonfiuDJc0z4sOO7W0Pd130VLsXN6vmBWZlrog1mCb/o7o/Nl5Lr25+Kj/nkCCAhG+zqeeGjxhkK9oHpkgTHhQ==",
"engines": {
"node": ">= 8"
}
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",1439 1440 1441 1442 1443
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",1439 1440 1441 1442 1443 1444 1445 1446 1447 1448
"node": ">=0.10.0"
}
},
"node_modules/is-json": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
"integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA=="
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",1553 1554 1555 1556 1557
"uc.micro": "^2.0.0"
}
},
"node_modules/loader-runner": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",1553 1554 1555 1556 1557 1558 1559 1560 1561 1562
"uc.micro": "^2.0.0"
}
},
"node_modules/list-to-array": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz",
"integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g=="
},
"node_modules/loader-runner": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",1691 1692 1693 1694 1695
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",1691 1692 1693 1694 1695 1696 1697 1698 1699 1700
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",1766 1767 1768 1769 1770
"dev": true,
"license": "BlueOak-1.0.0"
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",1766 1767 1768 1769 1770 1771 1772 1773 1774 1775
"dev": true,
"license": "BlueOak-1.0.0"
},
"node_modules/parse-srcset": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
"integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q=="
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",26 27 28 29 30
"webpack-cli": "^6.0.1"
},
"dependencies": {
"ajv": "^8.17.1",
"diff": "^8.0.2",
"lodash": "^4.17.21"26 27 28 29 30 31
"webpack-cli": "^6.0.1"
},
"dependencies": {
"@11ty/eleventy-plugin-rss": "^2.0.4",
"ajv": "^8.17.1",
"diff": "^8.0.2",
"lodash": "^4.17.21"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
</div>
</div>
</div>
<script>
const toggleUnifiedMode = (e) => {
const diffs = document.getElementById('diffs')
const afterDiffs = document.querySelectorAll('.diff-right')
if (e.checked) {
diffs.classList.add("unified")
afterDiffs.forEach((elem) => {
elem.classList.remove('border-start', 'ps-2')
})
}
else {
diffs.classList.remove("unified")
afterDiffs.forEach((elem) => {
elem.classList.add('border-start', 'ps-2')
})
}
}
const selectBranch = (e) => {
const values = e.value.split(",")
window.location = `{{reposPath}}/${values[0]}/branches/${values[1]}/${values[2]}`
}
</script>
<script src="{{reposPath}}/frontend/main-frontend.bundle.js"></script>
</body>
</html>