mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 10:04:22 +00:00
Compare commits
97 Commits
v0.23.19
...
v0.24.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
af08829f7d | ||
![]() |
28a59a4eac | ||
![]() |
727387931c | ||
![]() |
13a085099c | ||
![]() |
473f390ee6 | ||
![]() |
65cfc0933a | ||
![]() |
321e7f6df5 | ||
![]() |
dda623f040 | ||
![]() |
80d1147d08 | ||
![]() |
b28abcd6f2 | ||
![]() |
93885492d7 | ||
![]() |
ed5daa780d | ||
![]() |
00501edadd | ||
![]() |
fdb1472f9e | ||
![]() |
b176fbd365 | ||
![]() |
f2b0e49aa9 | ||
![]() |
5b8df68db5 | ||
![]() |
fce4b7dde9 | ||
![]() |
ba43672bf6 | ||
![]() |
1b93485064 | ||
![]() |
8d9f12d676 | ||
![]() |
1a89aa39c2 | ||
![]() |
6b60188702 | ||
![]() |
5e410040cc | ||
![]() |
b00f39f850 | ||
![]() |
7e396c5a4d | ||
![]() |
4d43f0bb9b | ||
![]() |
3512bb9dfe | ||
![]() |
7dde897e41 | ||
![]() |
f2cad0fe88 | ||
![]() |
eed2d8f68d | ||
![]() |
d1aebe2fbe | ||
![]() |
013614b149 | ||
![]() |
d55446d5cc | ||
![]() |
80a225e814 | ||
![]() |
c7e63308c5 | ||
![]() |
7bc712b5f3 | ||
![]() |
cf95a84f2a | ||
![]() |
b1e35836f9 | ||
![]() |
a794ab5c52 | ||
![]() |
8fd7d9cde9 | ||
![]() |
93f2f04bae | ||
![]() |
b2a8d78c73 | ||
![]() |
025afc37d4 | ||
![]() |
be5ca21019 | ||
![]() |
69584215b8 | ||
![]() |
e6cef96a03 | ||
![]() |
a6d4a71500 | ||
![]() |
388d8a7e27 | ||
![]() |
9df1b1b981 | ||
![]() |
82d426c14b | ||
![]() |
a2c5073a3d | ||
![]() |
11077b9178 | ||
![]() |
6e8011f111 | ||
![]() |
c6e23b58c5 | ||
![]() |
3267f1165e | ||
![]() |
e46d4764fd | ||
![]() |
2fb4829f68 | ||
![]() |
6009c45e5a | ||
![]() |
69505a1dca | ||
![]() |
c195d903c7 | ||
![]() |
07c1422bbb | ||
![]() |
6be688515d | ||
![]() |
5d83f12b35 | ||
![]() |
008c6a099a | ||
![]() |
125b72177c | ||
![]() |
75054731f4 | ||
![]() |
d36ce74eae | ||
![]() |
2433fa8a66 | ||
![]() |
adbff26d18 | ||
![]() |
bdcdeb9b55 | ||
![]() |
0636708dac | ||
![]() |
eb65b94ef4 | ||
![]() |
01b51f6ef1 | ||
![]() |
89b81cf1b8 | ||
![]() |
54396f4dc0 | ||
![]() |
0660a4c6e9 | ||
![]() |
cba7768e39 | ||
![]() |
a040ab42c3 | ||
![]() |
fa6c01a380 | ||
![]() |
ed6c415bb2 | ||
![]() |
59c71d9bb2 | ||
![]() |
7dde1b3bb7 | ||
![]() |
1d994fa1fe | ||
![]() |
5a9191fea5 | ||
![]() |
790b3ac3d2 | ||
![]() |
f298dd2979 | ||
![]() |
df7a7e2d3d | ||
![]() |
e28ca112de | ||
![]() |
a34dc0f4a0 | ||
![]() |
3eb682b0d9 | ||
![]() |
d824ab39dd | ||
![]() |
5d27d602d2 | ||
![]() |
66f3fd227b | ||
![]() |
e8f38fc73c | ||
![]() |
6f5756f3bf | ||
![]() |
a56b1d6614 |
@@ -69,7 +69,7 @@ Hinode is a [Hugo theme that uses modules][hugo_modules] to install and maintain
|
||||
The installation instructions in this readme install Hinode as a regular Hugo theme. Hinode requires the following software to be installed on your local machine.
|
||||
|
||||
- [Go binary][golang_download]
|
||||
- [Hugo][nodejs] (extended version)
|
||||
- [Hugo][hugo_download] (extended version)
|
||||
|
||||
[Git][git_download] is recommended, but is not a strict requirement.
|
||||
|
||||
|
@@ -1,25 +1,25 @@
|
||||
// scss-docs-start icons
|
||||
$form-check-input-checked-bg-image: url("/icons/form-check-input-checked-bg-image.svg") !default;
|
||||
$form-check-radio-checked-bg-image: url("/icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("/icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("/icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-bg-image-dark: url("/icons/form-switch-bg-image-dark.svg") !default;
|
||||
$form-switch-focus-bg-image: url("/icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("/icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("/icons/form-select-indicator.svg") !default;
|
||||
$form-select-indicator-dark: url("/icons/form-select-indicator-dark.svg") !default;
|
||||
$form-feedback-icon-valid: url("/icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("/icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("/icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("/icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("/icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-icon-dark: url("/icons/accordion-button-icon-dark.svg") !default;
|
||||
$accordion-button-active-icon: url("/icons/accordion-button-active-icon.svg") !default;
|
||||
$accordion-button-active-icon-dark: url("/icons/accordion-button-active-icon-dark.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("/icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("/icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("/icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("/icons/btn-toggle.svg") !default;
|
||||
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
||||
$form-check-input-checked-bg-image: url("#{$base-url}icons/form-check-input-checked-bg-image.svg") !default;
|
||||
$form-check-radio-checked-bg-image: url("#{$base-url}icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("#{$base-url}icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("#{$base-url}icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-bg-image-dark: url("#{$base-url}icons/form-switch-bg-image-dark.svg") !default;
|
||||
$form-switch-focus-bg-image: url("#{$base-url}icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("#{$base-url}icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("#{$base-url}icons/form-select-indicator.svg") !default;
|
||||
$form-select-indicator-dark: url("#{$base-url}icons/form-select-indicator-dark.svg") !default;
|
||||
$form-feedback-icon-valid: url("#{$base-url}icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("#{$base-url}icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("#{$base-url}icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("#{$base-url}icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("#{$base-url}icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-icon-dark: url("#{$base-url}icons/accordion-button-icon-dark.svg") !default;
|
||||
$accordion-button-active-icon: url("#{$base-url}icons/accordion-button-active-icon.svg") !default;
|
||||
$accordion-button-active-icon-dark: url("#{$base-url}icons/accordion-button-active-icon-dark.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("#{$base-url}icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("#{$base-url}icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("#{$base-url}icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("#{$base-url}icons/btn-toggle.svg") !default;
|
||||
$btn-toggle-dark: url("#{$base-url}icons/btn-toggle-dark.svg") !default;
|
||||
|
||||
// scss-docs-end icons
|
||||
|
@@ -5,6 +5,8 @@ $enable-important-utilities: true !default;
|
||||
// Remove the border from the focused navigation toggler
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
$base-url: h.$base-url;
|
||||
|
||||
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$font-size-base: h.$font-size-base !default;
|
||||
$headings-font-weight: 600 !default;
|
||||
|
@@ -5,6 +5,8 @@ $enable-important-utilities: true !default;
|
||||
// Remove the border from the focused navigation toggler
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
$base-url: $base-url;
|
||||
|
||||
// scss-docs-start font
|
||||
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$font-size-base: $font-size-base !default;;
|
||||
|
@@ -68,8 +68,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.card-zoom card-body-link,
|
||||
.card-body-link {
|
||||
.card-zoom .card-body-link {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||
@@ -78,8 +77,7 @@
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.card-zoom card-body-link,
|
||||
.card-body-link {
|
||||
.card-zoom .card-body-link {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $primary-bg-subtle-dark if($enable-important-utilities, !important, null);
|
||||
|
@@ -16,25 +16,15 @@
|
||||
transpiler = "libsass"
|
||||
# toml-docs-end main
|
||||
|
||||
# toml-docs-start modules
|
||||
[modules]
|
||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||
optional = ["leaflet", "katex", "lottie"]
|
||||
excludeSCSS = ["bootstrap"]
|
||||
disableTemplate = ["katex"]
|
||||
[modules.katex]
|
||||
state = "defer"
|
||||
[modules.flexsearch]
|
||||
frontmatter = false
|
||||
filter = ""
|
||||
[modules.fontawesome]
|
||||
inline = true
|
||||
debug = true
|
||||
skipMissing = false
|
||||
[modules.utils]
|
||||
filter = "[^0-9A-Za-zŽžÀ-ÿ ;.,\\/'’\"]-"
|
||||
raw = false
|
||||
# toml-docs-end modules
|
||||
# toml-docs-start images
|
||||
[images]
|
||||
[images.cloudinary]
|
||||
host = "cloudinary"
|
||||
[images.imagekit]
|
||||
host = "imagekit"
|
||||
[images.imgix]
|
||||
host = "imgix"
|
||||
# toml-docs-end images
|
||||
|
||||
# toml-docs-start debugging
|
||||
[debugging]
|
||||
|
@@ -15,7 +15,7 @@ for = '/**'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
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; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
|
48
data/dimensions.yml
Normal file
48
data/dimensions.yml
Normal file
@@ -0,0 +1,48 @@
|
||||
- ratio: 4x3
|
||||
dimensions:
|
||||
- 576x432
|
||||
- 768x576
|
||||
- 992x744
|
||||
- 1200x900
|
||||
- 1400x1050
|
||||
- 2800x2100
|
||||
- ratio: 3x2
|
||||
dimensions:
|
||||
- 576x384
|
||||
- 768x512
|
||||
- 992x661
|
||||
- 1200x800
|
||||
- 1400x933
|
||||
- 2800x1867
|
||||
- ratio: 1x1
|
||||
dimensions:
|
||||
- 576x576
|
||||
- 768x768
|
||||
- 992x992
|
||||
- 1200x1200
|
||||
- 1400x1400
|
||||
- 2800x2800
|
||||
- ratio: 16x9
|
||||
dimensions:
|
||||
- 576x324
|
||||
- 768x432
|
||||
- 992x558
|
||||
- 1200x675
|
||||
- 1400x788
|
||||
- 2800x1575
|
||||
- ratio: 21x9
|
||||
dimensions:
|
||||
- 576x247
|
||||
- 768x329
|
||||
- 992x425
|
||||
- 1200x514
|
||||
- 1400x600
|
||||
- 2800x1200
|
||||
- ratio: auto
|
||||
dimensions:
|
||||
- 576
|
||||
- 768
|
||||
- 992
|
||||
- 1200
|
||||
- 1400
|
||||
- 2800
|
29
data/structures/image-adapter-rewrite.yml
Normal file
29
data/structures/image-adapter-rewrite.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
comment: >-
|
||||
Rewrites an origin URL to a target URL as supported by a CDN image adapter.
|
||||
arguments:
|
||||
account:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Account name of the origin server.
|
||||
container:
|
||||
type: string
|
||||
optional: true
|
||||
comment: Container name of the origin server.
|
||||
host:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Host of an URL. For example, the host of the URL
|
||||
'https://example.com/first/second/third.webp' equals 'example.com'.
|
||||
dir:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
All but the last element of an URL extension. For example, the dir of the
|
||||
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
|
||||
file:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
The last element of an URL extension. For example, the file of the
|
||||
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.
|
62
data/structures/image-adapter.yml
Normal file
62
data/structures/image-adapter.yml
Normal file
@@ -0,0 +1,62 @@
|
||||
comment: >-
|
||||
Defines the interface to be implemented by a CDN image adapter.
|
||||
arguments:
|
||||
host:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
Host of an URL. For example, the host of the URL
|
||||
'https://example.com/first/second/third.webp' equals 'example.com'.
|
||||
dir:
|
||||
type: string
|
||||
optional: true
|
||||
comment: >-
|
||||
All but the last element of an URL extension. For example, the dir of the
|
||||
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
|
||||
file:
|
||||
type: string
|
||||
optional: false
|
||||
comment: >-
|
||||
The last element of an URL extension. For example, the file of the
|
||||
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.
|
||||
absoluteURL:
|
||||
type: string
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Defines if a local image should use absolute instead of relative paths.
|
||||
img:
|
||||
type: "*resources.resourceAdapter"
|
||||
optional: true
|
||||
comment: >-
|
||||
Image resource to process. Must be set when handling local images.
|
||||
format:
|
||||
type: select
|
||||
optional: true
|
||||
comment: >-
|
||||
Image format; leave empty for an auto format (if supported) or default
|
||||
format (usually jpg).
|
||||
options:
|
||||
values:
|
||||
- png
|
||||
- jpg
|
||||
- gif
|
||||
- tiff
|
||||
- bmp
|
||||
- webp
|
||||
transform:
|
||||
type: select
|
||||
optional: false
|
||||
comment: Image transformation.
|
||||
options:
|
||||
values:
|
||||
- fill
|
||||
- fit
|
||||
height:
|
||||
type: int
|
||||
optional: false
|
||||
comment: Height of the image in pixels.
|
||||
width:
|
||||
type: int
|
||||
optional: false
|
||||
comment: Width of the image in pixels.
|
@@ -19,7 +19,9 @@ comment: >-
|
||||
reference.
|
||||
arguments:
|
||||
url:
|
||||
type: string
|
||||
type:
|
||||
- string
|
||||
- template.URL
|
||||
optional: true
|
||||
comment: >-
|
||||
Path or url of the image, e.g. `img/example.jpg`. Images with multiple
|
||||
@@ -128,3 +130,11 @@ arguments:
|
||||
optional: true
|
||||
comment: Class attribute of the figure caption, e.g. `px-4`.
|
||||
release: v0.23.0
|
||||
plain:
|
||||
type: bool
|
||||
default: false
|
||||
optional: true
|
||||
comment:
|
||||
Flag to indicate if the image should render a plain image instead of an
|
||||
image set. When set, no transformations are applied to the image.
|
||||
release: v0.24.0-beta5
|
||||
|
@@ -56,6 +56,12 @@ arguments:
|
||||
Flag to indicate if the retrieved title (e.g. no inner text is provided)
|
||||
of an internal link should use its original case. If false, the title is
|
||||
set to lower case.
|
||||
external:
|
||||
type: bool
|
||||
optional: true
|
||||
default: false
|
||||
comment: >-
|
||||
Flag to indicate if a link that contains baseURL host should be forced as external.
|
||||
class:
|
||||
type: string
|
||||
optional: true
|
||||
|
@@ -13,21 +13,6 @@
|
||||
[main.build]
|
||||
transpiler = "dartsass"
|
||||
|
||||
[modules]
|
||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||
optional = ["leaflet", "katex", "lottie"]
|
||||
excludeSCSS = ["bootstrap"]
|
||||
disableTemplate = ["katex"]
|
||||
[modules.katex]
|
||||
state = "defer"
|
||||
[modules.flexsearch]
|
||||
frontmatter = false
|
||||
filter = ""
|
||||
[modules.fontawesome]
|
||||
inline = true
|
||||
debug = true
|
||||
skipMissing = false
|
||||
|
||||
[debugging]
|
||||
showJS = false
|
||||
showSCSS = false
|
||||
@@ -70,6 +55,14 @@
|
||||
[messages]
|
||||
placement = "bottom-right"
|
||||
|
||||
[dam]
|
||||
dimensions = "dimensions.yml"
|
||||
|
||||
[[dam.providers]]
|
||||
name = "Cloudinary"
|
||||
pattern = "cloudinary"
|
||||
adapter = "assets/adapters/cloudinary.html"
|
||||
|
||||
[sharing]
|
||||
enabled = true
|
||||
sort = "weight"
|
||||
|
@@ -15,7 +15,7 @@ for = '/**'
|
||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
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; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
|
@@ -291,6 +291,7 @@ As an example, the following shortcodes render links in different formats.
|
||||
- {{</* link name=hinode cue=true tab=true >}}Named link opening in new tab with icon{{< /link */>}}
|
||||
- {{</* link hinode /*/>}}
|
||||
- {{</* link href="https://developer.mozilla.org" >}}External link{{< /link */>}}
|
||||
- {{</* link href="https://demo.gethinode.com/en/about/" >}}Surrogate external link{{< /link */>}}
|
||||
- {{</* link "./projects/another-project" >}}Internal link with title{{< /link */>}}
|
||||
- {{</* link url="projects/another-project" /*/>}}
|
||||
- {{</* link url="/projects/another-project" /*/>}}
|
||||
|
42
exampleSite/content/en/blog/image.md
Normal file
42
exampleSite/content/en/blog/image.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Local and remote images
|
||||
date: 2024-05-19
|
||||
description: Include responsive images from local sources and selected CDN image providers.
|
||||
tags: ["blog"]
|
||||
thumbnail:
|
||||
url: https://assets.imgix.net/examples/bluehat.jpg
|
||||
---
|
||||
|
||||
## Cloudinary
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://res.cloudinary.com/demo/image/upload/dog.webp"
|
||||
ratio="21x9" caption="Cloudinary image" class="rounded" plain=true */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## ImageKit.io
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://ik.imagekit.io/demo/default-image.jpg"
|
||||
ratio="21x9" caption="ImageKit.io image" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Imgix
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="https://assets.imgix.net/examples/bluehat.jpg"
|
||||
ratio="21x9" caption="imgix image" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -492,6 +492,7 @@
|
||||
"carrousel",
|
||||
"carte",
|
||||
"chronologie",
|
||||
"cloudinary",
|
||||
"collapse",
|
||||
"collapse-1",
|
||||
"command-prompt",
|
||||
@@ -510,6 +511,8 @@
|
||||
"groupe-de-cartes",
|
||||
"icon",
|
||||
"image",
|
||||
"imagekitio",
|
||||
"imgix",
|
||||
"indicateur-de-chargement",
|
||||
"infobulle",
|
||||
"invite-de-commandes",
|
||||
|
14
go.mod
14
go.mod
@@ -4,13 +4,13 @@ go 1.19
|
||||
|
||||
require (
|
||||
github.com/airbnb/lottie-web v5.12.2+incompatible // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.2.8 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.11.3 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.8.2 // indirect
|
||||
github.com/gethinode/mod-katex v1.0.9 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.0.1 // indirect
|
||||
github.com/gethinode/mod-lottie v1.4.6 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.2.2 // indirect
|
||||
github.com/gethinode/mod-bootstrap v1.3.0 // indirect
|
||||
github.com/gethinode/mod-flexsearch v1.12.0 // indirect
|
||||
github.com/gethinode/mod-fontawesome v1.9.0 // indirect
|
||||
github.com/gethinode/mod-katex v1.1.0 // indirect
|
||||
github.com/gethinode/mod-leaflet v1.1.0 // indirect
|
||||
github.com/gethinode/mod-lottie v1.5.3 // indirect
|
||||
github.com/gethinode/mod-utils/v2 v2.3.6 // indirect
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240110101704-4c3966709f85 // indirect
|
||||
github.com/twbs/bootstrap v5.3.3+incompatible // indirect
|
||||
)
|
||||
|
34
go.sum
34
go.sum
@@ -20,6 +20,8 @@ github.com/gethinode/mod-bootstrap v1.2.6 h1:joKKVqWzPgitPbUFlU4oIRj72YXsEHkVun3
|
||||
github.com/gethinode/mod-bootstrap v1.2.6/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
github.com/gethinode/mod-bootstrap v1.2.8 h1:kIKSO6qqE8xA0KQC5s6kkEv5UDc8oT17HalGIwB+dSc=
|
||||
github.com/gethinode/mod-bootstrap v1.2.8/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
github.com/gethinode/mod-bootstrap v1.3.0 h1:UxNmXgXo7gA8C8z1ar47+tSccmKYpaYBBN+txB0pwBk=
|
||||
github.com/gethinode/mod-bootstrap v1.3.0/go.mod h1:CL9IDot6nbXIWJYE/KxfsTdYYEJIGL17BXbAYPn+wVQ=
|
||||
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.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=
|
||||
@@ -64,6 +66,8 @@ github.com/gethinode/mod-flexsearch v1.11.1 h1:TtaE6Dv0lH4x73SHDaZpQJLjk52lRu/Vo
|
||||
github.com/gethinode/mod-flexsearch v1.11.1/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-flexsearch v1.11.3 h1:ykxpUg8M4vr1C4QzxJOPGt+1ZmPAD/gOCZoFcZxWoWw=
|
||||
github.com/gethinode/mod-flexsearch v1.11.3/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-flexsearch v1.12.0 h1:zg1IHvc8VO9WEtQuQnuG6HeWFNByvyqC9JYWDtpsP6s=
|
||||
github.com/gethinode/mod-flexsearch v1.12.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2 h1:ZSK6D20/w4y5GnfYfTBB58uHD0ChIfkpKfRGwioS9rg=
|
||||
github.com/gethinode/mod-fontawesome v1.0.2/go.mod h1:Ki1qkWEOiF0hQpCgWeZRw+HkpL6nd1DxKFptU0O2feI=
|
||||
github.com/gethinode/mod-fontawesome v1.1.0 h1:rsDzUI+3ZlS/do2ff3ne8/z3KwHeysmuA+WsXlumXXk=
|
||||
@@ -102,6 +106,8 @@ github.com/gethinode/mod-fontawesome v1.8.1 h1:iyvULrpaGizQoI5Vl9WjFYcMGWefdyG90
|
||||
github.com/gethinode/mod-fontawesome v1.8.1/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-fontawesome v1.8.2 h1:LAzLytyh9c9gLzBWMju6Gtp3uEojhBQEYw0o38EUKZY=
|
||||
github.com/gethinode/mod-fontawesome v1.8.2/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
github.com/gethinode/mod-fontawesome v1.9.0 h1:xqUB8AnezMHAt8lye4ksqvmHSVPCOkiHsHGUbqNoeP0=
|
||||
github.com/gethinode/mod-fontawesome v1.9.0/go.mod h1:xBKsZH3WJtMOItZVlp9SbO51uaBy6IbvUZSKpNu3b6Y=
|
||||
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.1 h1:809QUztxmKgMNchU+v03iMO7Ma+ISc3ZzhXYauc21rs=
|
||||
@@ -120,6 +126,8 @@ github.com/gethinode/mod-katex v1.0.8 h1:tFGFz/JIEogCz4wvUsUncrOsOupPxsjP+TwU/3N
|
||||
github.com/gethinode/mod-katex v1.0.8/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.0.9 h1:cCJoR28tZwkDvXps17o9Jwfe3aQQAZ3Rxk0jCNRQdbU=
|
||||
github.com/gethinode/mod-katex v1.0.9/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-katex v1.1.0 h1:PxST3HPUt6F2X/xKakTVeTkwWqCtEr53K1vYEOyQu3I=
|
||||
github.com/gethinode/mod-katex v1.1.0/go.mod h1:byAfpI3wuqNJIooTGVEGc1cjBhhCy4+CcK1H6495MYg=
|
||||
github.com/gethinode/mod-leaflet v0.2.3 h1:QQI4h+IH0jZ7fx4q0um2YIEiYBoW3OAfW8qHzbRCDPk=
|
||||
github.com/gethinode/mod-leaflet v0.2.3/go.mod h1:uGggt87x4Fw7wBoJpSiUvNkYg+s/Ujne7klAX2rxMRk=
|
||||
github.com/gethinode/mod-leaflet v0.3.1 h1:H5MaOa+BB1KuVw7abTqfIn/SNzzRsAyx/WQoSe+2Ykc=
|
||||
@@ -136,6 +144,8 @@ github.com/gethinode/mod-leaflet v1.0.0 h1:HdnWafOGkkK1hYGfqLYF3pp9dAFS/caxlzML9
|
||||
github.com/gethinode/mod-leaflet v1.0.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-leaflet v1.0.1 h1:L4Coe6HTD9O0Txs1S8AtVg+6/TEneSF9i6fJK8jdWUw=
|
||||
github.com/gethinode/mod-leaflet v1.0.1/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
github.com/gethinode/mod-leaflet v1.1.0 h1:FXzPCic5XmUluxQ6e7LYUhhLnxuQOBwry8qjG9k30UY=
|
||||
github.com/gethinode/mod-leaflet v1.1.0/go.mod h1:Ei0x9WiL7Dbi4JeG6yI1CE63bT1QJ8sKi67Jea1wFSE=
|
||||
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.1 h1:+IE7xtnSVQpJS56oBJq9RWKZeFEfxrOZAqE3BSrS/u0=
|
||||
@@ -160,6 +170,16 @@ github.com/gethinode/mod-lottie v1.4.4 h1:Lv7J+lAMx++aK9h0L7vAgsjyOZgrjux4xPz4Tp
|
||||
github.com/gethinode/mod-lottie v1.4.4/go.mod h1:7tsZjlFgMlj2iWBIS9uOtHHsCrfx9W7S8OsBrZeSVGU=
|
||||
github.com/gethinode/mod-lottie v1.4.6 h1:L6zvfbq+FQUWTG3X/wWFCvb91WOxJuIkJUlZOd+QJ1Q=
|
||||
github.com/gethinode/mod-lottie v1.4.6/go.mod h1:1/+7U/Q5IuaqkzTrvXK1CnPE7ANnTRsG5k+KaXQUQwE=
|
||||
github.com/gethinode/mod-lottie v1.4.7 h1:5Hes0xY/l8ygzJ8YQIzdqCmvGrDQs8D8qZ/vR1fQh/Q=
|
||||
github.com/gethinode/mod-lottie v1.4.7/go.mod h1:FvcG3NjXOBOnwou0QvXYNPHpybxwT6yxmSh4N+nBD9s=
|
||||
github.com/gethinode/mod-lottie v1.5.0 h1:LwEEY+p+sPrN01yz7GyVOsF5lZ4qMln69+gAxJs1DDA=
|
||||
github.com/gethinode/mod-lottie v1.5.0/go.mod h1:FvcG3NjXOBOnwou0QvXYNPHpybxwT6yxmSh4N+nBD9s=
|
||||
github.com/gethinode/mod-lottie v1.5.1 h1:84ZmOTKJH75wsd/YjPaaBRkTeLnmRROv9iFlQVMC+jA=
|
||||
github.com/gethinode/mod-lottie v1.5.1/go.mod h1:z0Q6EADM7pN7gmhCzDx2VR4uG5mxn9qbsphtxjIkssY=
|
||||
github.com/gethinode/mod-lottie v1.5.2 h1:UvrNAQeD/97Q5fbv3uKIY48fY3IWJeLy/v206Gb0F6Y=
|
||||
github.com/gethinode/mod-lottie v1.5.2/go.mod h1:HM1pA85EiPO7RtNysw/a2ZzRqktO2WvB/KyWLOuynzg=
|
||||
github.com/gethinode/mod-lottie v1.5.3 h1:fvCjCoZoCEhY2aou30oEsEo6N4tVSI0ijFyXS3wNib0=
|
||||
github.com/gethinode/mod-lottie v1.5.3/go.mod h1:XHVMuPsuJIm9/Eb2ql4jsT49/BQqMlBiirQoty4uHAo=
|
||||
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.1 h1:jhZGlGFHHL1f5HXbBMXfiZ2gCz4TVafAzjnRPTIBSEE=
|
||||
@@ -184,6 +204,20 @@ github.com/gethinode/mod-utils/v2 v2.1.1 h1:aLBcS9Zbx+dqnu5oBsTM01AkkN5nwwifgbV4
|
||||
github.com/gethinode/mod-utils/v2 v2.1.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.2.2 h1:ZRxWIJKmZIDYsoMS3WhxxC+BWJrkd1dcZ8rz/cLZExc=
|
||||
github.com/gethinode/mod-utils/v2 v2.2.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.0 h1:e3uhlAGasvXe+cgvcmzRe05Zo4UEx86uk0TbnxtyB6U=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.0/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.1 h1:blqynoRJ+H2SPfSU28iYheYWPH39MKNtK5HKJPghL3M=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.1/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.2 h1:QxYtHqeiLfAg+38ULFr3qYwNuypcnV1KzsmmNUjbX+U=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.2/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.3 h1:dewgQgAyPJJ1lA2WhowHaFqVaeLjUNYgxDO4mE3v0F0=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.3/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.4 h1:4OmUsLW7FyQL7vJhg/Iy9E7nFXWL955qCtsj6yWU51M=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.4/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.5 h1:r8V330xQkHTjzAFNCde1Kpz6fgidzmMRW82eIonUnOo=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.5/go.mod h1:GTYeknoLujNjfDxI+V9Dcug26CYJSTJ0B/U2dagw9oY=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.6 h1:Ta+WKc83sK9ZROKmUwS4pA32Qm0bQqoMmWHEOzDvZ5Y=
|
||||
github.com/gethinode/mod-utils/v2 v2.3.6/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/go.mod h1:5GdMfPAXzbA2gXBqTjC6l27kioSYzHlqDMh0+wyx7sU=
|
||||
github.com/nextapps-de/flexsearch v0.0.0-20240108021025-afd75f742f22 h1:re7L8FxbXQpnX8BgzkdUnDpsUmloGNyLmiy2ZCln8pg=
|
||||
|
@@ -1,4 +1,5 @@
|
||||
{{ define "main" }}
|
||||
{{ $base := partial "utilities/GetStaticURL" (dict "url" "/") }}
|
||||
<div class="d-flex flex-fill">
|
||||
<div class="container-xxl my-auto">
|
||||
<div class="text-center">
|
||||
@@ -7,7 +8,7 @@
|
||||
<p class="display-1 mt-3 fw-bold">404</p>
|
||||
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
||||
</span>
|
||||
{{- $home := printf "<a href=\"%s\">%s</a>" ("/" | relLangURL) (T "pageNotFoundHome") -}}
|
||||
{{- $home := printf "<a href=\"%s\">%s</a>" $base (T "pageNotFoundHome") -}}
|
||||
<p>{{ T "pageNotFound" $home | safeHTML }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -13,10 +13,9 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Validate module configuration */ -}}
|
||||
{{- if and .IsPage (not (in .Site.Params.modules.core "bootstrap")) -}}
|
||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||
{{- end -}}
|
||||
{{- /* Initialize module configuration */ -}}
|
||||
{{- $modules := partial "utilities/InitModules.html" (dict "page" .) -}}
|
||||
{{- $.Scratch.Set "modules" $modules -}}
|
||||
|
||||
{{- $fullCover := or (or (and .IsHome .Site.Params.home.fullCover) .Page.Params.fullCover) .Site.Params.main.footerBelowFold }}
|
||||
{{- $.Scratch.Set "fullCover" $fullCover -}}
|
||||
@@ -30,6 +29,10 @@
|
||||
{{- /* Define main breakpoint */ -}}
|
||||
{{- $.Scratch.Set "breakpoint" (partial "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>
|
||||
|
@@ -32,7 +32,7 @@
|
||||
<div class="d-none-dark">
|
||||
<div class="hstack gap-1">
|
||||
{{ range (.GetTerms "tags") -}}
|
||||
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||
{{- $url := .Page.RelPermalink -}}
|
||||
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
@@ -41,7 +41,7 @@
|
||||
<div class="d-none-light">
|
||||
<div class="hstack gap-1">
|
||||
{{ range (.GetTerms "tags") -}}
|
||||
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||
{{- $url := .Page.RelPermalink -}}
|
||||
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "primary" "size" "sm" "outline" "true") }}
|
||||
{{ end -}}
|
||||
</div>
|
||||
|
@@ -1,11 +1,12 @@
|
||||
{{ $lang := site.LanguageCode | default site.Language.Lang }}
|
||||
<!DOCTYPE html>
|
||||
<html{{ with site.LanguageCode | default site.Language.Lang }} lang="{{ . }}"{{ end }}>
|
||||
<html {{ with $lang }}lang="{{ . }}"{{ end }}>
|
||||
<head>
|
||||
<title>{{ .Permalink }}</title>
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
|
||||
<script src="/js/alias.js"></script>
|
||||
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
|
||||
</head>
|
||||
</html>
|
43
layouts/partials/assets/adapters/cloudinary.html
Normal file
43
layouts/partials/assets/adapters/cloudinary.html
Normal file
@@ -0,0 +1,43 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/cloudinary.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $host := .host }}
|
||||
{{ $dir := .dir }}
|
||||
{{ $file := .file }}
|
||||
{{ $format := .format }}
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "c_fill" }}{{ else }}{{ $transform = "c_fit" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
<!-- Split path between upload dir and sub dir -->
|
||||
{{ $newdir := urls.JoinPath (index (split $dir "upload") 0) "upload" }}
|
||||
{{ $file = urls.JoinPath (index (split $dir "upload") 1) $file }}
|
||||
{{ $dir = $newdir }}
|
||||
|
||||
<!-- Generate image URL -->
|
||||
{{ if not $error }}
|
||||
{{ $operation := "" }}
|
||||
{{ if $format }}
|
||||
{{ $operation = printf "%s,h_%d,w_%d" $transform $height $width }}
|
||||
{{ $file = printf "%s.%s" (strings.TrimSuffix (path.Ext $file) $file) $format }}
|
||||
{{ else }}
|
||||
{{ $operation = printf "f_auto,%s,h_%d,w_%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
63
layouts/partials/assets/adapters/hugo.html
Normal file
63
layouts/partials/assets/adapters/hugo.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/hugo.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $host := .host }}
|
||||
{{ $dir := .dir }}
|
||||
{{ $file := .file }}
|
||||
{{ $img := .img }}
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ $element := "" }}
|
||||
{{ $absoluteURL := .absoluteURL }}
|
||||
{{ $url := urls.JoinPath $dir $file }}
|
||||
{{ if $host }}
|
||||
{{ $url = urls.JoinPath "https://" $host $url }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize image if needed, do not raise additional warnings -->
|
||||
{{ $format := .format | default "webp" }}
|
||||
{{ if and (not $img) (ne $format "svg") }}
|
||||
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" page) -}}
|
||||
{{ if $res }}
|
||||
{{ $img = $res.resource }}
|
||||
<!-- TODO: $res.mirror -->
|
||||
{{ end }}
|
||||
|
||||
{{ if not $img }}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
<!-- Process image and generate image URL -->
|
||||
{{ if not $error }}
|
||||
{{ $scaled := "" }}
|
||||
{{ if eq $transform "fill" }}
|
||||
{{- $scaled = $img.Fill (printf "%dx%d %s" $width $height $format) -}}
|
||||
{{ else }}
|
||||
{{- $scaled = $img.Fit (printf "%dx%d %s" $width $height $format) -}}
|
||||
{{ end }}
|
||||
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%dx%d.%s" $width $height $format)) -}}
|
||||
{{- if $absoluteURL -}}
|
||||
{{- $element = $scaled.Permalink -}}
|
||||
{{- else -}}
|
||||
{{- $element = $scaled.RelPermalink -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
30
layouts/partials/assets/adapters/imagekit-rewrite.html
Normal file
30
layouts/partials/assets/adapters/imagekit-rewrite.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter-rewrite" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/imagekit-rewrite.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $account := .account }}
|
||||
{{ $container := trim .container "/" }}
|
||||
{{ $host := .host }}
|
||||
{{ $dir := .dir }}
|
||||
{{ $file := .file }}
|
||||
{{ $element := "" }}
|
||||
{{ with $container }}{{ $dir = strings.TrimPrefix (printf "/%s" .) $dir }}{{ end }}
|
||||
|
||||
{{ if ne $host "ik.imagekit.io" }}
|
||||
{{ $element = urls.JoinPath (slice "https://ik.imagekit.io" $account $dir $file) }}
|
||||
{{ else }}
|
||||
{{ $element = urls.JoinPath (slice "https://" $host $dir $file) }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
48
layouts/partials/assets/adapters/imagekit.html
Normal file
48
layouts/partials/assets/adapters/imagekit.html
Normal file
@@ -0,0 +1,48 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/imagekit.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $host := .host }}
|
||||
{{ $dir := .dir }}
|
||||
{{ $file := .file }}
|
||||
{{ $format := .format }}
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "c-maintain_ratio" }}{{ else }}{{ $transform = "c-at_max" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
<!-- Validate image format is supported -->
|
||||
{{ if and $format (not (in (slice "jpg" "jpeg" "webp" "avif" "png") $format)) }}
|
||||
{{ warnf "Image format not supported by ImageKit.io: %s.%s" (path.BaseName $file) $format }}
|
||||
{{ $format = "jpg" }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Split path between end point and image path -->
|
||||
{{ $newdir := printf "/%s" (index (split $dir "/") 1) }}
|
||||
{{ $file = urls.JoinPath (strings.TrimPrefix $newdir $dir) $file }}
|
||||
{{ $dir = $newdir }}
|
||||
|
||||
<!-- Generate image URL -->
|
||||
{{ if not $error }}
|
||||
{{ $operation := "" }}
|
||||
{{ if $format }}
|
||||
{{ $operation = printf "tr:f-%s,%s,h-%d,w-%d" $format $transform $height $width }}
|
||||
{{ else }}
|
||||
{{ $operation = printf "tr:f-auto,%s,h-%d,w-%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{- $element = urls.JoinPath (slice "https://" $host $dir $operation $file) -}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
43
layouts/partials/assets/adapters/imgix.html
Normal file
43
layouts/partials/assets/adapters/imgix.html
Normal file
@@ -0,0 +1,43 @@
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
{{ $error := false }}
|
||||
|
||||
<!-- Validate arguments -->
|
||||
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "image-adapter" "args" . "group" "partial") }}
|
||||
{{ errorf "partial [assets/adapter/imgix.html] - Invalid arguments" -}}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $host := .host }}
|
||||
{{ $dir := .dir }}
|
||||
{{ $file := .file }}
|
||||
{{ $format := .format }}
|
||||
{{ $transform := .transform }}
|
||||
{{ $height := .height }}
|
||||
{{ $width := .width }}
|
||||
{{ if eq $transform "fill" }}{{ $transform = "crop" }}{{ else }}{{ $transform = "max" }}{{ end }}
|
||||
{{ $element := "" }}
|
||||
|
||||
<!-- Validate image format is supported -->
|
||||
{{ if and $format (not (in (slice "avif" "gif" "jp2" "jpg" "json" "jxr" "pjpg" "mp4" "png" "png8" "png32" "webm" "webp" "blurhash") $format)) }}
|
||||
{{ warnf "Image format not supported by imgix: %s.%s" (path.BaseName $file) $format }}
|
||||
{{ $format = "jpg" }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Generate image URL -->
|
||||
{{ if not $error }}
|
||||
{{ $operation := "" }}
|
||||
{{ if $format }}
|
||||
{{ $operation = printf "fm=%s&fit=%s&h=%d&w=%d" $format $transform $height $width }}
|
||||
{{ else }}
|
||||
{{ $operation = printf "f_auto&fit=%s&h=%d&w=%d" $transform $height $width }}
|
||||
{{ end }}
|
||||
{{- $element = printf "%s?%s" (urls.JoinPath (slice "https://" $host $dir $file)) $operation -}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $element }}
|
@@ -22,7 +22,7 @@
|
||||
{{- range $index, $item := $page.Ancestors.Reverse -}}
|
||||
{{- $title := .LinkTitle -}}
|
||||
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||
{{- $address := or .RelPermalink (.Params.Redirect | relLangURL) -}}
|
||||
{{- $address := or .RelPermalink .Params.Redirect -}}
|
||||
{{ if $address }}
|
||||
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
|
||||
{{ else }}
|
||||
|
@@ -119,7 +119,7 @@
|
||||
|
||||
{{- range $index, $tag := first $maxTags ($page.GetTerms "tags") -}}
|
||||
{{- if gt $index 0 }} • {{ end -}}
|
||||
<a href="{{ (path.Join $tag.Page.RelPermalink) | relLangURL }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a>
|
||||
<a href="{{ $tag.Page.RelPermalink }}" class="{{ $link }} tag-link" aria-label="tag: {{ $tag.LinkTitle }}">{{ $tag.LinkTitle }}</a>
|
||||
{{- end -}}
|
||||
</small></p>
|
||||
{{- end -}}
|
||||
|
25
layouts/partials/assets/helpers/GetDimension.html
Normal file
25
layouts/partials/assets/helpers/GetDimension.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!--
|
||||
Copyright © 2024 The Hinode Team / Mark Dumay. All rights reserved.
|
||||
-->
|
||||
|
||||
{{ $ratio := .ratio }}
|
||||
{{ $dim := "" }}
|
||||
{{ $default := dict "4x3" "1400x1050" "3x2" "1400x933" "1x1" "1400x1400" "16x9" "1400x788" "21x9" "1400x600" "auto" "1400" }}
|
||||
|
||||
<!-- Initialize dimensions data - stripping unsupported file extension -->
|
||||
{{ $config := "dimensions" }}
|
||||
{{ with index site.Params "dam" }}{{ with index . "dimensions" }}{{ $config = . }}{{ end }}{{ end }}
|
||||
{{ $config = path.Join (path.Dir $config) (path.BaseName $config) }}
|
||||
|
||||
{{ with index site.Data $config }}
|
||||
{{ $matches := first 1 (where . "ratio" $ratio) }}
|
||||
{{ if eq ($matches | len) 1 }}
|
||||
{{ $dim = (index $matches 0).dimensions }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not $dim }}
|
||||
{{ $dim = slice (index $default $ratio) }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $dim }}
|
23
layouts/partials/assets/helpers/SetPortrait.html
Normal file
23
layouts/partials/assets/helpers/SetPortrait.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{- $dim := .dim -}}
|
||||
|
||||
{{- $dimensions := slice }}
|
||||
{{- $dimensions = $dimensions | append $dim -}}
|
||||
{{- $portraits := slice }}
|
||||
{{- range $d := $dimensions -}}
|
||||
{{- $p := split $d "x" }}
|
||||
{{ if ne (len $p) 2 }}
|
||||
{{- warnf "partial [assets/image.html] - Invalid dimension: %s" $d -}}
|
||||
{{- $portraits = $portraits | append $d -}}
|
||||
{{- else -}}
|
||||
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $ret := "" }}
|
||||
{{- if reflect.IsSlice $dim -}}
|
||||
{{ $ret = $portraits -}}
|
||||
{{- else if gt (len $portraits) 0 -}}
|
||||
{{- $ret = index $portraits 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $ret -}}
|
140
layouts/partials/assets/helpers/image-definition.html
Normal file
140
layouts/partials/assets/helpers/image-definition.html
Normal file
@@ -0,0 +1,140 @@
|
||||
<!-- Initialize arguments -->
|
||||
{{- $page := .page -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $wrapper := .wrapper -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $figclass := .figclass -}}
|
||||
{{- $lazy := .lazy -}}
|
||||
{{- $priority := .priority -}}
|
||||
{{- $sizes := .sizes -}}
|
||||
{{- $absoluteURL := .absoluteURL -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := .modes -}}
|
||||
{{- $plain := .plain | default false }}
|
||||
|
||||
{{- $fallbackURL := "" -}}
|
||||
{{- $anchor := "" -}}
|
||||
{{- $imgset := "" -}}
|
||||
{{- $isVector := false -}}
|
||||
|
||||
<!-- Split url into base and anchor when applicable (only relevant for vector images) -->
|
||||
{{- $segments := split $url "#" -}}
|
||||
{{- if gt (len $segments) 2 -}}
|
||||
{{- errorf "Invalid path or url: %q" $url -}}
|
||||
{{- else if eq (len $segments) 2 }}
|
||||
{{- $url = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Identify image provider -->
|
||||
{{ $hook := "" }}
|
||||
{{ $account := "" }}
|
||||
{{ $container := "" }}
|
||||
{{ $rewrite := false }}
|
||||
{{ range $provider, $val := site.Params.images }}
|
||||
{{ if not $hook }}
|
||||
{{ with index $val "host" }}
|
||||
{{ if (findRE . (urls.Parse $url).Hostname) }}
|
||||
{{ $hook = $provider }}
|
||||
{{ with index $val "account" }}{{ $account = . }}{{ end }}
|
||||
{{ with index $val "rewrite" }}{{ $rewrite = . }}{{ end }}
|
||||
{{ with index $val "container" }}{{ $container = . }}{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if not $hook }}{{ $hook = "hugo" }}{{ end }}
|
||||
|
||||
<!-- Rewrite the origin URL if applicable -->
|
||||
{{ if $rewrite }}
|
||||
{{ $url = partial "assets/helpers/image-rewrite.html" (dict "url" $url "account" $account "container" $container "hook" $hook) }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Define image dimensions -->
|
||||
{{ $dims := slice }}
|
||||
{{- $res := "" -}}
|
||||
{{- $img := "" -}}
|
||||
{{ $transform := "" }}
|
||||
{{- if hasSuffix $url "svg" -}}
|
||||
{{- $res = partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||
{{ if not $res }}
|
||||
{{- if not (fileExists (path.Join "/static" $url)) -}}
|
||||
{{ warnf "Cannot find vector image resource: %q" $url -}}
|
||||
{{ else }}
|
||||
{{ $width := string (partial "utilities/GetWidth.html" (dict "path" $url "height" 500)) }}
|
||||
{{ $dims = $dims | append (printf "%sx500" $width) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else if $ratio }}
|
||||
{{ $transform = "fill" }}
|
||||
{{ $dims = partial "assets/helpers/GetDimension.html" (dict "ratio" $ratio) }}
|
||||
{{ if not $dims }}{{ errorf "partial [assets/image.html] - Cannot find dimension data: %s" $ratio }}{{ end }}
|
||||
{{ else if not $plain }}
|
||||
{{ $transform = "fit" }}
|
||||
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
||||
{{ if and $res $res.resource }}
|
||||
{{ $img = $res.resource }}
|
||||
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
|
||||
|
||||
{{ $widths := partial "assets/helpers/GetDimension.html" (dict "ratio" "auto") }}
|
||||
{{ range $width := $widths -}}
|
||||
{{- $dims = $dims | append (printf "%dx%d" (int $width) (int (math.Round (mul (div (float $width) $img.Width) $img.Height)))) -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Derive image width and height -->
|
||||
{{ $width := "" }}
|
||||
{{ $height := "" }}
|
||||
{{ if not $plain }}
|
||||
{{ with $dims }}
|
||||
{{ range $dim := (. | last 1) }}
|
||||
{{ $width = (int (index (split $dim "x") 0)) }}
|
||||
{{ $height = (int (index (split $dim "x") 1)) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Generate image urls -->
|
||||
{{ if or (hasSuffix $url "svg") $plain }}
|
||||
{{- $fallbackURL = partial "utilities/GetStaticURL" (dict "url" $url) -}}
|
||||
{{ else }}
|
||||
{{- $fallbackURL = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" ($dims | last 1) "transform" $transform "hook" $hook "format" "jpg" "includeWidth" false) -}}
|
||||
{{- $imgset = partial "assets/helpers/image-set.html" (dict "url" $url "img" $img "dims" $dims "transform" $transform "hook" $hook) -}}
|
||||
{{ end }}
|
||||
|
||||
<!-- Add color modes -->
|
||||
{{- range $none := $modes -}}
|
||||
{{- if ne $none $mode -}}
|
||||
{{- $wrapper = printf "%s d-none-%s" (or $wrapper "") $none -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Generate image definition -->
|
||||
{{- if $caption -}}
|
||||
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
|
||||
{{ end }}
|
||||
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
|
||||
{{- if not $anchor -}}
|
||||
<img class="img-fluid {{ $class }}"
|
||||
src="{{ $fallbackURL }}"
|
||||
{{ if $lazy }}loading="lazy"{{ end }}
|
||||
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
|
||||
{{ with $imgset -}}srcset="{{ . }}" sizes="{{ $sizes }}"{{- end }}
|
||||
{{ with $height }}height="{{ . }}"{{ end }}
|
||||
{{ with $width }}width="{{ . }}"{{ end }}
|
||||
{{ with (or $title $caption) }}alt="{{ . }}"{{ end }}>
|
||||
{{- else }}
|
||||
<svg class="{{ $class }}">
|
||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- if $caption -}}
|
||||
<figcaption class="figure-caption{{ with $figclass }} {{ . }}{{ end }}">{{ $caption | safeHTML }}</figcaption>
|
||||
</figure>
|
||||
{{- end -}}
|
29
layouts/partials/assets/helpers/image-rewrite.html
Normal file
29
layouts/partials/assets/helpers/image-rewrite.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{{- $url := .url -}}
|
||||
{{- $account := .account -}}
|
||||
{{- $container := .container -}}
|
||||
{{ $hook := .hook }}
|
||||
|
||||
{{ $host := (urls.Parse $url).Hostname }}
|
||||
{{ $dir := (urls.Parse $url).Path }}
|
||||
{{ $file := index ((split $dir "/") | collections.Reverse) 0 }}
|
||||
{{ $dir = strings.TrimSuffix $file $dir }}
|
||||
{{ $error := false }}
|
||||
|
||||
{{ $adapter := (printf "assets/adapters/%s-rewrite.html" $hook) }}
|
||||
{{ if not (fileExists (path.Join "/layouts/partials" $adapter)) }}
|
||||
{{ warnf "Cannot find adapter: %s" (path.Join "/layouts/partials" $adapter) }}
|
||||
{{ $error = true }}
|
||||
{{ end }}
|
||||
|
||||
{{ $result := $url }}
|
||||
{{ if not $error }}
|
||||
{{ $result = partial $adapter (dict
|
||||
"account" $account
|
||||
"container" $container
|
||||
"host" $host
|
||||
"dir" $dir
|
||||
"file" $file
|
||||
)}}
|
||||
{{ end }}
|
||||
|
||||
{{ return $result }}
|
46
layouts/partials/assets/helpers/image-set.html
Normal file
46
layouts/partials/assets/helpers/image-set.html
Normal file
@@ -0,0 +1,46 @@
|
||||
{{- $url := .url -}}
|
||||
{{ $img := .img }}
|
||||
{{ $absoluteURL := .absoluteURL }}
|
||||
{{ $dims := .dims }}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{ $hook := .hook }}
|
||||
{{ $transform := .transform }}
|
||||
{{ $format := .format }}
|
||||
{{ $includeWidth := .includeWidth | default true }}
|
||||
|
||||
{{ $host := (urls.Parse $url).Hostname }}
|
||||
{{ $dir := (urls.Parse $url).Path }}
|
||||
{{ $file := index ((split $dir "/") | collections.Reverse) 0 }}
|
||||
{{ $dir = strings.TrimSuffix $file $dir }}
|
||||
|
||||
{{ $adapter := (printf "assets/adapters/%s.html" $hook) }}
|
||||
{{ if not (fileExists (path.Join "/layouts/partials" $adapter)) }}
|
||||
{{ warnf "Cannot find adapter: %s" (path.Join "/layouts/partials" $adapter) }}
|
||||
{{ $hook = "hugo" }}
|
||||
{{ $adapter = "assets/adapters/hugo.html" }}
|
||||
{{ end }}
|
||||
|
||||
{{ $imgset := slice }}
|
||||
{{- range $index, $dim := $dims -}}
|
||||
{{ $width := (int (index (split $dim "x") 0)) }}
|
||||
{{ $height := (int (index (split $dim "x") 1)) }}
|
||||
|
||||
{{- $element := partial $adapter (dict
|
||||
"host" $host
|
||||
"dir" $dir
|
||||
"file" $file
|
||||
"img" $img
|
||||
"absoluteURL" $absoluteURL
|
||||
"transform" $transform
|
||||
"width" $width
|
||||
"height" $height
|
||||
"format" $format
|
||||
)}}
|
||||
{{ if $includeWidth }}
|
||||
{{ $imgset = $imgset | append (printf "%s %dw" $element $width) }}
|
||||
{{ else }}
|
||||
{{ $imgset = $imgset | append $element }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{ return (delimit $imgset ", ") }}
|
@@ -13,250 +13,30 @@
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := .destination }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $url := .url -}}
|
||||
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
{{- $wrapper := .wrapper -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $figclass := .figclass -}}
|
||||
|
||||
{{- $page := .page -}}
|
||||
|
||||
{{- $loading := .loading -}}
|
||||
{{- $lazy := eq $loading "lazy" -}}
|
||||
{{- $priority := .priority -}}
|
||||
{{- if eq $priority "auto" }}{{ $priority = "" }}{{ end -}}
|
||||
{{- $sizes := .sizes | default "100vw" -}}
|
||||
{{- $plain := .plain | default false -}}
|
||||
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := site.Params.main.modes | default (slice "light" "dark") -}}
|
||||
|
||||
{{- define "partials/image-portrait.html" -}}
|
||||
{{- $dimensions := slice }}
|
||||
{{- $dim := .dim -}}
|
||||
{{- $dimensions = $dimensions | append $dim -}}
|
||||
{{- $portraits := slice }}
|
||||
{{- range $d := $dimensions -}}
|
||||
{{- $p := split $d "x" }}
|
||||
{{ if ne (len $p) 2 }}
|
||||
{{- warnf "partial [assets/image.html] - Invalid dimension: %s" $d -}}
|
||||
{{- $portraits = $portraits | append $d -}}
|
||||
{{- else -}}
|
||||
{{- $portraits = $portraits | append (printf "%sx%s" (index $p 1) (index $p 0)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $ret := "" }}
|
||||
{{- if reflect.IsSlice $dim -}}
|
||||
{{ $ret = $portraits -}}
|
||||
{{- else if gt (len $portraits) 0 -}}
|
||||
{{- $ret = index $portraits 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $ret -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Generate a fallback image of type jpg -->
|
||||
{{- define "partials/image-default.html" -}}
|
||||
{{- $img := .img -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := and .portrait .ratio -}}
|
||||
{{- $width := "1400" -}}
|
||||
{{- $dim := "" -}}
|
||||
{{- $fallback := "" -}}
|
||||
|
||||
{{- with $img -}}
|
||||
{{- if eq $ratio "4x3" -}}{{- $dim = "1400x1050" }}
|
||||
{{- else if eq $ratio "3x2" -}}{{- $dim = "1400x933" }}
|
||||
{{- else if eq $ratio "1x1" -}}{{- $dim = "1400x1400" }}
|
||||
{{- else if eq $ratio "16x9" -}}{{- $dim = "1400x788" -}}
|
||||
{{- else if eq $ratio "21x9" -}}{{- $dim = "1400x600" -}}
|
||||
{{- else -}}
|
||||
{{- $dim = printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $portrait -}}{{- $dim = partial "partials/image-portrait.html" (dict "dim" $dim) -}}{{- end -}}
|
||||
|
||||
{{- if $ratio -}}
|
||||
{{- $fallback = ($img.Fill (printf "%s jpg" $dim)) -}}
|
||||
{{- else -}}
|
||||
{{- $fallback = ($img.Fit (printf "%s jpg" $dim)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- $ext := path.Ext $img.RelPermalink -}}
|
||||
{{- $fallback = $fallback | resources.Copy (replace $img.RelPermalink $clean (printf "-%s%s" $dim $ext)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $fallback -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Generate a image set of type webp -->
|
||||
{{- define "partials/image-scaled.html " -}}
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $img := .img -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := and .portrait .ratio -}}
|
||||
{{- $imgset := "" -}}
|
||||
|
||||
{{- $widths := slice "576" "768" "992" "1200" "1400" -}}
|
||||
{{- $dims := slice -}}
|
||||
{{- with $img -}}
|
||||
{{- if eq $ratio "4x3" -}}
|
||||
{{- $dims = slice "576x432" "768x576" "992x744" "1200x900" "1400x1050" -}}
|
||||
{{- else if eq $ratio "3x2" -}}
|
||||
{{- $dims = slice "576x384" "768x512" "992x661" "1200x800" "1400x933" -}}
|
||||
{{- else if eq $ratio "1x1" -}}
|
||||
{{- $dims = slice "576x576" "768x768" "992x992" "1200x1200" "1400x1400" -}}
|
||||
{{- else if eq $ratio "16x9" -}}
|
||||
{{- $dims = slice "576x324" "768x432" "992x558" "1200x675" "1400x788" -}}
|
||||
{{- else if eq $ratio "21x9" -}}
|
||||
{{- $dims = slice "576x247" "768x329" "992x425" "1200x514" "1400x600" -}}
|
||||
{{- else -}}
|
||||
{{- range $width := $widths -}}
|
||||
{{- $dims = $dims | append (printf "%sx%d" $width (int (math.Round (mul (div (float $width) $img.Width) $img.Height)))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $portrait -}}
|
||||
{{- $dims = partial "partials/image-portrait.html" (dict "dim" $dims) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $scaled := "" -}}
|
||||
{{- range $index, $dim := $dims -}}
|
||||
{{- $clean := path.Ext $img.RelPermalink -}}
|
||||
{{- if $ratio -}}
|
||||
{{- $scaled = $img.Fill (printf "%s webp" $dim) -}}
|
||||
{{- else -}}
|
||||
{{- $scaled = $img.Fit (printf "%s webp" $dim) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $scaled = $scaled | resources.Copy (replace $img.RelPermalink $clean (printf "-%s.webp" $dim)) -}}
|
||||
{{- if $absoluteURL -}}
|
||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.Permalink (index $widths $index) -}}
|
||||
{{- else -}}
|
||||
{{- $imgset = printf "%s, %s %sw" $imgset $scaled.RelPermalink (index $widths $index) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $imgset = strings.TrimPrefix ", " $imgset -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $imgset -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Define the img with optional caption -->
|
||||
{{- define "partials/image-definition.html" -}}
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $ratio := .ratio -}}
|
||||
{{- $portrait := .portrait -}}
|
||||
{{- $url := .url -}}
|
||||
{{- $wrapper := .wrapper -}}
|
||||
{{- $class := .class -}}
|
||||
{{- $title := .title -}}
|
||||
{{- $caption := .caption -}}
|
||||
{{- $figclass := .figclass -}}
|
||||
{{- $fallbackURL := "" -}}
|
||||
{{- $anchor := "" -}}
|
||||
{{- $imgset := "" -}}
|
||||
{{- $mode := .mode -}}
|
||||
{{- $modes := .modes -}}
|
||||
{{- $lazy := .lazy -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $sizes := .sizes -}}
|
||||
{{- $priority := .priority -}}
|
||||
{{- $isVector := false -}}
|
||||
|
||||
{{- $segments := split $url "#" -}}
|
||||
{{- if gt (len $segments) 2 -}}
|
||||
{{- errorf "Invalid path or url: %q" $url -}}
|
||||
{{- else if eq (len $segments) 2 }}
|
||||
{{- $url = index $segments 0 -}}
|
||||
{{- $anchor = index $segments 1 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if hasSuffix $url "svg" -}}
|
||||
{{- $fallbackURL = $url -}}
|
||||
{{- $isVector = true -}}
|
||||
{{- $res := partial "utilities/GetResource.html" (dict "url" $url "page" $page) -}}
|
||||
{{ if not $res }}
|
||||
{{- if not (fileExists (path.Join "/static" $url)) -}}
|
||||
{{ warnf "Cannot find vector image resource: %q" $url -}}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- else -}}
|
||||
{{- $res := partial "utilities/GetImage.html" (dict "url" $url "page" $page) -}}
|
||||
{{- $img := "" -}}
|
||||
{{ with $res }}
|
||||
{{ $img = $res.resource }}
|
||||
{{ if $res.mirror }}{{ $class = printf "%s mirrorred" $class }}{{ end }}
|
||||
{{ end }}
|
||||
{{- if $img -}}
|
||||
{{- $fallback := partial "partials/image-default.html" (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||
{{- if $absoluteURL -}}
|
||||
{{- $fallbackURL = $fallback.Permalink -}}
|
||||
{{- else -}}
|
||||
{{- $fallbackURL = $fallback.RelPermalink -}}
|
||||
{{- end -}}
|
||||
{{- $imgset = partial "partials/image-scaled.html " (dict "img" $img "ratio" $ratio "portrait" $portrait) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $none := $modes -}}
|
||||
{{- if ne $none $mode -}}
|
||||
{{- $wrapper = printf "%s d-none-%s" (or $wrapper "") $none -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $width := "" -}}
|
||||
{{- $height := "" -}}
|
||||
{{- $input := (split (path.BaseName $fallbackURL) "-") | collections.Reverse -}}
|
||||
{{ if $isVector }}
|
||||
{{- $height = "500" -}}
|
||||
{{ $width = string (partial "utilities/GetWidth.html" (dict "path" $fallbackURL "height" 500)) }}
|
||||
{{- else if gt ($input | len) 1 -}}
|
||||
{{- $dim := (split (index $input 0) "x") -}}
|
||||
{{- if eq ($dim | len) 2 -}}
|
||||
{{- $width = index $dim 0 -}}
|
||||
{{- $height = index $dim 1 -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
|
||||
{{- if $caption -}}
|
||||
<figure {{ with $wrapper }}class="{{ . }}"{{ end }}>
|
||||
{{ end }}
|
||||
<div class="{{ if not $caption }}{{ $wrapper }}{{ end }}">
|
||||
{{- if not $anchor -}}
|
||||
<img class="img-fluid {{ $class }}"
|
||||
src="{{ $fallbackURL }}"
|
||||
{{ if $lazy }}loading="lazy"{{ end }}
|
||||
{{ with $priority }}fetchpriority="{{ . }}"{{ end }}
|
||||
{{ with $imgset -}}srcset="{{ . }}" sizes="{{ $sizes }}"{{- end }}
|
||||
{{ with $height }}height="{{ . }}"{{ end }}
|
||||
{{ with $width }}width="{{ . }}"{{ end }}
|
||||
{{ with $title }}alt="{{ . }}"{{ end }}>
|
||||
{{- else }}
|
||||
<svg class="{{ $class }}">
|
||||
<use href="{{ $fallbackURL }}#{{ $anchor }}"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- if $caption -}}
|
||||
<figcaption class="figure-caption{{ with $figclass }} {{ . }}{{ end }}">{{ $caption | safeHTML }}</figcaption>
|
||||
</figure>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Initiate the regular or color-mode image -->
|
||||
<!-- Main code -->
|
||||
{{ $params := dict }}
|
||||
{{- $params = merge $params (dict
|
||||
"page" $page
|
||||
"ratio" $ratio
|
||||
"portrait" $portrait
|
||||
"wrapper" $wrapper
|
||||
@@ -267,26 +47,30 @@
|
||||
"lazy" $lazy
|
||||
"priority" $priority
|
||||
"sizes" $sizes
|
||||
"page" $page)
|
||||
"absoluteURL" $absoluteURL
|
||||
"plain" $plain
|
||||
)
|
||||
-}}
|
||||
|
||||
{{- if $mode -}}
|
||||
{{- $ext := path.Ext $url -}}
|
||||
{{- $base := strings.TrimSuffix $ext $url -}}
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
|
||||
{{- end -}}
|
||||
{{ if not $error }}
|
||||
{{- if $mode -}}
|
||||
{{- $ext := path.Ext $url -}}
|
||||
{{- $base := strings.TrimSuffix $ext $url -}}
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $base = strings.TrimSuffix (printf "-%s" $suffix) $base -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
|
||||
{{- $params = merge $params (dict
|
||||
"url" $image
|
||||
"mode" $suffix
|
||||
"modes" $modes)
|
||||
-}}
|
||||
{{- partial "partials/image-definition.html" $params -}}
|
||||
{{- range $suffix := $modes -}}
|
||||
{{- $image := printf "%s-%s%s" $base $suffix $ext -}}
|
||||
{{- $params = merge $params (dict
|
||||
"url" $image
|
||||
"mode" $suffix
|
||||
"modes" $modes)
|
||||
-}}
|
||||
{{- partial "assets/helpers/image-definition.html" $params -}}
|
||||
{{- end -}}
|
||||
{{ else }}
|
||||
{{- $params = merge $params (dict "url" $url) -}}
|
||||
{{- partial "assets/helpers/image-definition.html" $params -}}
|
||||
{{- end -}}
|
||||
{{ else }}
|
||||
{{- $params = merge $params (dict "url" $url) -}}
|
||||
{{- partial "partials/image-definition.html" $params -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
@@ -13,14 +13,15 @@
|
||||
{{ end }}
|
||||
|
||||
<!-- Initialize arguments -->
|
||||
{{ $destination := .destination }}
|
||||
{{ $destination := strings.TrimPrefix (strings.TrimSuffix "/" site.BaseURL) .destination }}
|
||||
|
||||
{{- $target := "" -}}
|
||||
{{- $rel := "" -}}
|
||||
{{- $case := .case | default true }}
|
||||
{{- $external := .external | default false }}
|
||||
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $isExternal := ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host -}}
|
||||
{{- $isExternal := or (ne (urls.Parse (absURL $destination)).Host (urls.Parse site.BaseURL).Host) $external -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $anchor := "" -}}
|
||||
{{- $text := .text -}}
|
||||
|
@@ -19,9 +19,10 @@
|
||||
{{- $class := .class -}}
|
||||
{{- $cue := .cue | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab := .tab | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $baseURL := $page.Scratch.Get "baseURL" -}}
|
||||
|
||||
{{- $menuURL := (or $menu.PageRef $menu.URL) | relLangURL -}}
|
||||
{{- $pageURL := $page.RelPermalink | relLangURL -}}
|
||||
{{- $menuURL := urls.JoinPath $baseURL ((or $menu.PageRef $menu.URL) | relLangURL) -}}
|
||||
{{- $pageURL := $page.RelPermalink -}}
|
||||
{{- $isActive := or (and (hasPrefix $pageURL $menuURL) (ne $menuURL ("/" | relLangURL))) (eq $pageURL $menuURL) -}}
|
||||
{{- $isAlias := $menu.Params.alias -}}
|
||||
{{- $isIcon := $menu.Params.icon -}}
|
||||
|
@@ -53,6 +53,7 @@
|
||||
{{- $size := .size -}}
|
||||
{{- $collapsed := .collapsed -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $baseURL := .baseURL -}}
|
||||
{{- $list := site.Params.docs.releases -}}
|
||||
{{- $id := .id -}}
|
||||
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
|
||||
@@ -70,7 +71,7 @@
|
||||
{{- end -}}
|
||||
{{ if $item.url }}
|
||||
<li>
|
||||
{{- $url := (path.Join $item.url) | relLangURL -}}
|
||||
{{- $url := (urls.JoinPath $baseURL $item.url) | relLangURL -}}
|
||||
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
|
||||
{{ if $item.latest }} ({{ T "latest" }}){{ end }}
|
||||
{{ if $active }}
|
||||
@@ -86,7 +87,7 @@
|
||||
{{- if site.Params.docs.overview -}}
|
||||
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
|
||||
<li>
|
||||
{{- $url := (path.Join site.Params.docs.overview) | relLangURL -}}
|
||||
{{- $url := (urls.JoinPath $baseURL site.Params.docs.overview) | relLangURL -}}
|
||||
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
|
||||
</li>
|
||||
{{- end -}}
|
||||
@@ -98,6 +99,7 @@
|
||||
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
|
||||
{{- $id := .id | default (printf "navbar-%d" 0) -}}
|
||||
{{- $page := .page -}}
|
||||
{{- $baseURL := $page.Scratch.Get "baseURL" -}}
|
||||
|
||||
{{- $defaultMenu := "main" -}}
|
||||
{{- $menuName := .menus | default $defaultMenu }}
|
||||
@@ -152,6 +154,10 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ if $logo }}{{ $logo = urls.JoinPath $baseURL $logo }}{{ end }}
|
||||
{{ if $logoLight }}{{ $logoLight = urls.JoinPath $baseURL $logoLight }}{{ end }}
|
||||
{{ if $logoDark }}{{ $logoDark = urls.JoinPath $baseURL $logoDark }}{{ end }}
|
||||
|
||||
{{- $title := site.Title -}}
|
||||
{{- if .title -}}
|
||||
{{- $title = .title -}}
|
||||
@@ -255,8 +261,8 @@
|
||||
|
||||
<!-- Insert version switcher -->
|
||||
{{- if $enableVersions -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id) -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id) -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true "id" .id "baseURL" $baseURL) -}}
|
||||
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false "id" .id "baseURL" $baseURL) -}}
|
||||
{{- end -}}
|
||||
|
||||
<!-- Insert language switcher if applicable -->
|
||||
@@ -276,7 +282,7 @@
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- range site.Languages -}}
|
||||
<li><a class="dropdown-item" href="/{{ .Lang }}">{{ default .Lang .LanguageName }}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ urls.JoinPath $baseURL .Lang }}">{{ default .Lang .LanguageName }}</a></li>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</ul>
|
||||
|
@@ -27,7 +27,7 @@
|
||||
{{- $data := .menu -}}
|
||||
|
||||
{{- $doc_slug := $group.title | urlize -}}
|
||||
{{- $href := or $group.link (printf "%s/" (relLangURL (path.Join $baseURL $doc_slug))) -}}
|
||||
{{- $href := or $group.link (partial "utilities/GetStaticURL" (dict "url" $doc_slug)) -}}
|
||||
{{- $collapsed := strings.HasPrefix $page.RelPermalink $href -}}
|
||||
|
||||
<li class="mb-1">
|
||||
|
@@ -5,19 +5,24 @@
|
||||
{{ $page_modules = $page_modules | append .Params.modules }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules := site.Params.modules.optional | intersect $page_modules -}}
|
||||
{{ $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 site.Params.modules.disableTemplate -}}
|
||||
{{- if in site.Params.modules.disableTemplate $mod}}
|
||||
{{- if reflect.IsSlice $config.disableTemplate -}}
|
||||
{{- if in $config.disableTemplate $mod}}
|
||||
{{- $skipTemplate = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $state := "" }}
|
||||
{{- with (index site.Params.modules $mod) -}}
|
||||
{{- with (index $config.modules $mod) -}}
|
||||
{{- with index . "state" }}{{ $state = . }}{{ end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
@@ -14,9 +14,14 @@
|
||||
{{- errorf "partial [footer/script.html] - Invalid value for param 'processing': %s" $state -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $config := page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{- $modules := "" -}}
|
||||
{{ if $core }}
|
||||
{{- $modules = site.Params.modules.core -}}
|
||||
{{- $modules = $config.core -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $bundle := partial "utilities/bundle" (dict "match" $match "filename" $filename "modules" $modules "basepath" "js/modules" "all" true "debugging" site.Params.debugging.showJS) -}}
|
||||
|
@@ -7,8 +7,14 @@
|
||||
<meta name="theme" content="{{ printf "Hinode %s" $version }}">
|
||||
{{ partialCached "head/stylesheet-core.html" . -}}
|
||||
|
||||
|
||||
{{ $config := page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [head/head.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{ $page_modules := slice | append .Page.Params.modules }}
|
||||
{{- $modules := site.Params.modules.optional | intersect $page_modules -}}
|
||||
{{- $modules := $config.optional | intersect $page_modules -}}
|
||||
{{- range $index, $mod := $modules -}}
|
||||
{{- $source := printf "scss/%s.scss" $mod -}}
|
||||
{{- $target := printf "css/%s.css" $mod -}}
|
||||
@@ -19,7 +25,7 @@
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="{{ .Site.Params.style.themeFontPath | default "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" }}">
|
||||
{{ else if .Site.Params.style.themeFontPreload }}
|
||||
{{ $font := .Site.Params.style.themeFontPreload }}
|
||||
{{ $font := partial "utilities/GetStaticURL" (dict "url" .Site.Params.style.themeFontPreload) }}
|
||||
<link rel="preload" href="{{ $font }}" as="font" type="font/{{ strings.TrimPrefix "." (path.Ext $font) }}" crossorigin>
|
||||
{{- end -}}
|
||||
{{ partial "head/seo.html" . }}
|
||||
|
@@ -35,7 +35,9 @@
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{ $base := partial "utilities/GetStaticURL" (dict "url" "/") }}
|
||||
{{- range resources.Match "icons/**.svg" -}}
|
||||
{{- $icon := . | resources.ExecuteAsTemplate .RelPermalink $params -}}
|
||||
{{- $target := strings.TrimPrefix $base .RelPermalink -}}
|
||||
{{- $icon := . | resources.ExecuteAsTemplate $target $params -}}
|
||||
{{- $icon.Publish -}}
|
||||
{{- end -}}
|
@@ -14,11 +14,16 @@
|
||||
{{- $core := .core | default true -}}
|
||||
|
||||
{{- $modules := "" -}}
|
||||
{{ $config := page.Scratch.Get "modules" }}
|
||||
{{ if not $config }}
|
||||
{{ errorf "partial [head/stylesheet.html] - Cannot initialize module configuration" }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $core }}
|
||||
{{- if reflect.IsSlice site.Params.modules.excludeSCSS -}}
|
||||
{{- $modules = complement site.Params.modules.excludeSCSS (or site.Params.modules.core slice) -}}
|
||||
{{- if reflect.IsSlice $config.excludeSCSS -}}
|
||||
{{- $modules = complement $config.excludeSCSS (or $config.core slice) -}}
|
||||
{{ else }}
|
||||
{{- $modules = site.Params.modules.core -}}
|
||||
{{- $modules = $config.core -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -35,6 +40,7 @@
|
||||
{{- $overlayOffset := $navbarOffset -}}
|
||||
{{- if site.Params.navigation.overlay }}{{ $overlayOffset = "0rem" }}{{ end }}
|
||||
{{- $vars := dict
|
||||
"base-url" (page.Scratch.Get "baseURL" | default "/")
|
||||
"theme-font" (default "Inter" site.Params.style.themeFont)
|
||||
"font-size-base" (default "1rem" site.Params.style.fontSizeBase)
|
||||
"primary" (default "#007bff" site.Params.style.primary)
|
||||
|
52
layouts/partials/utilities/InitModules.html
Normal file
52
layouts/partials/utilities/InitModules.html
Normal file
@@ -0,0 +1,52 @@
|
||||
{{ $page := .page }}
|
||||
|
||||
{{ $core := slice }}
|
||||
{{ $optional := slice }}
|
||||
{{ $excludeSCSS := slice }}
|
||||
{{ $disableTemplate := slice }}
|
||||
{{ $modules := dict }}
|
||||
|
||||
{{ range $key, $mod := $page.Site.Params.modules }}
|
||||
{{ if eq $key "core" }}
|
||||
{{ 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" }}
|
||||
{{ if eq $integration "core" }}
|
||||
{{ $core = $core | append $key }}
|
||||
{{ else if eq $integration "optional" }}
|
||||
{{ $optional = $optional | append $key }}
|
||||
{{ else if $integration }}
|
||||
{{ warnf "Unrecognized module integration setting: %s" $integration }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq (index $mod "excludeSCSS") true }}
|
||||
{{ $excludeSCSS = $excludeSCSS | append $key }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq (index $mod "disableTemplate") true }}
|
||||
{{ $disableTemplate = $disableTemplate | append $key }}
|
||||
{{ end }}
|
||||
|
||||
{{ $modules = merge $modules (dict $key $mod) }}
|
||||
{{ else }}
|
||||
{{ warnf "Unsupported module parameter: %s" $key }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $modules := dict "modules" $modules "core" $core "optional" $optional "excludeSCSS" $excludeSCSS "disableTemplate" $disableTemplate }}
|
||||
|
||||
{{- if and $page.IsPage (not (in $core "bootstrap")) -}}
|
||||
{{- errorf "Bootstrap is a required module, please add it to 'modules.core' in your site parameters" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ return $modules }}
|
@@ -24,6 +24,7 @@
|
||||
{{- $portrait := false -}}
|
||||
{{- $loading := "" -}}
|
||||
{{- $error := false -}}
|
||||
{{- $plain := false -}}
|
||||
|
||||
{{- if .IsNamedParams -}}
|
||||
{{ $url = .Get "src" | default "" -}}
|
||||
@@ -37,6 +38,7 @@
|
||||
{{ $figclass = .Get "figclass" | default "" -}}
|
||||
{{ with .Get "mode" }}{{ $mode = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ with .Get "portrait" }}{{ $portrait = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ with .Get "plain" }}{{ $plain = partial "utilities/CastBool.html" . }}{{ end -}}
|
||||
{{ else -}}
|
||||
{{ $url = .Get 0 }}
|
||||
{{ end -}}
|
||||
@@ -58,6 +60,7 @@
|
||||
"figclass" $figclass
|
||||
"mode" $mode
|
||||
"portrait" $portrait
|
||||
"plain" $plain
|
||||
"loading" $loading
|
||||
"page" .Page)
|
||||
-}}
|
||||
|
@@ -18,6 +18,7 @@
|
||||
{{ $url := "" }}
|
||||
{{ $class := "" }}
|
||||
{{ $case := true }}
|
||||
{{ $external := false }}
|
||||
{{ $cue := site.Params.main.externalLinks.cue }}
|
||||
{{ $tab := site.Params.main.externalLinks.tab }}
|
||||
{{ $text := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
|
||||
@@ -30,6 +31,7 @@
|
||||
{{- $cue = .Get "cue" | default site.Params.main.externalLinks.cue -}}
|
||||
{{- $tab = .Get "tab" | default site.Params.main.externalLinks.tab -}}
|
||||
{{- $case = .Get "case" | default true -}}
|
||||
{{- $external = .Get "external" | default false -}}
|
||||
{{- $class = .Get "class" | default "" -}}
|
||||
{{ else }}
|
||||
{{ $href = .Get 0 }}
|
||||
@@ -42,7 +44,11 @@
|
||||
{{ end }}
|
||||
|
||||
{{- if hasPrefix $href "http" -}}
|
||||
{{ $url = $href }}
|
||||
{{- if $external -}}
|
||||
{{ $url = $href }}
|
||||
{{- else -}}
|
||||
{{ $url = strings.TrimPrefix (strings.TrimSuffix "/" site.BaseURL) $href }}
|
||||
{{- end -}}
|
||||
{{- else if not (strings.Contains $href "/") -}}
|
||||
{{ $url = index site.Params.links $href }}
|
||||
{{- end -}}
|
||||
@@ -65,7 +71,12 @@
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
|
||||
{{ if and $external (not (hasPrefix $url "http")) }}
|
||||
{{ errorf "External link must start with 'http': %s" .Position -}}
|
||||
{{ $error = true -}}
|
||||
{{ end }}
|
||||
|
||||
{{- $isExternal := or (ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host) $external -}}
|
||||
{{- if not $isExternal -}}
|
||||
{{ $ref := partial "utilities/GetPage.html" (dict "url" $url "page" .Page) }}
|
||||
{{- if not $ref -}}
|
||||
@@ -80,5 +91,5 @@
|
||||
|
||||
<!-- Main code -->
|
||||
{{- if not $error -}}
|
||||
{{ partial "assets/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
|
||||
{{ partial "assets/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "external" $external "class" $class "page" .Page) }}
|
||||
{{- end -}}
|
||||
|
@@ -24,7 +24,7 @@
|
||||
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Page.Title | .Page.RenderString }}</a>
|
||||
<a href="{{ .Page.RelPermalink }}">{{ .Page.Title | .Page.RenderString }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -48,7 +48,7 @@
|
||||
<p class="text-body-secondary mt-5">{{ $year }}</p>
|
||||
{{ $.Scratch.Set "lastYear" $year }}
|
||||
{{ end }}
|
||||
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a>
|
||||
<a href="{{ .Page.RelPermalink }}">{{ if .Draft }}{{ T "draft" | upper }}: {{ end }}{{ .Title | .Page.RenderString }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
@@ -33,7 +33,7 @@
|
||||
font-src 'self' https://*.netlify.app https://fonts.gstatic.com; \
|
||||
frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com \
|
||||
app.netlify.com; \
|
||||
img-src 'self' data: https://*.netlify.app https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
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' \
|
||||
"""
|
||||
|
586
package-lock.json
generated
586
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.19",
|
||||
"version": "0.24.0-beta8",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.19",
|
||||
"version": "0.24.0-beta8",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^6.0.0",
|
||||
@@ -19,8 +19,8 @@
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"hugo-bin": "0.122.8",
|
||||
"eslint-plugin-promise": "^6.2.0",
|
||||
"hugo-bin": "0.123.2",
|
||||
"markdownlint-cli2": "^0.13.0",
|
||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
@@ -29,7 +29,7 @@
|
||||
"replace-in-files-cli": "^2.2.0",
|
||||
"rimraf": "^5.0.7",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^16.5.0",
|
||||
"stylelint": "^16.6.1",
|
||||
"stylelint-config-standard-scss": "^13.1.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
@@ -227,9 +227,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-parser-algorithms": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz",
|
||||
"integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==",
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz",
|
||||
"integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -245,13 +245,13 @@
|
||||
"node": "^14 || ^16 || >=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@csstools/css-tokenizer": "^2.2.4"
|
||||
"@csstools/css-tokenizer": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-tokenizer": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz",
|
||||
"integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==",
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz",
|
||||
"integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -268,9 +268,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/media-query-list-parser": {
|
||||
"version": "2.1.9",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz",
|
||||
"integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==",
|
||||
"version": "2.1.11",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz",
|
||||
"integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -286,14 +286,14 @@
|
||||
"node": "^14 || ^16 || >=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.6.1",
|
||||
"@csstools/css-tokenizer": "^2.2.4"
|
||||
"@csstools/css-parser-algorithms": "^2.6.3",
|
||||
"@csstools/css-tokenizer": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/selector-specificity": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz",
|
||||
"integrity": "sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==",
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
|
||||
"integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -313,9 +313,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@dual-bundle/import-meta-resolve": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz",
|
||||
"integrity": "sha512-ZKXyJeFAzcpKM2kk8ipoGIPUqx9BX52omTGnfwjJvxOCaZTM2wtDK7zN0aIgPRbT9XYAlha0HtmZ+XKteuh0Gw==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
|
||||
"integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"type": "github",
|
||||
@@ -830,139 +830,164 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@xhmikosr/archive-type": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-6.0.1.tgz",
|
||||
"integrity": "sha512-PB3NeJL8xARZt52yDBupK0dNPn8uIVQDe15qNehUpoeeLWCZyAOam4vGXnoZGz2N9D1VXtjievJuCsXam2TmbQ==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.0.0.tgz",
|
||||
"integrity": "sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"file-type": "^18.5.0"
|
||||
"file-type": "^19.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/bin-check": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-6.0.0.tgz",
|
||||
"integrity": "sha512-ZUICVP4EchT0Dmz4/Xo7l3wuNF4Zo3ua8l00I/gkgF/59+1c/0+dijfokkIxN+4HScsAnGN9ej53mhnPcsdDYg==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-7.0.3.tgz",
|
||||
"integrity": "sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"execa": "^5.1.1",
|
||||
"isexe": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/bin-wrapper": {
|
||||
"version": "12.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-12.0.0.tgz",
|
||||
"integrity": "sha512-QMsHQ+ZIzzp4bSfytxRN33XMVEIljmU0M4MuEQ0zgk7agmZLYSGX4/OEFYpg4Xq08VwlhCCJ+8p+dMKL8WTa8g==",
|
||||
"version": "13.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-13.0.5.tgz",
|
||||
"integrity": "sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/bin-check": "^6.0.0",
|
||||
"@xhmikosr/downloader": "^14.0.0",
|
||||
"bin-version-check": "^5.1.0",
|
||||
"os-filter-obj": "^2.0.0"
|
||||
"@xhmikosr/bin-check": "^7.0.3",
|
||||
"@xhmikosr/downloader": "^15.0.1",
|
||||
"@xhmikosr/os-filter-obj": "^3.0.0",
|
||||
"bin-version-check": "^5.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-9.0.1.tgz",
|
||||
"integrity": "sha512-9Lvlt6Qdpo9SaRQyRIXCo3lgU++eMZ68lzgjcTwtuKDrlwT635+5zsHZ1yrSx/Blc5IDuVLlPkBPj5CZkx+2+Q==",
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-10.0.1.tgz",
|
||||
"integrity": "sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/decompress-tar": "^7.0.0",
|
||||
"@xhmikosr/decompress-tarbz2": "^7.0.0",
|
||||
"@xhmikosr/decompress-targz": "^7.0.0",
|
||||
"@xhmikosr/decompress-unzip": "^6.0.0",
|
||||
"@xhmikosr/decompress-tar": "^8.0.1",
|
||||
"@xhmikosr/decompress-tarbz2": "^8.0.1",
|
||||
"@xhmikosr/decompress-targz": "^8.0.1",
|
||||
"@xhmikosr/decompress-unzip": "^7.0.0",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"make-dir": "^4.0.0",
|
||||
"strip-dirs": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress-tar": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-7.0.0.tgz",
|
||||
"integrity": "sha512-kyWf2hybtQVbWtB+FdRyOT+jyR5jxCNZPLqvQGB7djZj75lrpLUPEmRbyo86AtJ5OEtivpYaNWjCkqSJ8xtRWw==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-8.0.1.tgz",
|
||||
"integrity": "sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"file-type": "^18.5.0",
|
||||
"is-stream": "^3.0.0",
|
||||
"tar-stream": "^3.1.4"
|
||||
"file-type": "^19.0.0",
|
||||
"is-stream": "^2.0.1",
|
||||
"tar-stream": "^3.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress-tarbz2": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-7.0.0.tgz",
|
||||
"integrity": "sha512-3QnjipYkRgh3Dee1MWDgKmANWxOQBVN4e1IwiGNe2fHYfMYTeSkVvWREt87UIoSucKUh3E95v8uGFttgTknZcA==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-8.0.1.tgz",
|
||||
"integrity": "sha512-OF+6DysDZP5YTDO8uHuGG6fMGZjc+HszFPBkVltjoje2Cf60hjBg/YP5OQndW1hfwVWOdP7f3CnJiPZHJUTtEg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/decompress-tar": "^7.0.0",
|
||||
"file-type": "^18.5.0",
|
||||
"is-stream": "^3.0.0",
|
||||
"seek-bzip": "^1.0.6",
|
||||
"@xhmikosr/decompress-tar": "^8.0.1",
|
||||
"file-type": "^19.0.0",
|
||||
"is-stream": "^2.0.1",
|
||||
"seek-bzip": "^2.0.0",
|
||||
"unbzip2-stream": "^1.4.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress-targz": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-7.0.0.tgz",
|
||||
"integrity": "sha512-7BNHJl92g9OLhw89zqcFS67V1LAtm4Ex02j6OiQzuE8P7Yy9lQcyBuEL3x6v436grLdL+BcFjgbmhWxnem4GHw==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-8.0.1.tgz",
|
||||
"integrity": "sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/decompress-tar": "^7.0.0",
|
||||
"file-type": "^18.5.0",
|
||||
"is-stream": "^3.0.0"
|
||||
"@xhmikosr/decompress-tar": "^8.0.1",
|
||||
"file-type": "^19.0.0",
|
||||
"is-stream": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress-unzip": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-6.0.0.tgz",
|
||||
"integrity": "sha512-R1HAkjXLS7RAL74YFLxYY9zYflCcYGssld9KKFDu87PnJ4h4btdhzXfSC8J5i5A2njH3oYIoCzx03RIGTH07Sg==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-7.0.0.tgz",
|
||||
"integrity": "sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"file-type": "^18.5.0",
|
||||
"file-type": "^19.0.0",
|
||||
"get-stream": "^6.0.1",
|
||||
"yauzl": "^2.10.0"
|
||||
"yauzl": "^3.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/decompress-unzip/node_modules/yauzl": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz",
|
||||
"integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"buffer-crc32": "~0.2.3",
|
||||
"pend": "~1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/downloader": {
|
||||
"version": "14.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-14.0.0.tgz",
|
||||
"integrity": "sha512-qoKPKzGyoSZ7HxkKaMSFOA9dNnmow6nMNlOqoRvKkDvFhDVNjma6CBr/5o/oXtlQk+mEHxZWeHSNHHpWte4ApQ==",
|
||||
"version": "15.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-15.0.1.tgz",
|
||||
"integrity": "sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/archive-type": "^6.0.1",
|
||||
"@xhmikosr/decompress": "^9.0.1",
|
||||
"@xhmikosr/archive-type": "^7.0.0",
|
||||
"@xhmikosr/decompress": "^10.0.1",
|
||||
"content-disposition": "^0.5.4",
|
||||
"defaults": "^2.0.2",
|
||||
"defaults": "^3.0.0",
|
||||
"ext-name": "^5.0.0",
|
||||
"file-type": "^18.7.0",
|
||||
"file-type": "^19.0.0",
|
||||
"filenamify": "^6.0.0",
|
||||
"get-stream": "^6.0.1",
|
||||
"got": "^13.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@xhmikosr/os-filter-obj": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-3.0.0.tgz",
|
||||
"integrity": "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"arch": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.14.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
@@ -1097,9 +1122,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/arch": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
|
||||
"integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz",
|
||||
"integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -1325,9 +1350,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/b4a": {
|
||||
"version": "1.6.4",
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
|
||||
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
|
||||
"version": "1.6.6",
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
|
||||
"integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
@@ -1336,6 +1361,13 @@
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/bare-events": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
|
||||
"integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
@@ -1390,13 +1422,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/bin-version-check/node_modules/semver": {
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
||||
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
@@ -1474,12 +1503,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -2360,12 +2389,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/defaults": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-2.0.2.tgz",
|
||||
"integrity": "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-3.0.0.tgz",
|
||||
"integrity": "sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
@@ -3038,15 +3067,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-promise": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
|
||||
"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz",
|
||||
"integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^7.0.0 || ^8.0.0"
|
||||
"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-scope": {
|
||||
@@ -3191,18 +3223,6 @@
|
||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/execa/node_modules/is-stream": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
|
||||
@@ -3440,9 +3460,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/file-type": {
|
||||
"version": "18.7.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-18.7.0.tgz",
|
||||
"integrity": "sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==",
|
||||
"version": "19.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-19.0.0.tgz",
|
||||
"integrity": "sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"readable-web-to-node-stream": "^3.0.2",
|
||||
@@ -3450,7 +3470,7 @@
|
||||
"token-types": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
|
||||
@@ -3484,9 +3504,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
@@ -3529,6 +3549,18 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/find-up-simple": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
|
||||
"integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/find-versions": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
|
||||
@@ -3574,9 +3606,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/flatted": {
|
||||
"version": "3.2.9",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
|
||||
"integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
|
||||
"integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/for-each": {
|
||||
@@ -4386,9 +4418,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/hugo-bin": {
|
||||
"version": "0.122.8",
|
||||
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.122.8.tgz",
|
||||
"integrity": "sha512-sdTfsr6awEchbTVzxV4XiajRsKirEf2au59PiNv4SJzygewDK6CPg5kmzcnjNnjnXWROGvtkBQWzLIUrbaxIOQ==",
|
||||
"version": "0.123.2",
|
||||
"resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.123.2.tgz",
|
||||
"integrity": "sha512-HxKrHHso1PpXMOoZbAmopCqsYzdL3oUUR+/NTBdrhAOZFsKGaP1abLdJgu9GUyhUq+gYQOtDUtpB9wjoDyv6GQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -4398,14 +4430,14 @@
|
||||
],
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@xhmikosr/bin-wrapper": "^12.0.0",
|
||||
"pkg-conf": "^4.0.0"
|
||||
"@xhmikosr/bin-wrapper": "^13.0.5",
|
||||
"package-config": "^5.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"hugo": "bin/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/human-signals": {
|
||||
@@ -4849,12 +4881,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/is-stream": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
|
||||
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
@@ -5317,13 +5349,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir/node_modules/semver": {
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
||||
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
@@ -5846,9 +5875,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-url": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
|
||||
"integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
|
||||
"integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
@@ -6205,18 +6234,6 @@
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/os-filter-obj": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
|
||||
"integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"arch": "^2.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/p-cancelable": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
|
||||
@@ -6265,6 +6282,22 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/package-config": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz",
|
||||
"integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"find-up-simple": "^1.0.0",
|
||||
"load-json-file": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/param-case": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
|
||||
@@ -6412,9 +6445,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
||||
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
@@ -6450,104 +6483,6 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz",
|
||||
"integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"find-up": "^6.0.0",
|
||||
"load-json-file": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/find-up": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
|
||||
"integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"locate-path": "^7.1.0",
|
||||
"path-exists": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/locate-path": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
|
||||
"integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"p-locate": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/p-limit": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
|
||||
"integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"yocto-queue": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/p-locate": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
|
||||
"integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"p-limit": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/path-exists": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
||||
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-conf/node_modules/yocto-queue": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
|
||||
"integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=12.20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
@@ -7223,9 +7158,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.0.16",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
|
||||
"integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
|
||||
"integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
@@ -8277,18 +8212,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/seek-bzip": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
|
||||
"integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz",
|
||||
"integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"commander": "^2.8.1"
|
||||
"commander": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"seek-bunzip": "bin/seek-bunzip",
|
||||
"seek-table": "bin/seek-bzip-table"
|
||||
}
|
||||
},
|
||||
"node_modules/seek-bzip/node_modules/commander": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
@@ -8326,13 +8270,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/semver-truncate/node_modules/semver": {
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
|
||||
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
@@ -8636,13 +8577,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/streamx": {
|
||||
"version": "2.15.6",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
|
||||
"integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
|
||||
"version": "2.16.1",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
|
||||
"integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fast-fifo": "^1.1.0",
|
||||
"queue-tick": "^1.0.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"bare-events": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
@@ -8879,16 +8823,26 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "16.5.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz",
|
||||
"integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==",
|
||||
"version": "16.6.1",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz",
|
||||
"integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/stylelint"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/stylelint"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"@csstools/css-parser-algorithms": "^2.6.1",
|
||||
"@csstools/css-tokenizer": "^2.2.4",
|
||||
"@csstools/media-query-list-parser": "^2.1.9",
|
||||
"@csstools/selector-specificity": "^3.0.3",
|
||||
"@dual-bundle/import-meta-resolve": "^4.0.0",
|
||||
"@csstools/css-parser-algorithms": "^2.6.3",
|
||||
"@csstools/css-tokenizer": "^2.3.1",
|
||||
"@csstools/media-query-list-parser": "^2.1.11",
|
||||
"@csstools/selector-specificity": "^3.1.1",
|
||||
"@dual-bundle/import-meta-resolve": "^4.1.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"colord": "^2.9.3",
|
||||
"cosmiconfig": "^9.0.0",
|
||||
@@ -8897,7 +8851,7 @@
|
||||
"debug": "^4.3.4",
|
||||
"fast-glob": "^3.3.2",
|
||||
"fastest-levenshtein": "^1.0.16",
|
||||
"file-entry-cache": "^8.0.0",
|
||||
"file-entry-cache": "^9.0.0",
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.1.0",
|
||||
"globjoin": "^0.1.4",
|
||||
@@ -8905,16 +8859,16 @@
|
||||
"ignore": "^5.3.1",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"known-css-properties": "^0.30.0",
|
||||
"known-css-properties": "^0.31.0",
|
||||
"mathml-tag-names": "^2.1.3",
|
||||
"meow": "^13.2.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"micromatch": "^4.0.7",
|
||||
"normalize-path": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"picocolors": "^1.0.1",
|
||||
"postcss": "^8.4.38",
|
||||
"postcss-resolve-nested-selector": "^0.1.1",
|
||||
"postcss-safe-parser": "^7.0.0",
|
||||
"postcss-selector-parser": "^6.0.16",
|
||||
"postcss-selector-parser": "^6.1.0",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
@@ -8929,10 +8883,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.12.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/stylelint"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-recommended": {
|
||||
@@ -9071,29 +9021,28 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/file-entry-cache": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
|
||||
"integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
|
||||
"integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"flat-cache": "^4.0.0"
|
||||
"flat-cache": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/flat-cache": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.0.tgz",
|
||||
"integrity": "sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz",
|
||||
"integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"flatted": "^3.2.9",
|
||||
"keyv": "^4.5.4",
|
||||
"rimraf": "^5.0.5"
|
||||
"flatted": "^3.3.1",
|
||||
"keyv": "^4.5.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/globby": {
|
||||
@@ -9117,9 +9066,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/known-css-properties": {
|
||||
"version": "0.30.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz",
|
||||
"integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==",
|
||||
"version": "0.31.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz",
|
||||
"integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stylelint/node_modules/meow": {
|
||||
@@ -9134,6 +9083,19 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/micromatch": {
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
|
||||
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.3",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
@@ -9342,9 +9304,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tar-stream": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
|
||||
"integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
|
||||
"version": "3.1.7",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
|
||||
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"b4a": "^1.6.4",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gethinode/hinode",
|
||||
"version": "0.23.19",
|
||||
"version": "0.24.0-beta8",
|
||||
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
@@ -77,8 +77,8 @@
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"hugo-bin": "0.122.8",
|
||||
"eslint-plugin-promise": "^6.2.0",
|
||||
"hugo-bin": "0.123.2",
|
||||
"markdownlint-cli2": "^0.13.0",
|
||||
"netlify-plugin-hugo-cache-resources": "^0.2.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
@@ -87,7 +87,7 @@
|
||||
"replace-in-files-cli": "^2.2.0",
|
||||
"rimraf": "^5.0.7",
|
||||
"shx": "^0.3.4",
|
||||
"stylelint": "^16.5.0",
|
||||
"stylelint": "^16.6.1",
|
||||
"stylelint-config-standard-scss": "^13.1.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
Reference in New Issue
Block a user