Compare commits

...

126 Commits

Author SHA1 Message Date
Mark Dumay
a680a61825 Merge pull request #1224 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-10-07 07:44:46 +02:00
Mark Dumay
a075ca5f7b Merge branch 'main' into hugo-mod-dependencies 2024-10-07 07:39:55 +02:00
Mark Dumay
a816d2be25 Merge pull request #1225 from gethinode/develop
Support configurable CSP directives
2024-10-07 07:39:22 +02:00
Mark Dumay
52ff0fb71e Merge branch 'main' into develop 2024-10-07 07:32:05 +02:00
Mark Dumay
95fd919a6f Support configurable CSP directives 2024-10-07 07:31:28 +02:00
markdumay
85778dd374 fix: update Hugo module dependencies 2024-10-07 03:12:33 +00:00
github-actions[bot]
ee3a0ee8c4 Merge pull request #1220 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.132.0
Bump hugo-bin from 0.131.3 to 0.132.0
2024-09-30 13:15:30 +00:00
dependabot[bot]
3b721690f1 Bump hugo-bin from 0.131.3 to 0.132.0
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.131.3 to 0.132.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.131.3...v0.132.0)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 13:09:32 +00:00
Mark Dumay
96b2ed2f4c Merge pull request #1219 from gethinode/develop
Update CookieYes module
2024-09-25 15:03:22 +02:00
Mark Dumay
d6d39ad946 Merge branch 'main' into develop 2024-09-25 14:38:42 +02:00
Mark Dumay
f8db72ebad Update CookieYes module 2024-09-25 14:37:44 +02:00
Mark Dumay
9a8ee943a9 Merge pull request #1218 from gethinode/develop
Fix handling of critical module styles
2024-09-25 14:37:28 +02:00
Mark Dumay
520c5ba43b Merge branch 'main' into develop 2024-09-25 14:25:11 +02:00
Mark Dumay
4205c07993 Fix handling of critical module styles 2024-09-25 14:24:40 +02:00
Mark Dumay
7cd1dc3c27 Merge pull request #1217 from gethinode/develop
Test style adjustments of CookieYes content
2024-09-25 08:46:48 +02:00
Mark Dumay
d96ef8af35 Merge branch 'main' into develop 2024-09-25 08:41:33 +02:00
Mark Dumay
2defd83f0f Test style adjustments of CookieYes content 2024-09-25 08:41:09 +02:00
Mark Dumay
ba10e2115a Merge pull request #1216 from gethinode/develop
Test style adjustments of CookieYes content
2024-09-25 08:35:37 +02:00
Mark Dumay
1d4a5d960f Merge branch 'main' into develop 2024-09-25 08:30:38 +02:00
Mark Dumay
ec492c005f Update build stats 2024-09-25 08:29:51 +02:00
Mark Dumay
624d57c374 Reset original footer 2024-09-25 08:29:41 +02:00
Mark Dumay
e7dda56408 Test style adjustments of CookieYes content 2024-09-25 08:29:24 +02:00
Mark Dumay
c3e135de9e Merge pull request #1215 from gethinode/develop
Update dependencies
2024-09-24 17:15:00 +02:00
Mark Dumay
b84fc502b5 Merge branch 'main' into develop 2024-09-24 17:04:38 +02:00
Mark Dumay
b18b662cef Update dependencies 2024-09-24 17:03:54 +02:00
Mark Dumay
3070e4abac Merge pull request #1214 from gethinode/develop
Include warning when file shortcode references invalid file
2024-09-24 16:17:09 +02:00
Mark Dumay
052033fe42 Merge branch 'main' into develop 2024-09-24 16:10:06 +02:00
Mark Dumay
c37bb67c09 Bump package release 2024-09-24 16:09:32 +02:00
Mark Dumay
0728a148b8 Include warning when file shortcode references invalid file 2024-09-24 16:08:32 +02:00
Mark Dumay
6bf687dbf8 Merge pull request #1213 from gethinode/develop
Support integration of critical modules and scripts by category
2024-09-24 15:51:45 +02:00
Mark Dumay
e656ec9f33 Merge branch 'main' into develop 2024-09-24 15:44:11 +02:00
github-actions[bot]
d522fb07d5 Merge pull request #1211 from gethinode/dependabot/npm_and_yarn/neostandard-0.11.6
Bump neostandard from 0.11.5 to 0.11.6
2024-09-24 13:43:51 +00:00
Mark Dumay
39d98b2b6c Merge branch 'main' into develop 2024-09-24 15:39:20 +02:00
dependabot[bot]
6dfab4aa5f Bump neostandard from 0.11.5 to 0.11.6
Bumps [neostandard](https://github.com/neostandard/neostandard) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/neostandard/neostandard/releases)
- [Changelog](https://github.com/neostandard/neostandard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/neostandard/neostandard/compare/v0.11.5...v0.11.6)

---
updated-dependencies:
- dependency-name: neostandard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-24 13:38:05 +00:00
github-actions[bot]
c5bdae6466 Merge pull request #1212 from gethinode/dependabot/npm_and_yarn/eslint-9.11.1
Bump eslint from 9.11.0 to 9.11.1
2024-09-24 13:36:52 +00:00
Mark Dumay
f79267a39e Merge branch 'main' into develop 2024-09-24 15:35:31 +02:00
Mark Dumay
ea05749f0e Match package version with releases 2024-09-24 15:34:48 +02:00
Mark Dumay
2dd027028c Update eslint safelist 2024-09-24 15:33:30 +02:00
Mark Dumay
3a4b1c8670 Include cookie settings in example site's footer 2024-09-24 15:32:39 +02:00
Mark Dumay
e2b92c9519 Remove redundant space 2024-09-24 15:32:23 +02:00
Mark Dumay
1defbd32f9 Update build stats 2024-09-24 15:32:09 +02:00
Mark Dumay
edd303bab1 Disable js debugging 2024-09-24 15:32:01 +02:00
dependabot[bot]
43041f42fc Bump eslint from 9.11.0 to 9.11.1
Bumps [eslint](https://github.com/eslint/eslint) from 9.11.0 to 9.11.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.11.0...v9.11.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-24 13:31:47 +00:00
Mark Dumay
250bfc33e6 Include external CookieYes script in example site 2024-09-24 15:31:42 +02:00
Mark Dumay
b7d4af7c0a Update to CookieYes v2 2024-09-24 15:31:13 +02:00
Mark Dumay
631d952923 Move critical scripts to functional category 2024-09-24 15:30:39 +02:00
Mark Dumay
744dd361f0 Support integration of critical modules and scripts by category 2024-09-24 15:30:16 +02:00
github-actions[bot]
719b5893d7 Merge pull request #1208 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.131.3
Bump hugo-bin from 0.131.2 to 0.131.3
2024-09-23 13:43:11 +00:00
dependabot[bot]
228f6f29dc Bump hugo-bin from 0.131.2 to 0.131.3
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.131.2 to 0.131.3.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.131.2...v0.131.3)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:37:31 +00:00
github-actions[bot]
3ea24f7e7f Merge pull request #1207 from gethinode/dependabot/npm_and_yarn/eslint-9.11.0
Bump eslint from 9.10.0 to 9.11.0
2024-09-23 13:36:16 +00:00
dependabot[bot]
418069773f Bump eslint from 9.10.0 to 9.11.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.10.0 to 9.11.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.10.0...v9.11.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:30:54 +00:00
Mark Dumay
0791000f10 Merge pull request #1206 from gethinode/develop
Adjust CookieYes integration
2024-09-22 12:30:02 +02:00
Mark Dumay
cee94a9664 Merge branch 'main' into develop 2024-09-22 12:01:32 +02:00
Mark Dumay
d42a6c4150 Adjust CookieYes integration 2024-09-22 12:00:36 +02:00
Mark Dumay
73160b0cfe Bump package release 2024-09-20 17:26:00 +02:00
Mark Dumay
2d5225e205 Fix reference to undefined getLocalStorage in navbar 2024-09-20 17:25:19 +02:00
Mark Dumay
d7e9f05588 Merge pull request #1203 from gethinode/develop
Add support for functional scripts to be included in the page header
2024-09-20 17:15:00 +02:00
Mark Dumay
f936bdd117 Merge branch 'main' into develop 2024-09-20 17:08:40 +02:00
Mark Dumay
fc05a338c7 Bump package release 2024-09-20 17:07:33 +02:00
Mark Dumay
367e2f78d3 Update js lint config 2024-09-20 17:06:27 +02:00
Mark Dumay
6af1df3862 Enable support for critical / functional scripts 2024-09-20 17:05:27 +02:00
Mark Dumay
a1c124cb38 Include cookieyes in Hinode demo site 2024-09-20 17:04:56 +02:00
Mark Dumay
07b1a0d0ce Categorize critical scripts as functional scripts 2024-09-20 17:04:11 +02:00
Mark Dumay
a3f215c211 Merge pull request #1201 from gethinode/develop
Test cky integration
2024-09-20 08:57:23 +02:00
Mark Dumay
c31fdae5e4 Test cky integration 2024-09-20 08:52:10 +02:00
Mark Dumay
c208bc8946 Merge branch 'main' into develop 2024-09-20 07:16:50 +02:00
Mark Dumay
6c285b203d Test cky integration 2024-09-20 07:16:23 +02:00
Mark Dumay
a867458f4b Merge pull request #1200 from gethinode/develop
Test cky integration
2024-09-20 07:02:40 +02:00
Mark Dumay
973fbf6637 Merge branch 'main' into develop 2024-09-20 06:57:02 +02:00
Mark Dumay
367f209c73 Test cky integration 2024-09-20 06:56:36 +02:00
Mark Dumay
06f384a206 Merge pull request #1199 from gethinode/develop
Test cky integration
2024-09-20 06:43:47 +02:00
Mark Dumay
2ce4001fa8 Merge branch 'main' into develop 2024-09-20 06:34:48 +02:00
Mark Dumay
fe2e3ba5f4 Test cky integration 2024-09-20 06:30:19 +02:00
Mark Dumay
0830e0da77 Merge pull request #1198 from gethinode/develop
Add cookie APIs
2024-09-19 05:53:47 +02:00
Mark Dumay
195f0b192f Merge branch 'main' into develop 2024-09-19 05:48:50 +02:00
Mark Dumay
f98d2000e3 Merge pull request #1197 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-09-19 05:48:22 +02:00
Mark Dumay
54f49944cc Add cookie APIs 2024-09-19 05:47:32 +02:00
markdumay
7525ecddc2 fix: update Hugo module dependencies 2024-09-19 03:07:20 +00:00
Mark Dumay
09ab64c361 Shift script documentation to docs site 2024-09-18 09:07:49 +02:00
Mark Dumay
2b3f87b885 Merge pull request #1196 from gethinode/develop
Prepare for consent-enabled script bundling
2024-09-17 19:06:27 +02:00
Mark Dumay
213bb31133 Merge branch 'main' into develop 2024-09-17 18:59:42 +02:00
Mark Dumay
b0130d9f7d Support bundling of scripts by category 2024-09-17 18:57:50 +02:00
Mark Dumay
07a3be644c Remove support for deprecated module configuration keys 2024-09-17 18:55:53 +02:00
Mark Dumay
262bc47260 Shift Google Analytics to separate module 2024-09-17 16:46:37 +02:00
Mark Dumay
51553a05f0 Merge pull request #1195 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-09-17 08:55:39 +02:00
markdumay
bd06ee211b fix: update Hugo module dependencies 2024-09-17 03:06:18 +00:00
Mark Dumay
cc8e889825 Merge pull request #1194 from gethinode/develop
Suppress anchor links for empty headings
2024-09-15 10:59:41 +02:00
Mark Dumay
a6144122b2 Merge branch 'main' into develop 2024-09-15 08:40:39 +02:00
Mark Dumay
853e0c818f Bump package release 2024-09-15 08:40:01 +02:00
Mark Dumay
1c5fb55d89 Suppress anchor links for empty headings 2024-09-15 08:39:29 +02:00
Mark Dumay
d48fb1a300 Merge pull request #1191 from gethinode/hugo-mod-dependencies
Update Hugo module dependencies
2024-09-15 06:57:36 +02:00
Mark Dumay
f2aa9d2661 Merge branch 'main' into hugo-mod-dependencies 2024-09-15 06:39:15 +02:00
Mark Dumay
d721e1cfc2 Merge pull request #1193 from gethinode/develop
Add nofollow to external links
2024-09-15 06:28:41 +02:00
Mark Dumay
7f7bf2152c Merge branch 'main' into develop 2024-09-15 06:21:02 +02:00
Mark Dumay
a9543de1e7 Add nofollow to external links 2024-09-15 06:20:23 +02:00
Mark Dumay
39e4073837 Merge pull request #1192 from gethinode/develop
Support configuration of meta title and meta description
2024-09-15 06:19:11 +02:00
Mark Dumay
d2782349d5 Reset meta data of example page 2024-09-15 06:12:38 +02:00
Mark Dumay
fe97815460 Merge branch 'main' into develop 2024-09-15 06:09:56 +02:00
Mark Dumay
7bcaa69d5b Support configuration of meta title and meta description 2024-09-15 06:09:09 +02:00
markdumay
30ae3f6b3c fix: update Hugo module dependencies 2024-09-15 03:10:46 +00:00
github-actions[bot]
6540e11fa9 Merge pull request #1189 from gethinode/dependabot/npm_and_yarn/neostandard-0.11.5
Bump neostandard from 0.11.4 to 0.11.5
2024-09-12 13:43:46 +00:00
dependabot[bot]
14f2145239 Bump neostandard from 0.11.4 to 0.11.5
Bumps [neostandard](https://github.com/neostandard/neostandard) from 0.11.4 to 0.11.5.
- [Release notes](https://github.com/neostandard/neostandard/releases)
- [Changelog](https://github.com/neostandard/neostandard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/neostandard/neostandard/compare/v0.11.4...v0.11.5)

---
updated-dependencies:
- dependency-name: neostandard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 13:38:34 +00:00
Mark Dumay
856a0aed08 Merge pull request #1188 from gethinode/develop
Fix bootstrap form validation when purging styles
2024-09-12 07:13:56 +02:00
Mark Dumay
5c6b91f1ce Merge branch 'main' into develop 2024-09-12 07:07:31 +02:00
Mark Dumay
152b8ca060 Bump package release 2024-09-12 07:06:42 +02:00
Mark Dumay
0f8870fed0 Fix bootstrap form validation when purging styles
See #1184
2024-09-12 07:06:10 +02:00
Mark Dumay
742ae6784b Merge pull request #1187 from gethinode/develop
Refine hugo caching
2024-09-12 06:57:22 +02:00
Mark Dumay
ce4c8c0a7c Merge branch 'main' into develop 2024-09-12 06:42:13 +02:00
Mark Dumay
40de449fed Refine hugo caching 2024-09-12 06:41:35 +02:00
Mark Dumay
4c27864248 Improve code layout 2024-09-12 06:41:03 +02:00
Mark Dumay
3efb2b7451 Merge pull request #1186 from gethinode/develop
Improve handling of Cloudinary image paths
2024-09-12 06:36:51 +02:00
Mark Dumay
721e222849 Merge branch 'main' into develop 2024-09-12 06:30:49 +02:00
Mark Dumay
77b9d62d76 Improve handling of Cloudinary image paths
You can reference an image on Cloudinary by using the account name, relative directory, and file name. However, you can reference the image by optionally adding the API path (e.g. "image/upload", "video/upload") directly after the account name. Hinode now parses both types of paths correctly.
2024-09-12 06:29:54 +02:00
github-actions[bot]
efe3c947c2 Merge pull request #1183 from gethinode/dependabot/npm_and_yarn/hugo-bin-0.131.2
Bump hugo-bin from 0.131.1 to 0.131.2
2024-09-10 13:24:12 +00:00
dependabot[bot]
beee2e40e0 Bump hugo-bin from 0.131.1 to 0.131.2
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.131.1 to 0.131.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.131.1...v0.131.2)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-10 13:19:12 +00:00
Mark Dumay
895d606175 Merge pull request #1182 from gethinode/develop
Bump Netlify build environment
2024-09-10 09:36:02 +02:00
Mark Dumay
9a17df96f3 Merge branch 'main' into develop 2024-09-10 07:17:05 +02:00
Mark Dumay
d2e1a1678a Bump Netlify build environment 2024-09-10 07:16:39 +02:00
Mark Dumay
d8451e2699 Merge pull request #1181 from gethinode/develop
Fix deprecation warning
2024-09-10 07:15:09 +02:00
Mark Dumay
f98ab74905 Merge branch 'main' into develop 2024-09-10 07:09:30 +02:00
Mark Dumay
6e453ea2ab Fix deprecation warning 2024-09-10 07:09:05 +02:00
Mark Dumay
d6ca890c80 Merge pull request #1180 from gethinode/develop
Improve handling of unsupported alert types
2024-09-10 07:07:51 +02:00
Mark Dumay
46aecfe65a Merge branch 'main' into develop 2024-09-10 06:58:26 +02:00
Mark Dumay
496c07ff7e Improve handling of unsupported alert types 2024-09-10 06:55:56 +02:00
github-actions[bot]
3a63f4fad7 Merge pull request #1179 from gethinode/dependabot/npm_and_yarn/eslint-9.10.0
Bump eslint from 9.9.1 to 9.10.0
2024-09-09 13:24:05 +00:00
dependabot[bot]
bbf99507d6 Bump eslint from 9.9.1 to 9.10.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.9.1 to 9.10.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.9.1...v9.10.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 13:18:22 +00:00
58 changed files with 1334 additions and 580 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
_vendor/ _vendor/
prebuild/
public/ public/
resources/ resources/
node_modules/ node_modules/

View File

@@ -123,7 +123,7 @@ Hinode is inspired by the following themes:
## Donate ## Donate
<!-- markdownlint-disable MD033 --> <!-- markdownlint-disable MD033 -->
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a> <a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer nofollow"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
<!-- markdownlint-enable MD033 --> <!-- markdownlint-enable MD033 -->
## License ## License

View File

@@ -3,13 +3,13 @@ const alert = document.getElementById('page-alert')
const closeBtn = document.getElementById('page-alert-btn-close') const closeBtn = document.getElementById('page-alert-btn-close')
if (alert !== null && closeBtn !== null) { if (alert !== null && closeBtn !== null) {
const version = alert.getAttribute('data-page-alert-version') || 'unknown' const version = alert.getAttribute('data-page-alert-version') || 'unknown'
const hideAlert = sessionStorage.getItem(`page-alert-${version}`) !== null const hideAlert = getSessionStorage(`page-alert-${version}`, null, 'functional') !== null
if (hideAlert) { if (hideAlert) {
alert.classList.add('d-none') alert.classList.add('d-none')
} }
closeBtn.addEventListener('click', () => { closeBtn.addEventListener('click', () => {
sessionStorage.setItem(`page-alert-${version}`, 'seen') setSessionStorage(`page-alert-${version}`, 'seen', 'functional')
alert.classList.add('d-none') alert.classList.add('d-none')
}) })
} }

View File

@@ -1,21 +0,0 @@
// Adapted from https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html
{{ if and (not hugo.IsServer) (not site.Config.Privacy.GoogleAnalytics.Disable) }}
{{ with site.Config.Services.GoogleAnalytics.ID }}
{{ if strings.HasPrefix (lower .) "ua-" }}
{{ warnf "Google Analytics 4 (GA4) replaced Google Universal Analytics (UA) effective 1 July 2023. See https://support.google.com/analytics/answer/11583528. Create a GA4 property and data stream, then replace the Google Analytics ID in your site configuration with the new value." }}
{{ else }}
var doNotTrack = false;
if ({{ site.Config.Privacy.GoogleAnalytics.RespectDoNotTrack }}) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ . }}');
}
{{ end }}
{{ end }}
{{ end }}

View File

@@ -0,0 +1,33 @@
/* eslint-disable no-undef, no-unused-vars */
function hasConsent (category) {
// TODO: placeholder function
return true
}
function getLocalStorage (key, def, category) {
if (hasConsent(category)) {
return localStorage.getItem(key)
} else {
return def
}
}
function setLocalStorage (key, val, category) {
if (hasConsent(category)) {
localStorage.setItem(key, val)
}
}
function getSessionStorage (key, def, category) {
if (hasConsent(category)) {
return sessionStorage.getItem(key)
} else {
return def
}
}
function setSessionStorage (key, val, category) {
if (hasConsent(category)) {
sessionStorage.setItem(key, val)
}
}

View File

@@ -11,8 +11,8 @@
const supportedThemes = ['auto', 'dark', 'light']; const supportedThemes = ['auto', 'dark', 'light'];
// retrieves the currently stored theme from local storage (cookie) // retrieves the currently stored theme from local storage
const storedTheme = localStorage.getItem('theme') const storedTheme = getLocalStorage('theme', 'auto', 'functional')
// retrieves the theme preferred by the client, defaults to light // retrieves the theme preferred by the client, defaults to light
function getPreferredTheme() { function getPreferredTheme() {
@@ -25,7 +25,7 @@
return storedTheme return storedTheme
} else { } else {
const preference = getPreferredTheme() const preference = getPreferredTheme()
localStorage.setItem('theme', preference) setLocalStorage('theme', preference, 'functional')
return preference return preference
} }
} }
@@ -35,7 +35,7 @@
if (!supportedThemes.includes(theme)) { if (!supportedThemes.includes(theme)) {
theme = 'auto' theme = 'auto'
} }
localStorage.setItem('theme', theme) setLocalStorage('theme', theme, 'functional')
if (theme === 'auto') { if (theme === 'auto') {
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme())) document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))

View File

@@ -4,14 +4,14 @@
(() => { (() => {
'use strict' 'use strict'
// Function to get the selected language from localStorage // Function to get the selected language from local storage
function getLanguage () { function getLanguage () {
return localStorage.getItem('selectedLanguage') return getLocalStorage('selectedLanguage', document.documentElement.lang, 'functional')
} }
// Function to set the selected language in localStorage // Function to set the selected language in local storage
function setLanguage (language) { function setLanguage (language) {
localStorage.setItem('selectedLanguage', language) setLocalStorage('selectedLanguage', language, 'functional')
} }
// Function to apply the selected language to the website // Function to apply the selected language to the website

View File

@@ -7,8 +7,13 @@ const colorsBG = ['body', 'secondary', 'tertiary']
function updateNavbar () { function updateNavbar () {
if (window.scrollY > 75) { if (window.scrollY > 75) {
navbar.classList.add('nav-active') navbar.classList.add('nav-active')
const storedTheme = localStorage.getItem('theme') let storedTheme
if (typeof getLocalStorage === "function") {
storedTheme = getLocalStorage('theme', null, 'functional')
}
if (storedTheme) {
navbar.setAttribute('data-bs-theme', storedTheme) navbar.setAttribute('data-bs-theme', storedTheme)
}
} else { } else {
navbar.classList.remove('nav-active') navbar.classList.remove('nav-active')
const defaultTheme = navbar.getAttribute('data-bs-overlay') const defaultTheme = navbar.getAttribute('data-bs-overlay')

View File

@@ -26,6 +26,32 @@ defaultContentLanguage = "en"
defaultContentLanguageInSubdir = false defaultContentLanguageInSubdir = false
# toml-docs-end language # toml-docs-end language
# toml-docs-start headers
[outputFormats]
[outputFormats.netlify]
mediaType = "application/toml"
baseName = "netlify"
isPlainText = true
notAlternative = true
permalinkable = true
root = true
[outputFormats.server]
mediaType = "application/toml"
baseName = "server"
isPlainText = true
notAlternative = true
permalinkable = true
root = true
# toml-docs-end headers
[outputFormats.XML]
isPlainText = false
mediaType = "application/xml"
isHtml = false
noUgly = true
permalinkable = false
name = "xml"
# toml-docs-start redirect # toml-docs-start redirect
[outputFormats.REDIR] [outputFormats.REDIR]
mediaType = "text/netlify" mediaType = "text/netlify"
@@ -35,11 +61,13 @@ notAlternative = true
[mediaTypes."text/netlify"] [mediaTypes."text/netlify"]
delimiter = "" delimiter = ""
[outputs]
home = ["HTML", "RSS", "REDIR"]
# toml-docs-end redirect # toml-docs-end redirect
# toml-docs-start outputs
[outputs]
home = ["HTML", "RSS", "REDIR", "netlify", "server"]
# toml-docs-end outputs
# toml-docs-start build # toml-docs-start build
[build] [build]
writeStats = true writeStats = true
@@ -77,15 +105,6 @@ home = ["HTML", "RSS", "REDIR"]
[services.googleAnalytics] [services.googleAnalytics]
# ID = "G-xxxxxxxxxx" # ID = "G-xxxxxxxxxx"
[outputFormats]
[outputFormats.XML]
isPlainText = false
mediaType = "application/xml"
isHtml = false
noUgly = true
permalinkable = false
name = "xml"
[minify] [minify]
[minify.tdewolff.js] [minify.tdewolff.js]
keepVarNames = true keepVarNames = true
@@ -126,10 +145,14 @@ home = ["HTML", "RSS", "REDIR"]
# toml-docs-start modules # toml-docs-start modules
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-bootstrap" path = "github.com/gethinode/mod-bootstrap"
[[module.imports]]
path = "github.com/gethinode/mod-csp"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-flexsearch/v2" path = "github.com/gethinode/mod-flexsearch/v2"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-fontawesome" path = "github.com/gethinode/mod-fontawesome"
[[module.imports]]
path = "github.com/gethinode/mod-google-analytics"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-katex" path = "github.com/gethinode/mod-katex"
[[module.imports]] [[module.imports]]
@@ -141,3 +164,11 @@ home = ["HTML", "RSS", "REDIR"]
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/mod-utils/v2" path = "github.com/gethinode/mod-utils/v2"
# toml-docs-end modules # toml-docs-end modules
# toml-docs-start segments
[segments]
[segments.headers]
[[segments.headers.includes]]
kind = '{home}'
output = '{netlify,server}'
# toml-docs-end segments

View File

@@ -11,5 +11,5 @@
title = "Follow me" title = "Follow me"
caption = "I work on everything coding and tweet developer memes" caption = "I work on everything coding and tweet developer memes"
[en.params.footer] [en.params.footer]
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)." # license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
# toml-docs-end lang-param # toml-docs-end lang-param

View File

@@ -204,3 +204,25 @@
[links] [links]
hinode = "https://gethinode.com" hinode = "https://gethinode.com"
[headers]
[headers.netlify]
source = "netlify.toml"
[modules.hinode.csp]
style-src = ["www.youtube.com"]
font-src = ["fonts.gstatic.com"]
frame-src = [
"player.cloudinary.com",
"player.vimeo.com",
"www.youtube-nocookie.com",
"www.youtube.com"
]
img-src = [
"data:",
"*.imgix.net",
"*.imagekit.io",
"*.cloudinary.com",
"i.vimeocdn.com",
"i.ytimg.com"
]

View File

@@ -1,41 +1,29 @@
# toml-docs-start server-config # Auto-generated file - do not modify
[[headers]] [[headers]]
for = '/**' for = '/**'
[headers.values] [headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" Access-Control-Allow-Origin = '*'
X-Content-Type-Options = "nosniff" Content-Security-Policy = """
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \ base-uri 'self'; \
connect-src 'self' connect-src 'self' *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \ default-src 'none' 'self'; \
font-src 'self' https://fonts.gstatic.com; \ font-src 'self' fonts.gstatic.com; \
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com; \ form-action 'self'; \
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \ frame-src player.cloudinary.com player.vimeo.com www.youtube-nocookie.com www.youtube.com; \
img-src 'self' *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.vimeocdn.com i.ytimg.com tile.openstreetmap.org; \
manifest-src 'self'; \ manifest-src 'self'; \
media-src 'self' \ media-src 'self'; \
object-src 'none'; \
script-src 'self' *.google-analytics.com *.googletagmanager.com; \
style-src 'self' www.youtube.com; \
""" """
X-Frame-Options = "SAMEORIGIN" Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
Referrer-Policy = "strict-origin" Referrer-Policy = 'strict-origin'
Permissions-Policy = """\ Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
geolocation=(), \ X-Content-Type-Options = 'nosniff'
midi=(), \ X-Frame-Options = 'SAMEORIGIN'
sync-xhr=(), \ X-XSS-Protection = '1; mode=block'
microphone=(), \ cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
camera=(), \
magnetometer=(), \
gyroscope=(), \
payment=() \
"""
cache-control = """\
max-age=0, \
no-cache, \
no-store, \
must-revalidate \
"""
Access-Control-Allow-Origin = "*"
# toml-docs-end server-config

View File

@@ -10,7 +10,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])] return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
}, },
dynamicAttributes: ['data-bs-theme'], dynamicAttributes: ['data-bs-theme'],
safelist: [ safelist: ['was-validated',
...whitelister([ ...whitelister([
'./assets/scss/components/_clipboard.scss', './assets/scss/components/_clipboard.scss',
'./assets/scss/components/_command.scss', './assets/scss/components/_command.scss',
@@ -24,6 +24,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./assets/scss/components/_video.scss', './assets/scss/components/_video.scss',
'./assets/scss/theme/fonts.scss', './assets/scss/theme/fonts.scss',
'./assets/scss/theme/theme.scss', './assets/scss/theme/theme.scss',
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss', './_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss', './_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss', './_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',

35
data/netlify.toml Normal file
View File

@@ -0,0 +1,35 @@
# toml-docs-start netlify
[build]
publish = "exampleSite/public"
command = "npm run build:example"
[build.environment]
DART_SASS_VERSION = "1.78.0"
HUGO_VERSION = "0.134.1"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
NODE_VERSION = "20.17.0"
NPM_VERSION = "10.8.2"
# toml-docs-end netlify
[context.deploy-preview]
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
[context.branch-deploy]
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
[dev]
framework = "#custom"
command = "npm run start:example"
targetPort = 1313
port = 8888
publish = "public"
autoLaunch = false
# toml-docs-start plugins
[[plugins]]
package = "@gethinode/netlify-plugin-dartsass"
[[plugins]]
package = "netlify-plugin-hugo-cache-resources"
# toml-docs-end plugins

39
data/server.toml Normal file
View File

@@ -0,0 +1,39 @@
[[headers]]
for = "/**"
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options = "nosniff"
X-XSS-Protection = "1; mode=block"
X-Frame-Options = "SAMEORIGIN"
Referrer-Policy = "strict-origin"
Permissions-Policy = """\
geolocation=(), \
midi=(), \
sync-xhr=(), \
microphone=(), \
camera=(), \
magnetometer=(), \
gyroscope=(), \
fullscreen=(), \
payment=() \
"""
cache-control = """\
max-age=0, \
no-cache, \
no-store, \
must-revalidate \
"""
Access-Control-Allow-Origin = "*"
Content-Security-Policy = """\
default-src 'none'; \
script-src 'self'; \
font-src 'self'; \
connect-src 'self'; \
img-src 'self'; \
style-src 'self'; \
base-uri 'self'; \
object-src 'none'; \
form-action 'self'; \
manifest-src 'self'; \
media-src 'self' \
"""

View File

@@ -0,0 +1,46 @@
comment: >-
Includes a reference to a local or external JavaScript file. Hinode uses the
template defined in `layouts/partials/templates/script.html` to generate the
link to a (bundled) JavaScript file. It includes context such as the state,
category, and integrity. For example, you can adapt this template to implement
cookie consent management.
arguments:
link:
type: string
optional: false
comment: >-
Location of the script source, either an URL for an external script or a
(relative) path for a local script.
state:
type: select
optional: true
comment: >-
Defines the loading behavior of the script bundle. By default, scripts are
loaded immediately. Use `async` to process the script in the background.
Use `defer` to load the script in relative order when the DOM is fully
built.
options:
values:
- async
- defer
- immediate
category:
type: select
optional: true
default: other
comment: >-
Assigns the script to a category that can be used for cookie consent
management.
options:
values:
- necessary
- functional
- analytics
- performance
- advertisement
- other
integrity:
type: string
optional: true
comment: >-
Cryptographic hash of the script to enable Subresource Integrity (SRI).

View File

@@ -8,62 +8,17 @@ arguments:
- '*hugolib.pageForShortcode' - '*hugolib.pageForShortcode'
optional: false optional: false
comment: Context of the current page. comment: Context of the current page.
core: type:
type: bool
default: false
optional: true
comment: >-
Trigger to include all core files in the script bundle. Core bundles are
loaded asynchronously in each page of the site.
filename:
type: string
default: js/main.bundle.js
optional: true
comment: >-
Path of the target bundle file, relative to the site root.
match:
type: string
default: {js/*.js,js/vendor/**.js}
optional: true
comment: >-
Regular expression that defines the pattern of source files to be included
in the bundle. The pattern is relative to the project's `asset` folder.
header:
type: bool
default: false
comment: >-
Trigger to consider the script as loaded in the page header. When enabled,
it includes a script to load Google Analytics adjacent to any bundle
input.
localize:
type: bool
default: false
optional: true
comment: >-
Triggers the creation of a language-specific bundle file. The language
code is appended as suffix to the base name. For example, the English
version of `js/main.bundle.js` becomes `js/main.bundle.en.js`.
skipTemplate:
type: bool
default: false
optional: true
comment: >-
Script source input can contain Go Template magic. As such, Hinode
processes all input files with `resources.ExecuteAsTemplate`. However,
certain input files may be incompatible. Set `skipTemplate` to true to
skip template processing.
state:
type: select type: select
default: core
optional: true optional: true
default: async
comment: >- comment: >-
Defines the loading behavior of the script bundle. By default, scripts are Type of script bundle. Critical scripts are included in the page header
processed in the background and loaded when ready (`async`). Set the state and are loaded immediately. Core scripts are bundled by category and are
to `immediate` to load the script immediately (such as critical scripts). loaded asynchronously. Optional scripts are loaded individually on the
Use 'defer' to load the script in relative order when the DOM is fully pages that require them. They use the synchronization method as defined
built. in their containing module.
options:
values: values:
- async - critical
- defer - core
- immediate - optional

View File

@@ -2,8 +2,8 @@
module.exports = require('neostandard')({ module.exports = require('neostandard')({
ignores: [ ignores: [
'assets/js/critical/languageSelector.js', 'assets/js/critical/functional/languageSelector.js',
'assets/js/critical/color.js', 'assets/js/critical/functional/color.js',
'assets/js/analytics.js', 'assets/js/analytics.js',
'assets/js/flexsearch.js', 'assets/js/flexsearch.js',
'assets/js/navbar.js', 'assets/js/navbar.js',

View File

@@ -20,6 +20,28 @@ languageCode = "en-us"
defaultContentLanguage = "en" defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true defaultContentLanguageInSubdir = true
[outputFormats]
[outputFormats.netlify]
mediaType = "application/toml"
baseName = "netlify"
isPlainText = true
notAlternative = true
permalinkable = true
root = true
[outputFormats.server]
mediaType = "application/toml"
baseName = "server"
isPlainText = true
notAlternative = true
permalinkable = true
root = true
[outputFormats.XML]
isPlainText = false
mediaType = "application/xml"
isHtml = false
noUgly = true
permalinkable = false
name = "xml"
[outputFormats.REDIR] [outputFormats.REDIR]
mediaType = "text/netlify" mediaType = "text/netlify"
baseName = "_redirects" baseName = "_redirects"
@@ -30,7 +52,7 @@ notAlternative = true
delimiter = "" delimiter = ""
[outputs] [outputs]
home = ["HTML", "RSS", "REDIR"] home = ["HTML", "RSS", "REDIR", "netlify", "server"]
[build] [build]
writeStats = true writeStats = true
@@ -67,15 +89,6 @@ home = ["HTML", "RSS", "REDIR"]
[services.googleAnalytics] [services.googleAnalytics]
ID = "G-T85PPZ36GN" ID = "G-T85PPZ36GN"
[outputFormats]
[outputFormats.XML]
isPlainText = false
mediaType = "application/xml"
isHtml = false
noUgly = true
permalinkable = false
name = "xml"
[minify] [minify]
[minify.tdewolff.js] [minify.tdewolff.js]
keepVarNames = true keepVarNames = true
@@ -84,8 +97,36 @@ home = ["HTML", "RSS", "REDIR"]
[minify.tdewolff.html] [minify.tdewolff.html]
keepWhitespace = true keepWhitespace = true
[segments]
[segments.headers]
[[segments.headers.includes]]
kind = '{home}'
output = '{netlify,server}'
[module] [module]
# Build and serve using local hinode clone declared in the named Hugo workspace: # Build and serve using local hinode clone declared in the named Hugo workspace:
workspace = "hinode.work" workspace = "hinode.work"
[[module.imports]]
path = "github.com/gethinode/mod-cookieyes/v2"
[[module.imports]] [[module.imports]]
path = "github.com/gethinode/hinode" path = "github.com/gethinode/hinode"
[[module.imports]]
path = "github.com/gethinode/mod-bootstrap"
[[module.imports]]
path = "github.com/gethinode/mod-csp"
[[module.imports]]
path = "github.com/gethinode/mod-flexsearch/v2"
[[module.imports]]
path = "github.com/gethinode/mod-fontawesome"
[[module.imports]]
path = "github.com/gethinode/mod-google-analytics"
[[module.imports]]
path = "github.com/gethinode/mod-katex"
[[module.imports]]
path = "github.com/gethinode/mod-leaflet"
[[module.imports]]
path = "github.com/gethinode/mod-lottie"
[[module.imports]]
path = "github.com/gethinode/mod-simple-datatables"
[[module.imports]]
path = "github.com/gethinode/mod-utils/v2"

View File

@@ -11,7 +11,7 @@ tagline = "A Hugo Theme"
title = "Follow me" title = "Follow me"
caption = "I work on everything coding and tweet developer memes" caption = "I work on everything coding and tweet developer memes"
[en.params.footer] [en.params.footer]
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)." # license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
# toml-docs-end lang-param # toml-docs-end lang-param
[en.params.sections.blog] [en.params.sections.blog]
reference = "More Posts" reference = "More Posts"
@@ -30,7 +30,7 @@ tagline = "Een Hugo Thema"
title = "Volg mij" title = "Volg mij"
caption = "Ik doe aan programmeren en tweet memes" caption = "Ik doe aan programmeren en tweet memes"
[nl.params.footer] [nl.params.footer]
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)." # license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
[nl.params.sections.blog] [nl.params.sections.blog]
reference = "Meer artikelen" reference = "Meer artikelen"
[nl.params.sections.projects] [nl.params.sections.projects]
@@ -49,7 +49,7 @@ tagline = "Un thème Hugo"
title = "Suivez-moi" title = "Suivez-moi"
caption = "Je code et je tweet des mèmes de développeurs." caption = "Je code et je tweet des mèmes de développeurs."
[fr.params.footer] [fr.params.footer]
# license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)." # license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer nofollow'>CC BY-NC-SA 4.0</a>)."
[fr.params.sections.blog] [fr.params.sections.blog]
reference = "Plus d'articles" reference = "Plus d'articles"
[fr.params.sections.projects] [fr.params.sections.projects]

View File

@@ -191,3 +191,7 @@
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com" observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F" pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
hinode = "https://gethinode.com" hinode = "https://gethinode.com"
[modules.cookieyes]
# local = true
url = "https://cdn-cookieyes.com/client_data/a54b5553f349dd13bd225f8e/script.js"

View File

@@ -1,41 +1,29 @@
# toml-docs-start server-config # Auto-generated file - do not modify
[[headers]] [[headers]]
for = '/**' for = '/**'
[headers.values] [headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" Access-Control-Allow-Origin = '*'
X-Content-Type-Options = "nosniff" Content-Security-Policy = """
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
script-src 'self' https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \ base-uri 'self'; \
connect-src 'self' connect-src 'self' *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \ default-src 'none'; \
font-src 'self' https://fonts.gstatic.com; \ font-src 'self' fonts.gstatic.com; \
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com; \ form-action 'self'; \
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \ frame-src player.cloudinary.com player.vimeo.com www.youtube-nocookie.com www.youtube.com; \
img-src 'self' *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.vimeocdn.com i.ytimg.com tile.openstreetmap.org; \
manifest-src 'self'; \ manifest-src 'self'; \
media-src 'self' \ media-src 'self'; \
object-src 'none'; \
script-src 'self' *.google-analytics.com *.googletagmanager.com; \
style-src 'self' www.youtube.com; \
""" """
X-Frame-Options = "SAMEORIGIN" Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
Referrer-Policy = "strict-origin" Referrer-Policy = 'strict-origin'
Permissions-Policy = """\ Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
geolocation=(), \ X-Content-Type-Options = 'nosniff'
midi=(), \ X-Frame-Options = 'SAMEORIGIN'
sync-xhr=(), \ X-XSS-Protection = '1; mode=block'
microphone=(), \ cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
camera=(), \
magnetometer=(), \
gyroscope=(), \
payment=() \
"""
cache-control = """\
max-age=0, \
no-cache, \
no-store, \
must-revalidate \
"""
Access-Control-Allow-Origin = "*"
# toml-docs-end server-config

View File

@@ -10,7 +10,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])] return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
}, },
dynamicAttributes: ['data-bs-theme'], dynamicAttributes: ['data-bs-theme'],
safelist: [ safelist: ['was-validated',
...whitelister([ ...whitelister([
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_clipboard.scss', './_vendor/github.com/gethinode/hinode/assets/scss/components/_clipboard.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_command.scss', './_vendor/github.com/gethinode/hinode/assets/scss/components/_command.scss',
@@ -24,6 +24,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
'./_vendor/github.com/gethinode/hinode/assets/scss/components/_video.scss', './_vendor/github.com/gethinode/hinode/assets/scss/components/_video.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/fonts.scss', './_vendor/github.com/gethinode/hinode/assets/scss/theme/fonts.scss',
'./_vendor/github.com/gethinode/hinode/assets/scss/theme/theme.scss', './_vendor/github.com/gethinode/hinode/assets/scss/theme/theme.scss',
'./exampleSite/_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss', './_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss', './_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss', './_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',

View File

@@ -14,7 +14,7 @@ As an example, the following shortcode displays an image with rounded corners an
<!-- markdownlint-disable MD037 --> <!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}} {{< example lang="hugo" >}}
{{</* image src="https://res.cloudinary.com/demo/image/upload/dog.webp" {{</* image src="https://res.cloudinary.com/demo/dog.webp"
ratio="21x9" caption="Cloudinary image" class="rounded" plain=true */>}} ratio="21x9" caption="Cloudinary image" class="rounded" plain=true */>}}
{{< /example >}} {{< /example >}}
<!-- markdownlint-enable MD037 --> <!-- markdownlint-enable MD037 -->

View File

@@ -0,0 +1,44 @@
---
title: Cookie Policy
description: Cookie policy of gethinode.com
date: 2024-09-19
layout: docs
---
<!-- markdownlint-disable MD036 -->
*Effective Date 19-Sep-2024*
## What are cookies?
This Cookie Policy explains what cookies are and how we use them, the types of cookies we use i.e, the information we collect using cookies and how that information is used, and how to manage the cookie settings.
Cookies are small text files that are used to store small pieces of information. They are stored on your device when the website is loaded on your browser. These cookies help us make the website function properly, make it more secure, provide better user experience, and understand how the website performs and to analyze what works and where it needs improvement.
## How do we use cookies?
As most of the online services, our website uses first-party and third-party cookies for several purposes. First-party cookies are mostly necessary for the website to function the right way, and they do not collect any of your personally identifiable data.
The third-party cookies used on our website are mainly for understanding how the website performs, how you interact with our website, keeping our services secure, providing advertisements that are relevant to you, and all in all providing you with a better and improved user experience and help speed up your future interactions with our website.
## Types of Cookies we use
{{< cky-audit >}}
## Manage cookie preferences
{{< cky-banner >}}
You can change your cookie preferences any time by clicking the above button. This will let you revisit the cookie consent banner and change your preferences or withdraw your consent right away.
In addition to this, different browsers provide different methods to block and delete cookies used by websites. You can change the settings of your browser to block/delete the cookies. Listed below are the links to the support documents on how to manage and delete cookies from the major web browsers.
Chrome: https://support.google.com/accounts/answer/32050
Safari: https://support.apple.com/en-in/guide/safari/sfri11471/mac
Firefox: https://support.mozilla.org/en-US/kb/clear-cookies-and-site-data-firefox?redirectslug=delete-cookies-remove-info-websites-stored&redirectlocale=en-US
Internet Explorer: https://support.microsoft.com/en-us/topic/how-to-delete-cookie-files-in-internet-explorer-bca9446f-d873-78de-77ba-d42645fa52fc
If you are using any other web browser, please visit your browsers official support documents.
*Cookie Policy generated by {{< link "https://www.cookieyes.com" >}}CookieYes - Cookie Policy Generator{{< /link >}}.*

View File

@@ -0,0 +1,47 @@
---
title: Privacy Policy
description: Privacy policy of gethinode.com
date: 2024-09-19
layout: docs
---
<!-- markdownlint-disable MD036 -->
*Effective Date 19-Sep-2024*
This Privacy Policy describes the policies of gethinode.com on the collection, use and disclosure of your information that we collect when you use our website (https://gethinode.com, referred to as the “Service”). By accessing or using the Service, you are consenting to the collection, use and disclosure of your information in accordance with this Privacy Policy. If you do not consent to the same, please do not access or use the Service.
We may modify this Privacy Policy at any time without any prior notice to you and will post the revised Privacy Policy on the Service. The revised Policy will be effective 180 days from when the revised Policy is posted in the Service and your continued access or use of the Service after such time will constitute your acceptance of the revised Privacy Policy. We therefore recommend that you periodically review this page.
## How we share your information
We will not transfer your personal information to any third party without seeking your consent, except in limited circumstances as described
below:
- Analytics
We require such third partys to use the personal information we transfer to them only for the purpose for which it was transferred and not to retain it for longer than is required for fulfilling the said purpose.
We may also disclose your personal information for the following: (1) to comply with applicable law, regulation, court order or other legal process; (2) to enforce your agreements with us, including this Privacy Policy; or (3) to respond to claims that your use of the Service violates any third-party rights. If the Service or our company is merged or acquired with another company, your information will be one of the assets that is transferred to the new owner.
## Your rights
Depending on the law that applies, you may have a right to access and rectify or erase your personal data or receive a copy of your personal data, restrict or object to the active processing of your data, ask us to share (port) your personal information to another entity,withdraw any consent you provided to us to process your data, a right to lodge a complaint with a statutory authority and such other rights as may be relevant under applicable laws. <!-- To exercise these rights, you can write to us at privacy@gethinode.com. We will respond to your request in accordance with applicable law. -->
Do note that if you do not allow us to collect or process the required personal information or withdraw the consent to process the same for the required purposes, you may not be able to access or use the services for which your information was sought.
## Cookies etc.
To learn more about how we use these and your choices in relation to these tracking technologies, please refer to our {{< link "cookies" >}}Cookie Policy/Settings{{< /link >}}.
## Security
The security of your information is important to us and we will use reasonable security measures to prevent the loss, misuse or unauthorized alteration of your information under our control. However, given the inherent risks, we cannot guarantee absolute security and consequently, we cannot ensure or warrant the security of any information you transmit to us and you do so at your own risk.
## Third party links & use of your information
Our Service may contain links to other websites that are not operated by us. This Privacy Policy does not address the privacy policy and other practices of any third parties, including any third party operating any website or service that may be accessible via a link on the Service. We strongly advise you to review the privacy policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
<!-- ## Grievance / Data Protection Officer
If you have any queries or concerns about the processing of your information that is available with us, you may email us at privacy@gethinode.com. We will address your concerns in accordance with applicable law. -->
*Privacy Policy generated with {{< link "https://www.cookieyes.com" >}}CookieYes{{< /link >}}.*

View File

@@ -2,3 +2,6 @@ module github.com/gethinode/hinode/exampleSite
go 1.19 go 1.19
require (
github.com/gethinode/mod-cookieyes/v2 v2.1.2 // indirect
)

View File

@@ -1,14 +1 @@
github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg= github.com/gethinode/mod-cookieyes/v2 v2.0.3/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ=
github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ=
github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.9.0 h1:AE+w7QeZTxh36JNTG+CASDLxaqlCZKn+EUD6ulnPGak=
github.com/gethinode/mod-flexsearch v1.9.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
github.com/gethinode/mod-fontawesome v1.8.1 h1:iyvULrpaGizQoI5Vl9WjFYcMGWefdyG90NGK2UKax+k=
github.com/gethinode/mod-fontawesome v1.8.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-katex v1.0.5 h1:AVhcTINYory0ygChQERf8PcyJkbT1oqhmLRF6ESnWOY=
github.com/gethinode/mod-katex v1.0.5/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-leaflet v1.0.0 h1:HdnWafOGkkK1hYGfqLYF3pp9dAFS/caxlzML9sO1rCc=
github.com/gethinode/mod-leaflet v1.0.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-lottie v1.4.3 h1:IKZO8a4yQyPKUwZ6POsZRIH/B++yEzXDe5HxrFF79KA=
github.com/gethinode/mod-lottie v1.4.3/go.mod h1:nt4wLnDFIhjBGRMuQJJ2bH80VREpbcsBUsdO6uWXjLs=

View File

@@ -1,18 +1,9 @@
github.com/airbnb/lottie-web v5.12.2+incompatible h1:Ldogtlhiucf7mMsgisyxSBY0qunV44+lpa9Icy2KoQc=
github.com/airbnb/lottie-web v5.12.2+incompatible/go.mod h1:nTss557UK9FGnp8QYlCMO29tjUHwbdAHG/DprbGfHGE=
github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg= github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2Tg=
github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ= github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ=
github.com/gethinode/mod-flexsearch v1.8.1 h1:xwPvmmxd8Tdyxp8/rnd9KRGqIDtZs/YwAQJ1i9oQMiM= github.com/gethinode/mod-cookieyes v1.0.2 h1:WL9sjpYKjkV+jRKIrm6H82UpthQjFksvKGptW6HD/QU=
github.com/gethinode/mod-flexsearch v1.8.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ= github.com/gethinode/mod-cookieyes v1.0.2/go.mod h1:VrBUKm5apop6KIb+R8eRqvlf3AAPnv5aMajL0RorIjY=
github.com/gethinode/mod-fontawesome v1.8.0 h1:YEuCmvCdzcemF1eFK35Wnp1asKKO3/xbxGArnjq6PRY= github.com/gethinode/mod-cookieyes/v2 v2.0.3 h1:o5PAAOjx8baRcSkhTAQuZ+hX9cK8oWjeC3sYxt1DT2c=
github.com/gethinode/mod-fontawesome v1.8.0/go.mod h1:uvuC2YL8mdXNp6NRzFOu4TWsHvtY9AZ8YxJkF23/M/8= github.com/gethinode/mod-cookieyes/v2 v2.0.4 h1:QgYSD3S23351e7xEeQb+Mon+e+I6RbnnrTyvpxBST1A=
github.com/gethinode/mod-leaflet v0.4.0 h1:Xc6c1UTf4m1saQLFfFWT5sEpwj25xVGuS8csGC82UUI= github.com/gethinode/mod-cookieyes/v2 v2.0.4/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
github.com/gethinode/mod-leaflet v0.4.0/go.mod h1:yr+bUKAstifdB16mbYh69OayAmgPOlNUubAmVn5eL2M= github.com/gethinode/mod-cookieyes/v2 v2.1.2 h1:hzGCbRbpNAVkLr+jFWpAQaXHG0lgK+KgIpaZYsI1J+U=
github.com/gethinode/mod-lottie v1.4.1 h1:RzCjYsxFPqyBsYAcdPeUP0rvF+hD9eEl7NrxuaRiKQQ= github.com/gethinode/mod-cookieyes/v2 v2.1.2/go.mod h1:tULb7D7CoTycGUyL7ryqHJKaX11XuL2SN+XwP7/DI0Y=
github.com/gethinode/mod-lottie v1.4.1/go.mod h1:QjKlEmYbekrNGwa9EdFlPcXxwWWcraJUQ6xIL+syA60=
github.com/gethinode/mod-utils v1.0.2 h1:0b3i+/bBHY1Td9N6khDbL1nf3d5HGc4QzI4BbEWHoU4=
github.com/gethinode/mod-utils v1.0.2/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/twbs/bootstrap v5.3.2+incompatible h1:tuiO5acc6xnZUR77Sbi5aKWXxjYxbmsSbJwYrhAKoQQ=
github.com/twbs/bootstrap v5.3.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=

View File

@@ -142,6 +142,8 @@
"carousel-item", "carousel-item",
"checkbox", "checkbox",
"chroma", "chroma",
"cky-audit-table-element",
"cky-banner-element",
"col", "col",
"col-10", "col-10",
"col-12", "col-12",
@@ -515,6 +517,7 @@
"collapse", "collapse",
"collapse-1", "collapse-1",
"command-prompt", "command-prompt",
"cookies-etc",
"custom-activity", "custom-activity",
"data-tables", "data-tables",
"docs", "docs",
@@ -560,6 +563,8 @@
"formule-katex", "formule-katex",
"groupe-de-boutons", "groupe-de-boutons",
"groupe-de-cartes", "groupe-de-cartes",
"how-do-we-use-cookies",
"how-we-share-your-information",
"icon", "icon",
"image", "image",
"imagekitio", "imagekitio",
@@ -572,6 +577,7 @@
"lien", "lien",
"link", "link",
"lottie-animation-0", "lottie-animation-0",
"manage-cookie-preferences",
"map", "map",
"mark", "mark",
"nav", "nav",
@@ -596,10 +602,12 @@
"publication", "publication",
"release", "release",
"réduire", "réduire",
"security",
"spinner", "spinner",
"sub", "sub",
"sup", "sup",
"table", "table",
"third-party-links--use-of-your-information",
"timeline", "timeline",
"toast", "toast",
"toast-container", "toast-container",
@@ -609,8 +617,11 @@
"toast-message-email-4", "toast-message-email-4",
"toc-collapse", "toc-collapse",
"tooltip", "tooltip",
"types-of-cookies-we-use",
"video", "video",
"vimeo", "vimeo",
"what-are-cookies",
"your-rights",
"youtube" "youtube"
] ]
} }

View File

@@ -0,0 +1,80 @@
{{- /* Set version-aware sidebar menu */ -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
{{- $.Scratch.Set "version" $version -}}
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
{{- /* Validate if current version is latest */ -}}
{{- if and site.Params.docs.checkVersion $version -}}
{{- if ne $version "latest" -}}
{{- if partial "utilities/IsOlder" (dict "current" $version) -}}
{{- $.Scratch.Set "pageAlertMsg" (T "newerVersionAlert" site.Title) -}}
{{- $.Scratch.Set "pageAlertURL" (or site.Params.docs.latestURL site.baseURL) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- /* Initialize module configuration */ -}}
{{- $modules := partialCached "utilities/InitModules.html" . -}}
{{- $.Scratch.Set "modules" $modules -}}
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
{{- $.Scratch.Set "fullCover" $fullCover -}}
{{- /* Define section headings */ -}}
{{- $loading := "" -}}
{{- if $fullCover }}{{ $loading = .Site.Params.main.loading }}{{ end -}}
{{ $sections := partial "utilities/GetSections.html" (dict "page" . "loading" $loading) }}
{{- $.Scratch.Set "sections" $sections -}}
{{- /* Define main breakpoint */ -}}
{{- $.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }}
{{- /* Define base URL */ -}}
{{ $lang := site.LanguageCode | default site.Language.Lang }}
{{ $.Scratch.Set "baseURL" (strings.TrimSuffix (printf "%s/" $lang) site.Home.RelPermalink) }}
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">
<head>
{{- partial "footer/scripts.html" (dict "page" . "type" "critical") -}}
{{ block "head" . }}{{ end -}}
</head>
<body>
<div class="d-flex flex-column min-vh-100">
<div class="d-flex flex-column {{ if $fullCover }} fullscreen{{ end }}{{ if .IsHome }} {{ .Site.Params.home.style }}{{ end }}">
{{- partial "assets/navbar.html" (dict
"page" .
"fixed" site.Params.navigation.fixed
"overlay" site.Params.navigation.overlay
"overlayMode" site.Params.navigation.overlayMode
"color" site.Params.navigation.color
"style" (default "light" site.Params.navigation.style)
"size" (default "md" site.Params.navigation.size))
-}}
<div class="main-content">
{{ block "featured" . }}{{ end -}}
</div>
{{ if .Site.Params.main.footerBelowFold }}
{{ block "main" . }}{{ end -}}
{{ end }}
</div>
{{ if not .Site.Params.main.footerBelowFold }}
{{ block "main" . }}{{ end -}}
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
{{ end }}
</div>
{{ if .Site.Params.main.footerBelowFold }}
{{- partial "footer/social.html" . -}}
{{- partial "footer/footer.html" . -}}
{{ end }}
{{- partial "footer/toast-container.html" . -}}
{{- partial "assets/symbols.html" . -}}
{{- partialCached "footer/scripts.html" (dict "page" .) -}}
{{- partial "footer/scripts.html" (dict "page" . "type" "optional") -}}
</body>
</html>

View File

@@ -0,0 +1,15 @@
<footer class="container-fluid footer text-center p-3">
<div class="container-xxl text-center">
<small>
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
{{ .Site.Params.footer.license | safeHTML }} |
{{ partial "assets/link.html" (dict "destination" "/en/privacy" "text" (T "privacy") "class" "link-bg-footer" "page" .Page) }} |
{{ partial "assets/link.html" (dict "destination" "/en/cookies" "text" (T "cookies") "class" "link-bg-footer" "page" .Page) }} |
{{ if .Site.Params.main.endorse }}
{{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }}
{{ T "poweredBy" $link | safeHTML }}
{{ end }}
</small>
</div>
</footer>

10
go.mod
View File

@@ -5,13 +5,15 @@ go 1.19
require ( require (
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
github.com/gethinode/mod-bootstrap v1.3.1 // indirect github.com/gethinode/mod-bootstrap v1.3.1 // indirect
github.com/gethinode/mod-csp v1.0.2 // indirect
github.com/gethinode/mod-flexsearch/v2 v2.0.1 // indirect github.com/gethinode/mod-flexsearch/v2 v2.0.1 // indirect
github.com/gethinode/mod-fontawesome v1.10.0 // indirect github.com/gethinode/mod-fontawesome v1.10.0 // indirect
github.com/gethinode/mod-google-analytics v1.1.2 // indirect
github.com/gethinode/mod-katex v1.1.2 // indirect github.com/gethinode/mod-katex v1.1.2 // indirect
github.com/gethinode/mod-leaflet v1.1.1 // indirect github.com/gethinode/mod-leaflet v1.2.0 // indirect
github.com/gethinode/mod-lottie v1.5.8 // indirect github.com/gethinode/mod-lottie v1.5.10 // indirect
github.com/gethinode/mod-simple-datatables v1.0.10 // indirect github.com/gethinode/mod-simple-datatables v1.0.13 // indirect
github.com/gethinode/mod-utils/v2 v2.7.0 // indirect github.com/gethinode/mod-utils/v2 v2.8.1 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect github.com/nextapps-de/flexsearch v0.0.0-20240501124520-961c3ae84a87 // indirect
github.com/twbs/bootstrap v5.3.3+incompatible // indirect github.com/twbs/bootstrap v5.3.3+incompatible // indirect
) )

32
go.sum
View File

@@ -24,6 +24,12 @@ github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+
github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ= github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-bootstrap v1.3.1 h1:ZUX72St0WZ5tyXpEPBJlayX/dmCH3cGErzsozkUKCok= github.com/gethinode/mod-bootstrap v1.3.1 h1:ZUX72St0WZ5tyXpEPBJlayX/dmCH3cGErzsozkUKCok=
github.com/gethinode/mod-bootstrap v1.3.1/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ= github.com/gethinode/mod-bootstrap v1.3.1/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
github.com/gethinode/mod-csp v1.0.0 h1:Obp0MVMBjIPZbKDh6Ejl5pImDG7yERMLf2or9UVnwPA=
github.com/gethinode/mod-csp v1.0.0/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.1 h1:IUUwPc41UNw7DAFuJ75nNPzhkPExenxXU7susdLaxdQ=
github.com/gethinode/mod-csp v1.0.1/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-csp v1.0.2 h1:KX8EeoCGbHhGSo5r0YIa9BmPZ6S6v7L9CChTejREkK4=
github.com/gethinode/mod-csp v1.0.2/go.mod h1:Nb22QMicoUHgZQUKP5TCgVrSI8K3KU7jLuLBShmotjg=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA= github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4= github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4= github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
@@ -118,6 +124,18 @@ github.com/gethinode/mod-fontawesome v1.9.1 h1:cQk84vriqffM4fuUUoM9j3SSD+3ppeW2j
github.com/gethinode/mod-fontawesome v1.9.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y= github.com/gethinode/mod-fontawesome v1.9.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-fontawesome v1.10.0 h1:Izs2AKc+YVBa1TywcH54OKLTNCUMXRoFIqOs+n0FgOo= github.com/gethinode/mod-fontawesome v1.10.0 h1:Izs2AKc+YVBa1TywcH54OKLTNCUMXRoFIqOs+n0FgOo=
github.com/gethinode/mod-fontawesome v1.10.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y= github.com/gethinode/mod-fontawesome v1.10.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
github.com/gethinode/mod-google-analytics v1.0.0 h1:fly42RQ69bdyJe8WFefsBIo7WMIXkd3wZn32kyAr4h4=
github.com/gethinode/mod-google-analytics v1.0.0/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.0.1 h1:zbmOdnAhhFCA7qWw7fnR46biWhqW2r06sIaTWyhB5R0=
github.com/gethinode/mod-google-analytics v1.0.1/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.0.2 h1:ljrAYdAPqiQg6rdnL6Je8zLK6mhlXoTGJ/vGtIUpX+w=
github.com/gethinode/mod-google-analytics v1.0.2/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.0.3 h1:QUm4AeBR6D9cLx26F6Cy5qQvQe/19c2wTJAqxmCfAq4=
github.com/gethinode/mod-google-analytics v1.0.3/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.1.1 h1:XzMXd6nBDl5Lj1Q5pd8MWtE87FI/vRCsUAkAvfuXDxE=
github.com/gethinode/mod-google-analytics v1.1.1/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-google-analytics v1.1.2 h1:mcoqaRRorut+PxYxJnOEMfKIlVIIOd6vxKhuEYTwFzw=
github.com/gethinode/mod-google-analytics v1.1.2/go.mod h1:dl628cFozpCvoIMCiV7ujzQipjxcm3eatXrSfLPWNII=
github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc= github.com/gethinode/mod-katex v1.0.0 h1:me/3dIIZBkfk1mRIFt8QiAGYwYDoSG5bc2hHRtIutFc=
github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg= github.com/gethinode/mod-katex v1.0.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs= github.com/gethinode/mod-katex v1.0.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
@@ -162,6 +180,8 @@ github.com/gethinode/mod-leaflet v1.1.0 h1:FXzPCic5XmUluxQ6e7LYUhhLnxuQOBwry8qjG
github.com/gethinode/mod-leaflet v1.1.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE= github.com/gethinode/mod-leaflet v1.1.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.1.1 h1:AIHR4k8SjmeoZxtjLgSS6/N3jKeZNZGdZTgu/7MwP4c= github.com/gethinode/mod-leaflet v1.1.1 h1:AIHR4k8SjmeoZxtjLgSS6/N3jKeZNZGdZTgu/7MwP4c=
github.com/gethinode/mod-leaflet v1.1.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE= github.com/gethinode/mod-leaflet v1.1.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-leaflet v1.2.0 h1:5q5LHmGNi9N4cdRDCsl/6oI8vY3oQ2ogNUjP3NCnk4Y=
github.com/gethinode/mod-leaflet v1.2.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE= github.com/gethinode/mod-lottie v1.0.0 h1:1CUZMcgN5FAyjjyuP3qkaOQ6M5sv6HUAbosW4sIT5VE=
github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs= github.com/gethinode/mod-lottie v1.0.0/go.mod h1:erRCgSL2FCfKHI0jQbSpM+g0jXl7SjKVJrh7kWGteKs=
github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0= github.com/gethinode/mod-lottie v1.0.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
@@ -206,6 +226,10 @@ github.com/gethinode/mod-lottie v1.5.7 h1:hcf04kmKv7xrI2byxtgHwkScYIHfP9aquInHNZ
github.com/gethinode/mod-lottie v1.5.7/go.mod h1:rhWg+MSSnWmqHKNEViE/9/78RjQD6uWWFASgjvFjgyo= github.com/gethinode/mod-lottie v1.5.7/go.mod h1:rhWg+MSSnWmqHKNEViE/9/78RjQD6uWWFASgjvFjgyo=
github.com/gethinode/mod-lottie v1.5.8 h1:glg5HcjOBkFt5MoF7p24NN+RzctExPQUDXvdhPx9u6I= github.com/gethinode/mod-lottie v1.5.8 h1:glg5HcjOBkFt5MoF7p24NN+RzctExPQUDXvdhPx9u6I=
github.com/gethinode/mod-lottie v1.5.8/go.mod h1:Z/FlAcCJWYI1Z9tQnL0yRN4lqhyZl9CqYpfJUPVDaGc= github.com/gethinode/mod-lottie v1.5.8/go.mod h1:Z/FlAcCJWYI1Z9tQnL0yRN4lqhyZl9CqYpfJUPVDaGc=
github.com/gethinode/mod-lottie v1.5.9 h1:1MFsq8pO7s4RXu1sA0z75xdp63FPdJ6ar9OhEieDSj8=
github.com/gethinode/mod-lottie v1.5.9/go.mod h1:TA1rPRwSilT5mXUakNSVlXNrgTpE87mUOB/fdunAdA0=
github.com/gethinode/mod-lottie v1.5.10 h1:tYFgk74T9zWy2FRkfkRI+8QVQy6lnuABnTeWQ8nUX5w=
github.com/gethinode/mod-lottie v1.5.10/go.mod h1:L7NpvCAm04R59GSAAm/UFoDCs/6UtrIC5zQEjgQSr4k=
github.com/gethinode/mod-simple-datatables v1.0.0 h1:Dj4WGw12OkaimwkCpLn5Jhmd49dvNJW9O2P/W9F+HlQ= github.com/gethinode/mod-simple-datatables v1.0.0 h1:Dj4WGw12OkaimwkCpLn5Jhmd49dvNJW9O2P/W9F+HlQ=
github.com/gethinode/mod-simple-datatables v1.0.0/go.mod h1:K8T7fIdb8pMOB+OSW4A5lz5IW99+HyzcTgx764fvOGw= github.com/gethinode/mod-simple-datatables v1.0.0/go.mod h1:K8T7fIdb8pMOB+OSW4A5lz5IW99+HyzcTgx764fvOGw=
github.com/gethinode/mod-simple-datatables v1.0.2 h1:zhqxHet3iLQWYCBbGROALpOY9zQlptMycFkz1Tto5bA= github.com/gethinode/mod-simple-datatables v1.0.2 h1:zhqxHet3iLQWYCBbGROALpOY9zQlptMycFkz1Tto5bA=
@@ -224,6 +248,10 @@ github.com/gethinode/mod-simple-datatables v1.0.9 h1:8OnpY/axFkgxJ598DHW4nDtxsCY
github.com/gethinode/mod-simple-datatables v1.0.9/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI= github.com/gethinode/mod-simple-datatables v1.0.9/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI=
github.com/gethinode/mod-simple-datatables v1.0.10 h1:/nYy4oCgooUJhTBgLdQzMnJEjolkD+dp2nkfLNT9Klg= github.com/gethinode/mod-simple-datatables v1.0.10 h1:/nYy4oCgooUJhTBgLdQzMnJEjolkD+dp2nkfLNT9Klg=
github.com/gethinode/mod-simple-datatables v1.0.10/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI= github.com/gethinode/mod-simple-datatables v1.0.10/go.mod h1:rgQWdDZ6lTR9+08dGY1zBDLZI/UneKPufakAK20+lmI=
github.com/gethinode/mod-simple-datatables v1.0.12 h1:myyVp1ctQA6j+5UTWcDwQmy8ipXdjs8T+qpTpRPBPII=
github.com/gethinode/mod-simple-datatables v1.0.12/go.mod h1:QuH7wz1igohzCgL76xI1960mFxPPrqgvGtLwR/0cFyQ=
github.com/gethinode/mod-simple-datatables v1.0.13 h1:3GTn46Zh56SFzCUP7CUSrmp/ZoiaVG19q4xdObSx6Pc=
github.com/gethinode/mod-simple-datatables v1.0.13/go.mod h1:a2qIdYegX5gBubGbspuHv/2UA/8O89oUG/U5hd7jLK8=
github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY= github.com/gethinode/mod-utils v1.0.0 h1:cqHm2xS5uDiJzRm1KfHaNbq6uMVDKLhQa8/BuTZ1nhY=
github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE= github.com/gethinode/mod-utils v1.0.0/go.mod h1:ONJm3pHCq7nvaPNjusLZNCeCbhOhSBH4HVKHwK1FdYE=
github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE= github.com/gethinode/mod-utils v1.0.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
@@ -280,6 +308,10 @@ github.com/gethinode/mod-utils/v2 v2.6.0 h1:r7l/E6fbPZHnjFyJY4T/xzekd7Xp3czNVCMg
github.com/gethinode/mod-utils/v2 v2.6.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY= github.com/gethinode/mod-utils/v2 v2.6.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.7.0 h1:5CKygjsc7X4dFtb90ihWyDVvUp2iqoJE8C7M+jeWYus= github.com/gethinode/mod-utils/v2 v2.7.0 h1:5CKygjsc7X4dFtb90ihWyDVvUp2iqoJE8C7M+jeWYus=
github.com/gethinode/mod-utils/v2 v2.7.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY= github.com/gethinode/mod-utils/v2 v2.7.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.8.0 h1:BdB+onItuO29g5ZLEz/HEwq9c4xBEM4GGqQc3kQ++js=
github.com/gethinode/mod-utils/v2 v2.8.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/gethinode/mod-utils/v2 v2.8.1 h1:u7sFbgJ5sBEMYC/GwcMRyjRAd5NxTjBnbld5b0V5n98=
github.com/gethinode/mod-utils/v2 v2.8.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo= github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3 h1:H/qVR5O4BXjRjD+5PZB+r4ug2BSJ2Of4RtwOntd+OKo=
github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU= github.com/nextapps-de/flexsearch v0.0.0-20230711092928-1243fd883ec3/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg= github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=

View File

@@ -9,10 +9,18 @@
}} }}
{{ if eq .Type "alert" }} {{ if eq .Type "alert" }}
<blockquote class="blockquote-alert blockquote-alert-{{ .AlertType }}"> {{ $alert := .AlertType }}
{{ $icon := (index $icons $alert) }}
<blockquote class="blockquote-alert blockquote-alert-{{ $alert }}">
<p class="blockquote-alert-heading"> <p class="blockquote-alert-heading">
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" (index $icons .AlertType))) }} {{ with $icon }}
{{ or (i18n .AlertType) (title .AlertType) }} {{ partial "assets/icon.html" (dict "icon" (printf "%s fa-fw" .)) }}
{{ or (i18n $alert) (title $alert) }}
{{ else }}
{{ title $alert }}
{{ warnf "Unsupported alert type: '%s'. See %s" $alert $.Position }}
{{ end }}
</p> </p>
{{ trim .Text "\n\r" | safeHTML }} {{ trim .Text "\n\r" | safeHTML }}
</blockquote> </blockquote>

View File

@@ -1,5 +1,12 @@
{{ if site.Params.navigation.anchor }} {{ $text := trim .Text " \n\r" }}
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}</a></h{{ .Level }}>
{{ if and site.Params.navigation.anchor $text }}
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">
{{- .Text | safeHTML -}}
<a href="#{{ .Anchor | safeURL }}" aria-labelledby="{{ .Anchor | safeURL }}">
{{- partial "assets/icon.html" (dict "icon" "fas link anchor") }}
</a>
</h{{ .Level }}>
{{ else }} {{ else }}
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}> <h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
{{ end }} {{ end }}

View File

@@ -14,7 +14,7 @@
{{- end -}} {{- end -}}
{{- /* Initialize module configuration */ -}} {{- /* Initialize module configuration */ -}}
{{- $modules := partial "utilities/InitModules.html" (dict "page" .) -}} {{- $modules := partialCached "utilities/InitModules.html" . -}}
{{- $.Scratch.Set "modules" $modules -}} {{- $.Scratch.Set "modules" $modules -}}
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }} {{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
@@ -27,7 +27,7 @@
{{- $.Scratch.Set "sections" $sections -}} {{- $.Scratch.Set "sections" $sections -}}
{{- /* Define main breakpoint */ -}} {{- /* Define main breakpoint */ -}}
{{- $.Scratch.Set "breakpoint" (partial "utilities/GetBreakpoint.html") }} {{- $.Scratch.Set "breakpoint" (partialCached "utilities/GetBreakpoint.html" .) }}
{{- /* Define base URL */ -}} {{- /* Define base URL */ -}}
{{ $lang := site.LanguageCode | default site.Language.Lang }} {{ $lang := site.LanguageCode | default site.Language.Lang }}
@@ -36,7 +36,8 @@
<!doctype html> <!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js"> <html lang="{{ .Site.Language.Lang }}" class="no-js">
<head> <head>
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}} {{- partial "footer/scripts.html" (dict "page" . "type" "critical") -}}
{{- partial "footer/scripts.html" (dict "page" . "type" "functional") -}}
{{ block "head" . }}{{ end -}} {{ block "head" . }}{{ end -}}
</head> </head>
@@ -74,7 +75,7 @@
{{- partial "footer/toast-container.html" . -}} {{- partial "footer/toast-container.html" . -}}
{{- partial "assets/symbols.html" . -}} {{- partial "assets/symbols.html" . -}}
{{- partialCached "footer/scripts.html" (dict "header" false "page" . "core" true) }} {{- partialCached "footer/scripts.html" (dict "page" .) -}}
{{- partial "footer/optional-scripts.html" . -}} {{- partial "footer/scripts.html" (dict "page" . "type" "optional") -}}
</body> </body>
</html> </html>

View File

@@ -8,7 +8,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript> <noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
{{ if site.Params.main.enableLanguageSelectionStorage }} {{ if site.Params.main.enableLanguageSelectionStorage }}
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" page) -}} {{- partial "footer/scripts.html" (dict "page" page "type" "critical") -}}
{{- partial "footer/scripts.html" (dict "page" page "type" "functional") -}}
{{ else }} {{ else }}
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script> <script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
{{ end }} {{ end }}

View File

@@ -39,13 +39,22 @@
{{ $element := "" }} {{ $element := "" }}
<!-- Split path between upload dir and sub dir --> <!-- Split path between upload dir and sub dir -->
{{ $newdir := partial "utilities/URLJoin.html" (dict "base" (index (split $dir "upload") 0) "path" "upload") }} {{ $dir = path.Clean (trim .dir "/") }}
{{ $file = partial "utilities/URLJoin.html" (dict "base" (index (split $dir "upload") 1) "path" $file) }} {{ $api := "image/upload" }}
{{ $dir = $newdir }}
<!-- Define the account, optional API segment, and directory -->
{{ $elements := split $dir "/" }}
{{ $account := index $elements 0 }}
{{ $operation := "" }}
{{ if and (in (slice "image" "video") (index $elements 1)) (eq (index $elements 2) "upload") }}
{{ $api = delimit (slice | append (index $elements 1) | append (index $elements 2)) "/" }}
{{ $dir = delimit (after 3 $elements) "/" }}
{{ else }}
{{ $dir = delimit (after 1 $elements) "/" }}
{{ end }}
<!-- Generate image URL --> <!-- Generate image URL -->
{{ if not $error }} {{ if not $error }}
{{ $operation := "" }}
{{ if $format }} {{ if $format }}
{{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }} {{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }}
{{ $file = printf "%s.%s" (strings.TrimSuffix (path.Ext $file) $file) $format }} {{ $file = printf "%s.%s" (strings.TrimSuffix (path.Ext $file) $file) $format }}
@@ -55,7 +64,7 @@
{{ with $anchor }} {{ with $anchor }}
{{ $operation = printf "%s,g_%s" $operation . }} {{ $operation = printf "%s,g_%s" $operation . }}
{{ end }} {{ end }}
{{- $element = partial "utilities/URLJoin.html" (dict "elements" (slice "https://" $host $dir $operation $file)) -}} {{- $element = partial "utilities/URLJoin.html" (dict "elements" (slice "https://" $host $account $api $operation $dir $file)) -}}
{{ end }} {{ end }}
{{ return $element }} {{ return $element }}

View File

@@ -64,7 +64,7 @@
{{- if $isExternal -}} {{- if $isExternal -}}
{{- if $tab -}} {{- if $tab -}}
{{- $target = "_blank" -}} {{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}} {{- $rel = "noopener noreferrer nofollow" -}}
{{- end -}} {{- end -}}
{{- if and $title $cue -}} {{- if and $title $cue -}}

View File

@@ -58,7 +58,7 @@
{{ else }} {{ else }}
{{ $paginator = $args.page.Paginate $list }} {{ $paginator = $args.page.Paginate $list }}
{{ end }} {{ end }}
{{ $list = first $paginator.PageSize (after (mul (sub $paginator.PageNumber 1) $paginator.PageSize) $list) }} {{ $list = first $paginator.PagerSize (after (mul (sub $paginator.PageNumber 1) $paginator.PagerSize) $list) }}
{{ end }} {{ end }}
<!-- Initialize list elements --> <!-- Initialize list elements -->

View File

@@ -38,7 +38,7 @@
{{- if $tab -}} {{- if $tab -}}
{{- $target = "_blank" -}} {{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}} {{- $rel = "noopener noreferrer nofollow" -}}
{{- end -}} {{- end -}}
{{- if $cue -}} {{- if $cue -}}

View File

@@ -42,7 +42,7 @@
{{- if $isExternal }} {{- if $isExternal }}
{{- if $tab -}} {{- if $tab -}}
{{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer\"" }} {{ $externalHref = "target=\"_blank\" rel=\"noopener noreferrer nofollow\"" }}
{{- end -}} {{- end -}}
{{- if $cue -}} {{- if $cue -}}

View File

@@ -45,7 +45,7 @@
{{- $rel := "" -}} {{- $rel := "" -}}
{{- if and $isExternal $tab -}} {{- if and $isExternal $tab -}}
{{- $target = "_blank" -}} {{- $target = "_blank" -}}
{{- $rel = "noopener noreferrer" -}} {{- $rel = "noopener noreferrer nofollow" -}}
{{- end -}} {{- end -}}
<!-- Inline partial to render the card's body --> <!-- Inline partial to render the card's body -->

View File

@@ -3,7 +3,7 @@
<small> <small>
{{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }} {{- $copyright := printf "%s © %s %s %s." (T "copyright") (dateFormat "2006" now) .Site.Title (T "rights") }}
{{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }} {{ cond (gt (len .Site.Copyright) 0) .Site.Copyright $copyright }}
{{ .Site.Params.footer.license | safeHTML }} {{ .Site.Params.footer.license | safeHTML }} |
{{ if .Site.Params.main.endorse }} {{ if .Site.Params.main.endorse }}
{{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }} {{ $link := partial "assets/link.html" (dict "destination" (index site.Params.links "hinode") "text" "Hinode" "class" "link-bg-footer" "page" .Page) }}
{{ T "poweredBy" $link | safeHTML }} {{ T "poweredBy" $link | safeHTML }}

View File

@@ -1,46 +0,0 @@
{{ $page_modules := slice }}
{{ if reflect.IsMap .Params.modules }}
{{ $page_modules = .Params.modules }}
{{ else }}
{{ $page_modules = $page_modules | append .Params.modules }}
{{ end }}
{{ with .Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{ $config := page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/optional-scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules := $config.optional | intersect $page_modules -}}
{{- range $index, $mod := $modules -}}
{{- $filename := printf "js/%s.bundle.js" $mod -}}
{{- $match := printf "js/modules/%s/**.js" $mod -}}
{{- $skipTemplate := false -}}
{{- if reflect.IsSlice $config.disableTemplate -}}
{{- if in $config.disableTemplate $mod}}
{{- $skipTemplate = true -}}
{{- end -}}
{{- end -}}
{{ $state := "" }}
{{- with (index $config.modules $mod) -}}
{{- with index . "state" }}{{ $state = . }}{{ end -}}
{{- end -}}
{{ $localize := false }}
{{- if reflect.IsSlice $config.localize -}}
{{- if in $config.localize $mod}}
{{- $localize = true -}}
{{- end -}}
{{- end -}}
{{- partial "footer/scripts.html" (dict
"filename" $filename
"match" $match
"header" false
"skipTemplate" $skipTemplate
"state" $state
"localize" $localize
"page" page
) }}
{{- end -}}

View File

@@ -6,50 +6,42 @@
{{ $error := false }} {{ $error := false }}
<!-- Validate arguments --> <!-- Define inline partials -->
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "scripts" "args" . "group" "partial") }} {{ define "partials/match.html" }}
{{- errorf "partial [footer/scripts.html] - Invalid arguments" -}} {{ $result := "" }}
{{ $error = true }} {{ $matches := slice }}
{{ if gt (len .modules) 0 }}
{{ range .modules }}
{{ $matches = $matches | append (printf "js/modules/%s/**.js" .) }}
{{ end }}
{{ $result = printf "{%s}" (delimit $matches ",") }}
{{ end }} {{ end }}
<!-- Initialize arguments --> {{ return $result }}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $filename := .filename | default "js/main.bundle.js" -}}
{{- $match := .match | default "{js/*.js,js/vendor/**.js}" -}}
{{- $page := .page -}}
{{- $header := .header -}}
{{- $core := .core | default false -}}
{{- $skipTemplate := .skipTemplate | default false -}}
{{- $localize := .localize | default false }}
{{- $state := .state | default "async" -}}
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
{{- $modules := "" -}}
{{ if $core }}
{{ $config := $page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }} {{ end }}
{{- $modules = $config.core -}} {{ define "partials/bundle-script.html" }}
{{- if reflect.IsSlice $config.localize -}} {{ $page := .page }}
{{- range $index, $mod := $modules -}} {{ $match := .match }}
{{- if in $config.localize $mod}} {{ $destination := .destination }}
{{- $localize = true -}} {{ $cat := .cat }}
{{- end -}} {{ $localize := .localize }}
{{- end -}} {{ $modules := .modules }}
{{- end -}} {{ $skipTemplate := .skipTemplate }}
{{- end -}} {{ $absoluteURL := .absoluteURL }}
{{ $state := cond (ne .state "immediate") .state "" }}
{{ if and $cat (ne $cat "other") }}
{{ $destination = path.Join (path.Dir $destination) (printf "%s-%s%s" (path.BaseName $destination) $cat (path.Ext $destination)) }}
{{ end }}
{{ if $localize }} {{ if $localize }}
{{ $filename = path.Join (path.Dir $filename) (printf "%s.%s%s" (path.BaseName $filename) $page.Language.Lang (path.Ext $filename)) }} {{ $destination = path.Join (path.Dir $destination) (printf "%s.%s%s" (path.BaseName $destination) $page.Language.Lang (path.Ext $destination)) }}
{{ end }} {{ end }}
<!-- Main code --> {{- $bundle := partial "utilities/bundle.html" (dict
{{- $bundle := partial "utilities/bundle" (dict
"match" $match "match" $match
"filename" $filename "filename" $destination
"modules" $modules "modules" $modules
"basepath" "js/modules" "basepath" "js/modules"
"all" true "all" true
@@ -57,21 +49,127 @@
) -}} ) -}}
{{- $js := $bundle -}} {{- $js := $bundle -}}
{{- if not $skipTemplate -}} {{- if not $skipTemplate -}}
{{- $js = $bundle | resources.ExecuteAsTemplate $filename $page -}} {{- $js = $bundle | resources.ExecuteAsTemplate $destination $page -}}
{{- end -}}
{{- if and (not hugo.IsServer) $header -}}
{{- $pc := site.Config.Privacy.GoogleAnalytics -}}
{{- if and (not $pc.Disable) (hasPrefix site.Config.Services.GoogleAnalytics.ID "G-") }}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script>
{{- end }}
{{- end -}} {{- end -}}
{{- if gt (len $js.Content) 0 -}} {{- if gt (len $js.Content) 0 -}}
{{- if not hugo.IsProduction -}} {{ $integrity := "" }}
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}"{{ with $state }} {{ . | safeHTMLAttr }}{{ end }}></script> {{- if hugo.IsProduction -}}
{{ else -}}
{{ $js = $js | minify | fingerprint -}} {{ $js = $js | minify | fingerprint -}}
<script src="{{ if $absoluteURL }}{{ $js.Permalink }}{{ else }}{{ $js.RelPermalink }}{{ end }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"{{ with $state}} {{ . | safeHTMLAttr }}{{ end }}></script> {{ $integrity = $js.Data.Integrity }}
{{ end -}} {{ end -}}
{{ partial "templates/script.html" (dict "link" (cond $absoluteURL $js.Permalink $js.RelPermalink) "category" $cat "state" $state "integrity" $integrity) }}
{{ end -}} {{ end -}}
{{ end }}
<!-- Initialize arguments -->
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "scripts" "args" .) }}
{{ if $args.err }}
{{ partial "utilities/LogErr.html" (dict
"partial" "footer/scripts.html"
"msg" "Invalid arguments"
"details" $args.errmsg
"file" page.File
)}}
{{ end }}
<!-- Initialize local arguments -->
{{ $patterns := dict
"other" "js/critical/*.js"
"functional" "js/critical/functional/**.js"
"analytics" "js/critical/analytics/**.js"
"performance" "js/critical/performance/**.js"
"advertisement" "js/critical/advertisement/**.js"
"core" "{js/*.js,js/vendor/**.js}"
}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{ $state := "immediate" }}
{{ $config := $args.page.Scratch.Get "modules" }}
{{ $page_modules := slice }}
{{ if reflect.IsMap $args.page.Params.modules }}
{{ $page_modules = $args.page.Params.modules }}
{{ else }}
{{ $page_modules = $page_modules | append $args.page.Params.modules }}
{{ end }}
{{ with $args.page.Scratch.Get "dependencies" }}{{ $page_modules = append $page_modules . | uniq }}{{ end }}
{{- $categories := dict "other" slice -}}
{{ $modules := slice }}
{{ if eq $args.type "critical" }}
{{- $modules = $config.critical -}}
{{ $categories = merge $categories (dict "functional" slice "analytics" slice "performance" slice "advertisement" slice) }}
{{ else if eq $args.type "core" }}
{{- $modules = $config.core -}}
{{ else if eq $args.type "optional" }}
{{- $modules = $config.optional | intersect $page_modules -}}
{{ end }}
{{ range $cat, $val := $config.categories }}
{{ $categories = merge $categories (dict $cat (intersect $val $modules)) }}
{{ end }}
{{ $localize := false }}
{{ if gt (intersect (or $config.localize slice) $modules | len) 0 }}{{ $localize = true }}{{ end }}
{{ $skipTemplate := false }}
{{ if gt (intersect (or $config.skipTemplate slice) $modules | len) 0 }}{{ $skipTemplate = true }}{{ end }}
<!-- Main code -->
{{ if not $error }}
<!-- include external scripts first -->
{{ range $mod, $cfg := $config.modules }}
{{ if eq (index $cfg "integration") $args.type }}
{{ if or (index $cfg "local") (not hugo.IsServer) }}
{{ with index $cfg "url" }}
{{ partial "templates/script.html" (dict "link" . "category" (index $cfg "category") "state" (index $cfg "state")) }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<!-- Bundle the critical and core scripts by category -->
{{ if ne $args.type "optional" }}
{{ range $cat, $val := $categories }}
{{ if or (gt ($val | len) 0) (eq $args.type "critical") }}
{{ $match := "" }}
{{ if eq $args.type "critical" }}
{{ $match = index $patterns $cat }}
{{ else if eq $cat "other" }}
{{ $match = index $patterns $args.type }}
{{ end }}
{{ partial "partials/bundle-script.html" (dict
"page" $args.page
"match" $match
"destination" (printf "js/%s.bundle.js" $args.type)
"cat" $cat
"modules" $val
"localize" $localize
"skipTemplate" $skipTemplate
"absoluteURL" $absoluteURL
"state" (cond (eq $args.type "critical") "immediate" "async")
)}}
{{ end }}
{{ end }}
{{ else }}
<!-- Bundle the optional scripts by module name and category -->
{{ range $cat, $val := $categories }}
{{ range $val }}
{{ $modconfig := index $config.modules . }}
{{ partial "partials/bundle-script.html" (dict
"page" $args.page
"destination" (printf "js/%s.js" .)
"cat" $cat
"modules" (slice .)
"localize" $modconfig.localize
"skipTemplate" $modconfig.disabletemplate
"absoluteURL" $absoluteURL
"state" $modconfig.state
)}}
{{ end }}
{{ end }}
{{ end }}
{{ end }}

View File

@@ -20,7 +20,7 @@
</div> </div>
<div class="col col-6 text-sm-start"> <div class="col col-6 text-sm-start">
{{ range .Site.Menus.social -}} {{ range .Site.Menus.social -}}
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2"> <a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer nofollow"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
{{ if hasPrefix .Pre "<i" }} {{ if hasPrefix .Pre "<i" }}
{{ .Pre | safeHTML }} {{ .Pre | safeHTML }}
{{ else }} {{ else }}

View File

@@ -1,13 +1,17 @@
<!-- TODO: replace scratch with dict --> <!-- TODO: replace scratch with dict -->
<!-- Adapted from doks --> <!-- Adapted from doks -->
{{ with .Params.meta.title }}
{{ $.Scratch.Set "title" . -}}
{{ else }}
{{ with .Title -}} {{ with .Title -}}
{{ $.Scratch.Set "title" . -}} {{ $.Scratch.Set "title" . -}}
{{ else -}} {{ else -}}
{{ $.Scratch.Set "title" .Site.Title -}} {{ $.Scratch.Set "title" .Site.Title -}}
{{ end -}} {{ end -}}
{{ end }}
{{ $description := or (partial "utilities/GetDescription.html" (dict "page" .)) .Site.Params.main.description }} {{ $description := or (partial "utilities/GetDescription.html" (dict "page" . "meta" true)) .Site.Params.main.description }}
{{ if gt (strings.RuneCount $description) 150 }} {{ if gt (strings.RuneCount $description) 150 }}
{{ $description = print (substr $description 0 150) "..." }} {{ $description = print (substr $description 0 150) "..." }}
{{ end }} {{ end }}

View File

@@ -21,9 +21,9 @@
{{ if $core }} {{ if $core }}
{{- if reflect.IsSlice $config.excludeSCSS -}} {{- if reflect.IsSlice $config.excludeSCSS -}}
{{- $modules = complement $config.excludeSCSS (or $config.core slice) -}} {{- $modules = complement $config.excludeSCSS (append $config.core $config.critical) -}}
{{ else }} {{ else }}
{{- $modules = $config.core -}} {{- $modules = append $config.core $config.critical -}}
{{ end }} {{ end }}
{{- end -}} {{- end -}}
@@ -63,7 +63,7 @@
-}} -}}
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}} {{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}} {{- $bundle := partial "utilities/bundle.html" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
{{- if gt ($bundle.Content | len) 0 }} {{- if gt ($bundle.Content | len) 0 }}
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}} {{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}

View File

@@ -0,0 +1,26 @@
<!--
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
Visit gethinode.com/license for more details.
-->
<!-- Initialize arguments -->
{{ $args := partial "utilities/InitArgs.html" (dict "structure" "script" "args" .) }}
{{ if $args.err }}
{{ partial "utilities/LogErr.html" (dict
"partial" "templates/script.html"
"msg" "Invalid arguments"
"details" $args.errmsg
"file" page.File
)}}
{{ end }}
<!-- Initialize local arguments -->
{{ $category := cond (ne $args.category "other") $args.category "" }}
<!-- Main code -->
<script src="{{ $args.link }}"
{{- with $category }} data-category="{{ . }}"{{ end -}}
{{- with $args.integrity }}integrity="{{ . }}" crossorigin="anonymous"{{ end }}
{{- with $args.state }} {{ . | safeHTMLAttr }}{{ end -}}>
</script>

View File

@@ -1,28 +1,18 @@
{{ $page := .page }} {{ $critical := slice }}
{{ $core := slice }} {{ $core := slice }}
{{ $optional := slice }} {{ $optional := slice }}
{{ $excludeSCSS := slice }} {{ $excludeSCSS := slice }}
{{ $disableTemplate := slice }} {{ $disableTemplate := slice }}
{{ $localize := slice }} {{ $localize := slice }}
{{ $category := dict }}
{{ $modules := dict }} {{ $modules := dict }}
{{ range $key, $mod := $page.Site.Params.modules }} {{ range $key, $mod := .Site.Params.modules }}
{{ if eq $key "core" }} {{ if reflect.IsMap $mod }}
{{ warnf "DEPRECATED: module parameter `core` has been deprecated in release v0.24.0" }}
{{ $core = $core | append $mod }}
{{ else if eq $key "optional" }}
{{ warnf "DEPRECATED: module parameter `optional` has been deprecated in release v0.24.0" }}
{{ $optional = $optional | append $mod }}
{{ else if eq $key "excludescss" }}
{{ warnf "DEPRECATED: module parameter `excludeSCSS` has been deprecated in release v0.24.0" }}
{{ $excludeSCSS = $excludeSCSS | append $mod }}
{{ else if eq $key "disabletemplate" }}
{{ warnf "DEPRECATED: module parameter `disableTemplate` has been deprecated in release v0.24.0" }}
{{ $disableTemplate = $disableTemplate | append $mod }}
{{ else if reflect.IsMap $mod }}
{{ $integration := index $mod "integration" }} {{ $integration := index $mod "integration" }}
{{ if eq $integration "core" }} {{ if eq $integration "critical" }}
{{ $critical = $critical | append $key }}
{{ else if eq $integration "core" }}
{{ $core = $core | append $key }} {{ $core = $core | append $key }}
{{ else if eq $integration "optional" }} {{ else if eq $integration "optional" }}
{{ $optional = $optional | append $key }} {{ $optional = $optional | append $key }}
@@ -42,6 +32,12 @@
{{ $localize = $localize | append $key }} {{ $localize = $localize | append $key }}
{{ end }} {{ end }}
{{ $categoryKey := "other" }}
{{ with (index $mod "category") }}{{ $categoryKey = . }}{{ end }}
{{ $cat := index $category $categoryKey | default slice }}
{{ $cat = $cat | append $key}}
{{ $category = merge $category (dict $categoryKey $cat) }}
{{ $modules = merge $modules (dict $key $mod) }} {{ $modules = merge $modules (dict $key $mod) }}
{{ else }} {{ else }}
{{ warnf "Unsupported module parameter: %s" $key }} {{ warnf "Unsupported module parameter: %s" $key }}
@@ -50,14 +46,16 @@
{{ $modules := dict {{ $modules := dict
"modules" $modules "modules" $modules
"critical" $critical
"core" $core "core" $core
"optional" $optional "optional" $optional
"excludeSCSS" $excludeSCSS "excludeSCSS" $excludeSCSS
"disableTemplate" $disableTemplate "disableTemplate" $disableTemplate
"localize" $localize "localize" $localize
"categories" $category
}} }}
{{- if and $page.IsPage (not (in $core "bootstrap")) -}} {{- if and .IsPage (not (in $core "bootstrap")) -}}
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}} {{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
{{- end -}} {{- end -}}

View File

@@ -39,6 +39,11 @@
{{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}} {{ if isset .Params "full" }}{{ $full = partial "utilities/CastBool.html" (.Get "full") }}{{ end -}}
{{- $class := .Get "class" | default "" -}} {{- $class := .Get "class" | default "" -}}
{{ if not (fileExists $file) }}
{{ warnf "Cannot find file: '%q'. See %s" $file $.Position }}
{{ $error = true }}
{{ end }}
<!-- Main code --> <!-- Main code -->
{{- if not $error -}} {{- if not $error -}}
{{- /* Force-check if the file exists */ -}} {{- /* Force-check if the file exists */ -}}

View File

@@ -1,88 +1,61 @@
# toml-docs-start netlify # Auto-generated file - do not modify
[build] [build]
publish = "exampleSite/public" command = 'npm run build:example'
command = "npm run build:example" publish = 'exampleSite/public'
[build.environment] [build.environment]
DART_SASS_VERSION = "1.77.5" DART_SASS_VERSION = '1.78.0'
HUGO_VERSION = "0.131.0" HUGO_ENABLEGITINFO = 'true'
HUGO_ENV = "production" HUGO_ENV = 'production'
HUGO_ENABLEGITINFO = "true" HUGO_VERSION = '0.134.1'
NODE_VERSION = "20.16.0" NODE_VERSION = '20.17.0'
NPM_VERSION = "10.8.1" NPM_VERSION = '10.8.2'
# toml-docs-end netlify
[[headers]] [context]
for = "/*" [context.branch-deploy]
[headers.values] command = 'npm run build:example -- -b $DEPLOY_PRIME_URL'
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options = "nosniff"
X-XSS-Protection = "1; mode=block"
Content-Security-Policy = """\
default-src 'self'; \
child-src 'self' app.netlify.com; \
script-src 'self' \
https://*.netlify.app app.netlify.com netlify-cdp-loader.netlify.app \
https://*.google-analytics.com https://*.googletagmanager.com; \
style-src 'self' \
https://*.netlify.app https://fonts.googleapis.com https://www.youtube.com; \
object-src 'none'; \
base-uri 'self'; \
connect-src 'self'
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \
frame-src 'self' https://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com \
app.netlify.com; \
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com https://*.netlify.app https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
manifest-src 'self'; \
media-src 'self' \
"""
X-Frame-Options = "SAMEORIGIN"
Referrer-Policy = "strict-origin"
Permissions-Policy = """\
geolocation=(), \
midi=(), \
sync-xhr=(), \
microphone=(), \
camera=(), \
magnetometer=(), \
gyroscope=(), \
payment=() \
"""
cache-control = """\
max-age=0, \
no-cache, \
no-store, \
must-revalidate \
"""
Access-Control-Allow-Origin = "*"
[context.deploy-preview] [context.deploy-preview]
command = "npm run build:example -- -b $DEPLOY_PRIME_URL" command = 'npm run build:example -- -b $DEPLOY_PRIME_URL'
[context.branch-deploy]
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
[dev] [dev]
framework = "#custom"
command = "npm run start:example"
targetPort = 1313
port = 8888
publish = "public"
autoLaunch = false autoLaunch = false
command = 'npm run start:example'
# toml-docs-start plugins framework = '#custom'
[[plugins]] port = 8888
package = "@gethinode/netlify-plugin-dartsass" publish = 'public'
targetPort = 1313
[[plugins]] [[plugins]]
package = "netlify-plugin-hugo-cache-resources" package = '@gethinode/netlify-plugin-dartsass'
[plugins.inputs]
# Redirected in exampleSite/config/_default/hugo.toml [[plugins]]
# srcdir = "" package = 'netlify-plugin-hugo-cache-resources'
[[headers]]
for = '/**'
[headers.values]
Access-Control-Allow-Origin = '*'
Content-Security-Policy = """
base-uri 'self'; \
connect-src 'self' *.google-analytics.com *.analytics.google.com *.googletagmanager.com; \
default-src 'none'; \
font-src 'self' fonts.gstatic.com; \
form-action 'self'; \
frame-src player.cloudinary.com player.vimeo.com www.youtube-nocookie.com www.youtube.com; \
img-src 'self' *.google-analytics.com *.googletagmanager.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.vimeocdn.com i.ytimg.com tile.openstreetmap.org; \
manifest-src 'self'; \
media-src 'self'; \
object-src 'none'; \
script-src 'self' *.google-analytics.com *.googletagmanager.com; \
style-src 'self' www.youtube.com; \
"""
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
Referrer-Policy = 'strict-origin'
Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
X-Content-Type-Options = 'nosniff'
X-Frame-Options = 'SAMEORIGIN'
X-XSS-Protection = '1; mode=block'
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
# [[plugins]]
# package = "@netlify/plugin-lighthouse"
# [plugins.inputs]
# output_path = "reports/lighthouse.html"
# toml-docs-end plugins

484
package-lock.json generated
View File

@@ -1,26 +1,27 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "0.27.0-alpha4", "version": "0.27.0-beta3",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "0.27.0-alpha4", "version": "0.27.0-beta3",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@fullhuman/postcss-purgecss": "^6.0.0", "@fullhuman/postcss-purgecss": "^6.0.0",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"cssnano": "^7.0.6", "cssnano": "^7.0.6",
"cssnano-preset-advanced": "^7.0.6", "cssnano-preset-advanced": "^7.0.6",
"hugo-bin": "0.131.1", "hugo-bin": "0.132.0",
"purgecss-whitelister": "^2.4.0" "purgecss-whitelister": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0", "@gethinode/netlify-plugin-dartsass": "^0.3.0",
"eslint": "^9.9.1", "cpy-cli": "^5.0.0",
"eslint": "^9.11.1",
"markdownlint-cli2": "^0.14.0", "markdownlint-cli2": "^0.14.0",
"neostandard": "^0.11.4", "neostandard": "^0.11.6",
"netlify-plugin-hugo-cache-resources": "^0.2.1", "netlify-plugin-hugo-cache-resources": "^0.2.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss-cli": "^11.0.0", "postcss-cli": "^11.0.0",
@@ -357,6 +358,15 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
} }
}, },
"node_modules/@eslint/core": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
"integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
@@ -381,9 +391,9 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "9.9.1", "version": "9.11.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.11.1.tgz",
"integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "integrity": "sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -398,6 +408,18 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
} }
}, },
"node_modules/@eslint/plugin-kit": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
"integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
"dev": true,
"dependencies": {
"levn": "^0.4.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@fullhuman/postcss-purgecss": { "node_modules/@fullhuman/postcss-purgecss": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-6.0.0.tgz",
@@ -608,13 +630,12 @@
} }
}, },
"node_modules/@stylistic/eslint-plugin": { "node_modules/@stylistic/eslint-plugin": {
"version": "2.7.2", "version": "2.8.0",
"resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.7.2.tgz", "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz",
"integrity": "sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==", "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/eslint": "^9.6.1", "@typescript-eslint/utils": "^8.4.0",
"@typescript-eslint/utils": "^8.3.0",
"eslint-visitor-keys": "^4.0.0", "eslint-visitor-keys": "^4.0.0",
"espree": "^10.1.0", "espree": "^10.1.0",
"estraverse": "^5.3.0", "estraverse": "^5.3.0",
@@ -675,20 +696,10 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/@types/eslint": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"dev": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
"node_modules/@types/estree": { "node_modules/@types/estree": {
"version": "1.0.5", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true "dev": true
}, },
"node_modules/@types/http-cache-semantics": { "node_modules/@types/http-cache-semantics": {
@@ -703,16 +714,16 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz",
"integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.4.0", "@typescript-eslint/scope-manager": "8.7.0",
"@typescript-eslint/type-utils": "8.4.0", "@typescript-eslint/type-utils": "8.7.0",
"@typescript-eslint/utils": "8.4.0", "@typescript-eslint/utils": "8.7.0",
"@typescript-eslint/visitor-keys": "8.4.0", "@typescript-eslint/visitor-keys": "8.7.0",
"graphemer": "^1.4.0", "graphemer": "^1.4.0",
"ignore": "^5.3.1", "ignore": "^5.3.1",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
@@ -736,15 +747,15 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz",
"integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", "integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.4.0", "@typescript-eslint/scope-manager": "8.7.0",
"@typescript-eslint/types": "8.4.0", "@typescript-eslint/types": "8.7.0",
"@typescript-eslint/typescript-estree": "8.4.0", "@typescript-eslint/typescript-estree": "8.7.0",
"@typescript-eslint/visitor-keys": "8.4.0", "@typescript-eslint/visitor-keys": "8.7.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@@ -764,13 +775,13 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz",
"integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.4.0", "@typescript-eslint/types": "8.7.0",
"@typescript-eslint/visitor-keys": "8.4.0" "@typescript-eslint/visitor-keys": "8.7.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -781,13 +792,13 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz",
"integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "8.4.0", "@typescript-eslint/typescript-estree": "8.7.0",
"@typescript-eslint/utils": "8.4.0", "@typescript-eslint/utils": "8.7.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"ts-api-utils": "^1.3.0" "ts-api-utils": "^1.3.0"
}, },
@@ -805,9 +816,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz",
"integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -818,13 +829,13 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz",
"integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.4.0", "@typescript-eslint/types": "8.7.0",
"@typescript-eslint/visitor-keys": "8.4.0", "@typescript-eslint/visitor-keys": "8.7.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@@ -870,15 +881,15 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz",
"integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.4.0", "@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "8.4.0", "@typescript-eslint/scope-manager": "8.7.0",
"@typescript-eslint/types": "8.4.0", "@typescript-eslint/types": "8.7.0",
"@typescript-eslint/typescript-estree": "8.4.0" "@typescript-eslint/typescript-estree": "8.7.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -892,12 +903,12 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz",
"integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.4.0", "@typescript-eslint/types": "8.7.0",
"eslint-visitor-keys": "^3.4.3" "eslint-visitor-keys": "^3.4.3"
}, },
"engines": { "engines": {
@@ -1079,6 +1090,23 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
} }
}, },
"node_modules/aggregate-error": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz",
"integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==",
"dev": true,
"license": "MIT",
"dependencies": {
"clean-stack": "^4.0.0",
"indent-string": "^5.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ajv": { "node_modules/ajv": {
"version": "6.12.6", "version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -1285,6 +1313,19 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/arrify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz",
"integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/astral-regex": { "node_modules/astral-regex": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -1646,6 +1687,35 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/clean-stack": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz",
"integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==",
"dev": true,
"license": "MIT",
"dependencies": {
"escape-string-regexp": "5.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/clean-stack/node_modules/escape-string-regexp": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cliui": { "node_modules/cliui": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -1750,6 +1820,100 @@
} }
} }
}, },
"node_modules/cp-file": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz",
"integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==",
"dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.10",
"nested-error-stacks": "^2.1.1",
"p-event": "^5.0.1"
},
"engines": {
"node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cpy": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/cpy/-/cpy-10.1.0.tgz",
"integrity": "sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"arrify": "^3.0.0",
"cp-file": "^10.0.0",
"globby": "^13.1.4",
"junk": "^4.0.1",
"micromatch": "^4.0.5",
"nested-error-stacks": "^2.1.1",
"p-filter": "^3.0.0",
"p-map": "^6.0.0"
},
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cpy-cli": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-5.0.0.tgz",
"integrity": "sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"cpy": "^10.1.0",
"meow": "^12.0.1"
},
"bin": {
"cpy": "cli.js"
},
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cpy-cli/node_modules/meow": {
"version": "12.1.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16.10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cpy/node_modules/globby": {
"version": "13.2.2",
"resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
"integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
"dev": true,
"license": "MIT",
"dependencies": {
"dir-glob": "^3.0.1",
"fast-glob": "^3.3.0",
"ignore": "^5.2.4",
"merge2": "^1.4.1",
"slash": "^4.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
"version": "7.0.3", "version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2427,19 +2591,23 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "9.9.1", "version": "9.11.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.11.1.tgz",
"integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "integrity": "sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0", "@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.18.0", "@eslint/config-array": "^0.18.0",
"@eslint/core": "^0.6.0",
"@eslint/eslintrc": "^3.1.0", "@eslint/eslintrc": "^3.1.0",
"@eslint/js": "9.9.1", "@eslint/js": "9.11.1",
"@eslint/plugin-kit": "^0.2.0",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.3.0", "@humanwhocodes/retry": "^0.3.0",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"@types/estree": "^1.0.6",
"@types/json-schema": "^7.0.15",
"ajv": "^6.12.4", "ajv": "^6.12.4",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@@ -2459,7 +2627,6 @@
"is-glob": "^4.0.0", "is-glob": "^4.0.0",
"is-path-inside": "^3.0.3", "is-path-inside": "^3.0.3",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2", "lodash.merge": "^4.6.2",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
@@ -2522,9 +2689,9 @@
} }
}, },
"node_modules/eslint-plugin-n": { "node_modules/eslint-plugin-n": {
"version": "17.10.2", "version": "17.10.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.3.tgz",
"integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "integrity": "sha512-ySZBfKe49nQZWR1yFaA0v/GsH6Fgp8ah6XV0WDz6CN8WO0ek4McMzb7A2xnf4DCYV43frjCygvb9f/wx7UUxRw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.4.0", "@eslint-community/eslint-utils": "^4.4.0",
@@ -2598,9 +2765,9 @@
} }
}, },
"node_modules/eslint-plugin-react": { "node_modules/eslint-plugin-react": {
"version": "7.35.2", "version": "7.36.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
"integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"array-includes": "^3.1.8", "array-includes": "^3.1.8",
@@ -3196,9 +3363,9 @@
} }
}, },
"node_modules/get-tsconfig": { "node_modules/get-tsconfig": {
"version": "4.8.0", "version": "4.8.1",
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
"integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"resolve-pkg-maps": "^1.0.0" "resolve-pkg-maps": "^1.0.0"
@@ -3668,9 +3835,9 @@
} }
}, },
"node_modules/hugo-bin": { "node_modules/hugo-bin": {
"version": "0.131.1", "version": "0.132.0",
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.131.1.tgz", "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.132.0.tgz",
"integrity": "sha512-bfUFKhQ6felvBNng06vwimNuvV+88yYwU6xTuAoTmtdY0g13Z03pf9rrg3AualxpMOu+dV/Yl/n90EvutKPzIQ==", "integrity": "sha512-P8Bjl2ussOFzDJVppZfjxuyRegklKnlz2ILeFUszwkq9aDab8il0IJgr6pNxI0bbPIbLcoV64FmStyB1vXsynQ==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@@ -3750,6 +3917,19 @@
"node": ">=0.8.19" "node": ">=0.8.19"
} }
}, },
"node_modules/indent-string": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/inflight": { "node_modules/inflight": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -4332,6 +4512,19 @@
"node": ">=4.0" "node": ">=4.0"
} }
}, },
"node_modules/junk": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz",
"integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/keyv": { "node_modules/keyv": {
"version": "4.5.4", "version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -4715,21 +4908,20 @@
"dev": true "dev": true
}, },
"node_modules/neostandard": { "node_modules/neostandard": {
"version": "0.11.4", "version": "0.11.6",
"resolved": "https://registry.npmjs.org/neostandard/-/neostandard-0.11.4.tgz", "resolved": "https://registry.npmjs.org/neostandard/-/neostandard-0.11.6.tgz",
"integrity": "sha512-rBdlVeUdM0NhBc2S7Vr/l98Y/FTYY+YGdOqSgv60HzP3LF7ruX9Mceur4Nc/qkXf7UT1IOjofLS7OSLAObPi2A==", "integrity": "sha512-/7egVVdQj1oyX2RBgjLqAm3akDa6/hZlmb2YC0mwS/rEy6xkOtT/o4P4/XrPLbIshdhda/VfQXOIhEA+O4No1w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
"@stylistic/eslint-plugin": "^2.6.3", "@stylistic/eslint-plugin": "^2.8.0",
"@types/eslint": "^9.6.0", "eslint-plugin-n": "^17.10.3",
"eslint-plugin-n": "^17.10.2",
"eslint-plugin-promise": "^7.1.0", "eslint-plugin-promise": "^7.1.0",
"eslint-plugin-react": "^7.35.0", "eslint-plugin-react": "^7.36.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"globals": "^15.9.0", "globals": "^15.9.0",
"peowly": "^1.3.2", "peowly": "^1.3.2",
"typescript-eslint": "^8.0.0" "typescript-eslint": "^8.6.0"
}, },
"bin": { "bin": {
"neostandard": "cli.mjs" "neostandard": "cli.mjs"
@@ -4753,6 +4945,13 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/nested-error-stacks": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz",
"integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==",
"dev": true,
"license": "MIT"
},
"node_modules/netlify-plugin-hugo-cache-resources": { "node_modules/netlify-plugin-hugo-cache-resources": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/netlify-plugin-hugo-cache-resources/-/netlify-plugin-hugo-cache-resources-0.2.1.tgz", "resolved": "https://registry.npmjs.org/netlify-plugin-hugo-cache-resources/-/netlify-plugin-hugo-cache-resources-0.2.1.tgz",
@@ -5152,6 +5351,54 @@
"node": ">=12.20" "node": ">=12.20"
} }
}, },
"node_modules/p-event": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz",
"integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"p-timeout": "^5.0.2"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-filter": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz",
"integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==",
"dev": true,
"license": "MIT",
"dependencies": {
"p-map": "^5.1.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-filter/node_modules/p-map": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz",
"integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==",
"dev": true,
"license": "MIT",
"dependencies": {
"aggregate-error": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-limit": { "node_modules/p-limit": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -5182,6 +5429,32 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/p-map": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz",
"integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-timeout": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz",
"integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-try": { "node_modules/p-try": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
@@ -6821,6 +7094,19 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
}, },
"node_modules/slash": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/slice-ansi": { "node_modules/slice-ansi": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
@@ -7709,14 +7995,14 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.4.0", "version": "8.7.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.7.0.tgz",
"integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", "integrity": "sha512-nEHbEYJyHwsuf7c3V3RS7Saq+1+la3i0ieR3qP0yjqWSzVmh8Drp47uOl9LjbPANac4S7EFSqvcYIKXUUwIfIQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.4.0", "@typescript-eslint/eslint-plugin": "8.7.0",
"@typescript-eslint/parser": "8.4.0", "@typescript-eslint/parser": "8.7.0",
"@typescript-eslint/utils": "8.4.0" "@typescript-eslint/utils": "8.7.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View File

@@ -1,6 +1,6 @@
{ {
"name": "@gethinode/hinode", "name": "@gethinode/hinode",
"version": "0.27.0-alpha4", "version": "0.27.0-beta3",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator", "description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [ "keywords": [
"hugo", "hugo",
@@ -28,6 +28,8 @@
"build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite", "build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite",
"build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci", "build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci",
"build:debug": "hugo -e debug --debug", "build:debug": "hugo -e debug --debug",
"build:headers": "hugo --renderSegments headers -d prebuild && cpy prebuild/server.toml config/_default/ --flat",
"build:example:headers": "hugo -s exampleSite --renderSegments headers -d prebuild && cpy exampleSite/prebuild/netlify.toml ./ --flat && cpy exampleSite/prebuild/server.toml exampleSite/config/_default/ --flat",
"build:preview": "npm run build -D -F", "build:preview": "npm run build -D -F",
"clean:public": "rimraf public exampleSite/public", "clean:public": "rimraf public exampleSite/public",
"clean:install": "rimraf package-lock.json node_modules", "clean:install": "rimraf package-lock.json node_modules",
@@ -71,14 +73,15 @@
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"cssnano": "^7.0.6", "cssnano": "^7.0.6",
"cssnano-preset-advanced": "^7.0.6", "cssnano-preset-advanced": "^7.0.6",
"hugo-bin": "0.131.1", "hugo-bin": "0.132.0",
"purgecss-whitelister": "^2.4.0" "purgecss-whitelister": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {
"@gethinode/netlify-plugin-dartsass": "^0.3.0", "@gethinode/netlify-plugin-dartsass": "^0.3.0",
"eslint": "^9.9.1", "cpy-cli": "^5.0.0",
"eslint": "^9.11.1",
"markdownlint-cli2": "^0.14.0", "markdownlint-cli2": "^0.14.0",
"neostandard": "^0.11.4", "neostandard": "^0.11.6",
"netlify-plugin-hugo-cache-resources": "^0.2.1", "netlify-plugin-hugo-cache-resources": "^0.2.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss-cli": "^11.0.0", "postcss-cli": "^11.0.0",