diff --git a/.gitignore b/.gitignore index 4a8f84b..64fcfb3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ src/_includes/scripts # secret data .env + +# Local Netlify folder +.netlify diff --git a/netlify/functions/refresh-data.mjs b/netlify/functions/refresh-data.mjs new file mode 100644 index 0000000..60a60e3 --- /dev/null +++ b/netlify/functions/refresh-data.mjs @@ -0,0 +1,17 @@ +const rebuildSite = async (triggerTitle) => { + const url = new URL(process.env.NETLIFY_REBUILD_HOOK); + + url.searchParams.append("trigger_title", triggerTitle); + + return await fetch(url.toString(), { + method: "POST", + }); +}; + +export default async () => { + await rebuildSite("Refreshing data"); +}; + +export const config = { + schedule: "0 */6 * * *", +}; diff --git a/package-lock.json b/package-lock.json index b90acc3..60ffef6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@11ty/eleventy-fetch": "^4.0.0", "@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-plugin-rss": "^1.2.0", + "@netlify/functions": "^2.6.0", "autoprefixer": "^10.4.17", "cheerio": "^1.0.0-rc.12", "cssnano": "^6.0.3", @@ -32,8 +33,7 @@ "postcss": "^8.4.33", "postcss-import": "^16.0.0", "postcss-import-ext-glob": "^2.1.1", - "prettier": "3.2.4", - "slugify": "^1.6.6" + "prettier": "3.2.4" } }, "node_modules/@11ty/dependency-tree": { @@ -467,6 +467,40 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@netlify/functions": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.6.0.tgz", + "integrity": "sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==", + "dev": true, + "dependencies": { + "@netlify/serverless-functions-api": "1.14.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@netlify/node-cookies": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", + "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "dev": true, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/@netlify/serverless-functions-api": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.14.0.tgz", + "integrity": "sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==", + "dev": true, + "dependencies": { + "@netlify/node-cookies": "^0.1.0", + "urlpattern-polyfill": "8.0.2" + }, + "engines": { + "node": "^14.18.0 || >=16.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", @@ -5488,6 +5522,12 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "dev": true + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5919,6 +5959,31 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@netlify/functions": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.6.0.tgz", + "integrity": "sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==", + "dev": true, + "requires": { + "@netlify/serverless-functions-api": "1.14.0" + } + }, + "@netlify/node-cookies": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", + "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "dev": true + }, + "@netlify/serverless-functions-api": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.14.0.tgz", + "integrity": "sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==", + "dev": true, + "requires": { + "@netlify/node-cookies": "^0.1.0", + "urlpattern-polyfill": "8.0.2" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -9559,6 +9624,12 @@ "punycode": "^2.1.0" } }, + "urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index f2242c7..5458cff 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@11ty/eleventy-fetch": "^4.0.0", "@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-plugin-rss": "^1.2.0", + "@netlify/functions": "^2.6.0", "autoprefixer": "^10.4.17", "cheerio": "^1.0.0-rc.12", "cssnano": "^6.0.3",