Compare commits

...

26 Commits

Author SHA1 Message Date
Mark Dumay
75644ae046 Merge pull request #438 from gethinode/footer
Suppress social footer when no media are defined
2023-08-19 09:56:38 +02:00
mark
994ffe5ab5 Bump package release 2023-08-19 09:43:20 +02:00
Mark Dumay
1dc016a6f8 Merge branch 'main' into footer 2023-08-19 09:33:45 +02:00
Mark Dumay
44e3b31c67 Adjust cache path
* Adjust env var reference

* Adjust cache path

* Adjust cache path

* Adjust cache path

* Adjust cache dir

* Show cachedir in worklfow log

* Show cachedir in worklfow log

* Update Windows cache dir

* Update Windows cache dir
2023-08-19 09:32:41 +02:00
Mark Dumay
0197b79427 Merge pull request #436 from gethinode/develop
Refactor workflows
2023-08-19 06:56:54 +02:00
mark
828e531b52 Adjust env var reference 2023-08-19 06:53:53 +02:00
mark
23279d9710 Adjust env var reference 2023-08-19 06:51:27 +02:00
mark
0caf473897 Consolidate env vars 2023-08-19 06:42:47 +02:00
mark
8e68534b28 Suppress social footer when no media are defined 2023-08-19 06:42:11 +02:00
Mark Dumay
0f07ccfd3f Merge branch 'main' into develop 2023-08-19 06:36:02 +02:00
mark
77fad02da7 Add cache to build commands 2023-08-19 06:14:00 +02:00
mark
7a9cb1b2ca Add ci build cache configuration 2023-08-19 06:13:10 +02:00
mark
d82ed79989 Refactor lint and build workflows 2023-08-19 06:12:45 +02:00
mark
ff82ded064 Refactor npm publish workflow 2023-08-19 05:38:56 +02:00
github-actions[bot]
78167f2d03 Merge pull request #434 from gethinode/dependabot/npm_and_yarn/stylelint-15.10.3
Bump stylelint from 15.10.2 to 15.10.3
2023-08-18 13:53:33 +00:00
dependabot[bot]
80f2084822 Bump stylelint from 15.10.2 to 15.10.3
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.2 to 15.10.3.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/15.10.2...15.10.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-18 13:47:50 +00:00
Mark Dumay
a7d67e993f Merge pull request #432 from gethinode/main
Sync with main
2023-08-17 12:10:26 +02:00
Mark Dumay
317eab54f8 Merge pull request #431 from gethinode/relref
Refactor link shortcode
2023-08-17 09:39:36 +02:00
mark
cb90ef363b Bump package version 2023-08-17 09:27:45 +02:00
Mark Dumay
f31309f863 Merge branch 'main' into relref 2023-08-17 09:24:22 +02:00
mark
a76a692075 Update build stats 2023-08-17 09:22:45 +02:00
mark
f52f758962 Refactor link shortcode 2023-08-17 09:22:39 +02:00
mark
bcc3a7877e Use proper page context to render inner content 2023-08-17 09:22:22 +02:00
mark
7b52da5ce0 Add link shortcode 2023-08-17 09:21:29 +02:00
mark
e7403bd1a4 Add multilanguage support 2023-08-17 09:21:09 +02:00
mark
2881eb4546 Trim trailing '/' to improve finding the right page 2023-08-17 09:20:53 +02:00
19 changed files with 315 additions and 192 deletions

View File

@@ -1,5 +1,6 @@
name: build
name: Lint & build
on:
workflow_dispatch:
push:
tags:
- v*
@@ -7,24 +8,75 @@ on:
pull_request:
branches: [ main ]
env:
CACHE_KEY: 'hugo-hinode'
CACHE_PATH_POSIX: '/tmp/hugo_cache_runner'
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
jobs:
build:
lint:
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
node-version: [16.x, 18.x, 20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
os: [ubuntu-latest]
node-version: [20.x]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci
- run: npm run build
- run: npm run build:example
- name: Perform clean install of npm
run: npm ci
- name: Lint the source files
run: npm run lint
build:
needs: lint
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
node-version: [16.x, 18.x, 20.x]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- name: Perform clean install of npm
run: npm ci
# Cache Hugo cachedir and resourcedir (configured in config/ci/hugo.toml) for each OS
# No additional cache invalidation is needed, Hugo uses checksums itself
- name: Use Hugo cache
uses: actions/cache@v3
with:
path: ${{ runner.os == 'Windows' && env.CACHE_PATH_WIN || env.CACHE_PATH_POSIX }}
key: ${{ runner.os }}-${{ env.CACHE_KEY }}
restore-keys: |
${{ runner.os }}-${{ env.CACHE_KEY }}
- name: Build main site
run: npm run build:cache
# The example site is to be published to demo.gethinode.com
- name: Build example site
run: npm run build:example:ci

View File

@@ -1,31 +0,0 @@
name: lint
on:
push:
tags:
- v*
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci --ignore-scripts
- run: npm run lint

View File

@@ -1,35 +1,40 @@
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
name: Node.js Package
# This workflow will run tests using node and then publish a package to npmjs.org when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
name: Publish package to npmjs
on:
workflow_dispatch:
branches: [ main ]
release:
types: [created]
types: [published]
env:
REGISTRY_URL: 'https://registry.npmjs.org/'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npm test
strategy:
matrix:
os: [ubuntu-latest]
node-version: [20.x]
runs-on: ${{ matrix.os }}
publish-npm:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup .npmrc file to publish to npm
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm publish
node-version: ${{ matrix.node-version }}
registry-url: ${{ env.REGISTRY_URL }}
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- name: Perform clean install of npm
run: npm ci
- name: Publish package to npm
run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

22
config/ci/hugo.toml Normal file
View File

@@ -0,0 +1,22 @@
# cachedir default on POSIX: '/tmp/hugo_cache_runner'
# cachedir default on Windows: '~\AppData\Local\hugo_cache'
[caches]
[caches.assets]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.getcsv]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = -1
[caches.images]
dir = ':cacheDir/resources/_gen' # map to cacheDir instead of resourceDir to utilize GitHub action/cache
maxAge = -1
[caches.modules]
dir = ':cacheDir/modules'
maxAge = -1

View File

@@ -217,6 +217,31 @@ As an example, the following shortcode displays an image with rounded corners an
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Link
As an example, the following shortcodes render links in different formats.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
- {{</* link hinode >}}Named link with default settings{{< /link */>}}
- {{</* link name=hinode cue=false tab=false >}}Named link opening in current tab w/o icon{{< /link */>}}
- {{</* 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 "./projects/another-project" >}}Internal link with title{{< /link */>}}
- {{</* link url="projects/another-project" /*/>}}
- {{</* link url="/projects/another-project" /*/>}}
- {{</* link url="../projects/another-project" case=false /*/>}}
- {{</* link "/about/" /*/>}}
- {{</* link "/fr/about/" /*/>}}
- {{</* link "/fr/about" >}}About (French){{< /link */>}}
- {{</* link "#image" /*/>}}
- {{</* link "components/#map" /*/>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
## Nav
As an example, the following shortcode displays a tab group with vertically aligned pills.

View File

@@ -433,6 +433,7 @@
"icon",
"image",
"leaflet-map-0",
"link",
"map",
"nav",
"nav-0",

View File

@@ -149,8 +149,6 @@
"py-2",
"py-5",
"py-md-1",
"ratio",
"ratio-16x9",
"rounded",
"row",
"row-cols-1",

View File

@@ -5,27 +5,29 @@
{{ warnf "DEPRECATED: parameter `Params.home.socialCaption` has been deprecated in release v0.18"}}
{{ end }}
{{- $tab := site.Params.main.externalLinks.tab -}}
<div class="container-fluid">
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
<div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-6 col-md-4">
{{ if gt .Site.Menus.social 0 }}
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
{{ end }}
{{ if gt .Site.Menus.social 0 }}
{{- $tab := site.Params.main.externalLinks.tab -}}
<div class="container-fluid">
<div class="row row-cols-1 row-cols-sm-4 bg-primary p-3 bg-opacity-{{ .Site.Params.style.themeOpacity | default "25" | safeHTML }} align-items-center">
<div class="col col-md-2 d-none d-md-block"></div>
<div class="col col-sm-6 col-md-4">
{{ if gt .Site.Menus.social 0 }}
<div class="fs-3 fw-bold">{{ or .Site.Params.footer.socialTitle .Site.Params.social.title }}</div>
<p>{{ or .Site.Params.footer.socialCaption .Site.Params.social.caption }}</p>
{{ end }}
</div>
<div class="col text-sm-start text-center col-sm-6 col-md-4">
{{ range .Site.Menus.social -}}
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
{{ if hasPrefix .Pre "<i" }}
{{ .Pre | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
{{ end }}
</a>
{{ end -}}
</div>
<div class="col col-md-2 d-none d-md-block"></div>
</div>
<div class="col text-sm-start text-center col-sm-6 col-md-4">
{{ range .Site.Menus.social -}}
<a href="{{ .URL }}" {{ if $tab }} target="_blank" rel="noopener noreferrer"{{ end }} aria-label="{{ .Name | safeHTML }}" class="text-decoration-none link-secondary d-inline p-2">
{{ if hasPrefix .Pre "<i" }}
{{ .Pre | safeHTML }}
{{ else }}
{{ partial "assets/icon.html" (dict "icon" (printf "%s fa-2x" .Pre) )}}
{{ end }}
</a>
{{ end -}}
</div>
<div class="col col-md-2 d-none d-md-block"></div>
</div>
</div>
{{ end }}

View File

@@ -38,7 +38,21 @@
{{- $anchor = index $segments 1 -}}
{{ end }}
{{ end }}
{{- $destination = strings.TrimSuffix "/" $destination -}}
{{- $ref := $page.GetPage $destination -}}
{{- if not $ref }}
{{- $segments := split $destination "/" -}}
{{- if and (hasPrefix $destination "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{- $page := .Page -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $destination) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "partial [utilities/link.html] - Cannot find page: %s" $destination -}}
{{- else -}}

View File

@@ -50,6 +50,6 @@
</h2>
{{- end -}}
<div id="{{ $parent }}-item-{{ $id }}" class="accordion-collapse collapse{{ if $show }} show{{ end }}{{ with $class }} {{ . }}{{ end }}" aria-labelledby="{{ $parent }}-heading-{{ $id }}" data-bs-parent="#{{ $parent }}">
<div class="accordion-body">{{ $body | markdownify | safeHTML }}</div>
<div class="accordion-body">{{ $body | .Page.RenderString | safeHTML }}</div>
</div>
</div>

View File

@@ -26,7 +26,7 @@
{{- $body := .Inner -}}
{{- if $open -}}
{{- $pattern := printf "data-bs-parent=\"#%s\"" $id -}}
{{- $body = (replace .Inner $pattern "") | markdownify | safeHTML }}
{{- $body = (replace .Inner $pattern "") | .Page.RenderString | safeHTML }}
{{- end -}}
<div id="{{ $id }}" class="accordion mb-3{{ with $class }} {{ . }}{{ end }}">

View File

@@ -55,7 +55,7 @@
<div class="d-flex alert alert-{{ $color }} {{ if $dismissible }}alert-dismissible fade show{{ end }}{{ with $class }} {{ . }}{{ end }}" role="alert">
{{ with $icon }}<div class="pt-1 pe-2">{{ . }}</div>{{ end }}
<div class="flex-grow-1 my-auto">
{{ trim .Inner " \r\n" | markdownify | safeHTML -}}
{{ trim .Inner " \r\n" | .Page.RenderString | safeHTML -}}
{{ if $dismissible }}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>{{ end }}
</div>
</div>

View File

@@ -4,10 +4,11 @@
named link or internal reference (in that order). Any inner text is rendered as the link title, otherwise it uses
the host name (for external links), link title (for internal links), or anchor name (for any local references
containing a `#`). The shortcode supports the following named arguments:
"name" Optional name of the link maintained in the "links" section of the site's parameters. If omitted,
the "url" argument should be provided instead.
"url" Optional url of the link, including the scheme ("http" or "https"). If omitted, the "name" argument
should be provided instead.
"href" Required reference to either an external link (if it starts with http), a named link (if it can be
found in params.links), or internal reference. External and internal references may include an
anchor "#".
"name" Alias of href.
"url" Alias of href.
"cue" Optional flag to indicate if an external link should show a visual cue, defaults to setting
"main.externalLinks.cue" in the site's parameters.
"tab" Optional flag to indicate if an external link should open in a new tab, defaults to setting
@@ -18,58 +19,82 @@
-->
{{- $error := false -}}
{{ $href := "" }}
{{ $name := "" }}
{{ $url := "" }}
{{ $class := "" }}
{{ $case := true }}
{{ $cue := site.Params.main.externalLinks.cue }}
{{ $tab := site.Params.main.externalLinks.tab }}
{{ $text := trim .Inner " \r\n" | markdownify | safeHTML }}
{{ $text := trim .Inner " \r\n" | .Page.RenderString | safeHTML }}
{{- $anchor := "" -}}
{{ if .IsNamedParams }}
{{ $href = .Get "href" }}
{{ $name = .Get "name" }}
{{ $url = .Get "url" }}
{{ $cue = .Get "cue" | default site.Params.main.externalLinks.cue }}
{{ $tab = .Get "tab" | default site.Params.main.externalLinks.tab }}
{{ $case = .Get "case" | default true }}
{{ else if strings.Contains (.Get 0) "/" }}
{{ $url = .Get 0 }}
{{- $class := .Get "class" -}}
{{ else }}
{{ $name = .Get 0 }}
{{ $href = .Get 0 }}
{{ end }}
{{ if not (or $name $url) }}
{{ errorf "Expected param 'name' or 'url': %s" .Position -}}
{{- $href = or (or $href $name) $url -}}
{{ if not $href }}
{{ errorf "Expected param 'href': %s" .Position -}}
{{ $error = true -}}
{{ end }}
{{ if $name }}
{{ $url = index site.Params.links $name }}
{{ if not $url }}
{{ $url = $name }}
{{- if strings.Contains $url "#" }}
{{ $segments := split $url "#" }}
{{- if ne (len $segments) 2 }}
{{ errorf "Malformed path, expected one anchor '#' only: '%s' at %s" $url .Position -}}
{{ else }}
{{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{ if not $url }}
{{- $url = strings.TrimSuffix "/" .Page.RelPermalink -}}
{{- with .Page.Language }}{{ $url = strings.TrimPrefix (path.Join "/" .Lang) $url}}{{ end -}}
{{ end }}
{{- if hasPrefix $href "http" -}}
{{ $url = $href }}
{{- else if not (strings.Contains $href "/") -}}
{{ $url = index site.Params.links $href }}
{{- end -}}
{{ if not $url }}
{{- $href = strings.TrimPrefix "./" $href -}}
{{- if strings.Contains $href "#" }}
{{ $segments := split $href "#" }}
{{- if ne (len $segments) 2 }}
{{ errorf "Malformed path, expected one anchor '#' only: '%s' at %s" $href .Position -}}
{{ else }}
{{- $url = index $segments 0 -}}
{{- $anchor = index $segments 1 -}}
{{ if not $url }}
{{- $url = strings.TrimSuffix "/" .Page.RelPermalink -}}
{{- with .Page.Language }}{{ $url = strings.TrimPrefix (path.Join "/" .Lang) $url}}{{ end -}}
{{ end }}
{{ end }}
{{ else }}
{{- $url = $href -}}
{{ end }}
{{ end }}
{{- $class := .Get "class" -}}
{{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}}
{{- if not $isExternal -}}
{{- $ref := .Page.GetPage $url -}}
{{- $url = strings.TrimSuffix "/" $url -}}
{{- $ref := "" -}}
{{- if not $ref -}}
{{- errorf "Cannot find page: '%s' at %s" $url .Position -}}
{{- $ref = .Page.GetPage $url -}}
{{- end -}}
{{- if not $ref }}
{{- $segments := split $url "/" -}}
{{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}}
{{- $prefix := index $segments 1 -}}
{{- $page := .Page -}}
{{ with index (where site.Sites "Language.Lang" $prefix) 0 }}
{{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }}
{{- $ref = .GetPage $path -}}
{{ end }}
{{- end -}}
{{- end -}}
{{- if not $ref -}}
{{- errorf "Cannot find page: '%s' at %s" $href .Position -}}
{{- $error = true -}}
{{- end -}}
{{- end -}}
@@ -81,3 +106,5 @@
{{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }}
{{- end -}}

View File

@@ -50,5 +50,5 @@
<div class="tab-pane{{ if $show }} active {{ if $fade}}show{{ end }}{{ end }} {{ if $fade}}fade{{ end }}" id="{{ $parent }}-{{ $id }}"
role="tabpanel" aria-labelledby="{{ $parent }}-btn-{{ $id }}" tabindex="0" data-header="{{ $header }}" {{ if $show }}data-show-id="{{ $id }}"{{ end }}
data-has-content="{{ gt (len $body) 0 }}" {{ if $disabled }} data-disabled-id="{{ $id }}"{{ end }}>
{{ $body | markdownify | safeHTML }}
{{ $body | .Page.RenderString | safeHTML }}
</div>

View File

@@ -8,7 +8,7 @@
{{ $responsive = (slice "table-responsive") -}}
{{- end -}}
{{- $input := .Inner | markdownify }}
{{- $input := .Inner | .Page.RenderString }}
{{- $input = replace $input "style=\"text-align:left\"" "class=\"text-start\"" -}}
{{- $input = replace $input "style=\"text-align:center\"" "class=\"text-center\"" -}}
{{- $input = replace $input "style=\"text-align:right\"" "class=\"text-end\"" -}}

View File

@@ -79,7 +79,7 @@
{{ $datestr := (partial "utilities/date.html" (dict "date" $date "format" "long")) -}}
<p class="mb-0"><small class="text-body-secondary text-uppercase">{{ $datestr -}}</small></p>
{{ end }}
<p class="mt-3 mb-0">{{ $content | markdownify }}</p>
<p class="mt-3 mb-0">{{ $content | .Page.RenderString }}</p>
</div>
</div>
</div>

View File

@@ -13,7 +13,7 @@
{{ .Count }} {{ if gt .Count 1 }} {{ T "articles" }} {{ else }} {{ T "article" }} {{ end }}
</div>
<div class="col">
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | markdownify }}</a>
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ .Name | .Page.RenderString }}</a>
</div>
</div>
{{ end }}
@@ -34,7 +34,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 | markdownify }}</a>
<a href="{{ (path.Join .Page.RelPermalink) | relLangURL }}">{{ if .Draft }}{{ T "draft" | upper }}: {{end}}{{ .Title | .Page.RenderString }}</a>
</div>
</div>
{{ end }}

134
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.18.3",
"version": "0.18.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.18.3",
"version": "0.18.5",
"license": "MIT",
"devDependencies": {
"@fullhuman/postcss-purgecss": "^5.0.0",
@@ -26,7 +26,7 @@
"replace-in-files-cli": "^2.2.0",
"rimraf": "^5.0.1",
"shx": "^0.3.4",
"stylelint": "^15.10.2",
"stylelint": "^15.10.3",
"stylelint-config-standard-scss": "^10.0.0"
}
},
@@ -146,9 +146,9 @@
}
},
"node_modules/@csstools/css-parser-algorithms": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
"integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
"integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
"dev": true,
"funding": [
{
@@ -164,26 +164,32 @@
"node": "^14 || ^16 || >=18"
},
"peerDependencies": {
"@csstools/css-tokenizer": "^2.1.1"
"@csstools/css-tokenizer": "^2.2.0"
}
},
"node_modules/@csstools/css-tokenizer": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
"integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
"integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/csstools"
},
{
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
],
"engines": {
"node": "^14 || ^16 || >=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/csstools"
}
},
"node_modules/@csstools/media-query-list-parser": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
"integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz",
"integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==",
"dev": true,
"funding": [
{
@@ -199,8 +205,8 @@
"node": "^14 || ^16 || >=18"
},
"peerDependencies": {
"@csstools/css-parser-algorithms": "^2.3.0",
"@csstools/css-tokenizer": "^2.1.1"
"@csstools/css-parser-algorithms": "^2.3.1",
"@csstools/css-tokenizer": "^2.2.0"
}
},
"node_modules/@csstools/selector-specificity": {
@@ -2378,9 +2384,9 @@
"dev": true
},
"node_modules/fast-glob": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
"integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -3868,9 +3874,9 @@
}
},
"node_modules/known-css-properties": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz",
"integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",
"integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==",
"dev": true
},
"node_modules/levn": {
@@ -5143,9 +5149,9 @@
}
},
"node_modules/postcss": {
"version": "8.4.26",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz",
"integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==",
"version": "8.4.28",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
"integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"dev": true,
"funding": [
{
@@ -6857,14 +6863,14 @@
}
},
"node_modules/stylelint": {
"version": "15.10.2",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.2.tgz",
"integrity": "sha512-UxqSb3hB74g4DTO45QhUHkJMjKKU//lNUAOWyvPBVPZbCknJ5HjOWWZo+UDuhHa9FLeVdHBZXxu43eXkjyIPWg==",
"version": "15.10.3",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz",
"integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==",
"dev": true,
"dependencies": {
"@csstools/css-parser-algorithms": "^2.3.0",
"@csstools/css-tokenizer": "^2.1.1",
"@csstools/media-query-list-parser": "^2.1.2",
"@csstools/css-parser-algorithms": "^2.3.1",
"@csstools/css-tokenizer": "^2.2.0",
"@csstools/media-query-list-parser": "^2.1.4",
"@csstools/selector-specificity": "^3.0.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
@@ -6872,7 +6878,7 @@
"css-functions-list": "^3.2.0",
"css-tree": "^2.3.1",
"debug": "^4.3.4",
"fast-glob": "^3.3.0",
"fast-glob": "^3.3.1",
"fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1",
"global-modules": "^2.0.0",
@@ -6883,13 +6889,13 @@
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
"known-css-properties": "^0.27.0",
"known-css-properties": "^0.28.0",
"mathml-tag-names": "^2.1.3",
"meow": "^10.1.5",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.25",
"postcss": "^8.4.27",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.0.13",
@@ -7743,22 +7749,22 @@
}
},
"@csstools/css-parser-algorithms": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
"integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
"integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
"dev": true,
"requires": {}
},
"@csstools/css-tokenizer": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
"integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
"integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
"dev": true
},
"@csstools/media-query-list-parser": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
"integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz",
"integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==",
"dev": true,
"requires": {}
},
@@ -9279,9 +9285,9 @@
"dev": true
},
"fast-glob": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
"integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dev": true,
"requires": {
"@nodelib/fs.stat": "^2.0.2",
@@ -10349,9 +10355,9 @@
"dev": true
},
"known-css-properties": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz",
"integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
"version": "0.28.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",
"integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==",
"dev": true
},
"levn": {
@@ -11259,9 +11265,9 @@
}
},
"postcss": {
"version": "8.4.26",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz",
"integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==",
"version": "8.4.28",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
"integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"dev": true,
"requires": {
"nanoid": "^3.3.6",
@@ -12377,14 +12383,14 @@
}
},
"stylelint": {
"version": "15.10.2",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.2.tgz",
"integrity": "sha512-UxqSb3hB74g4DTO45QhUHkJMjKKU//lNUAOWyvPBVPZbCknJ5HjOWWZo+UDuhHa9FLeVdHBZXxu43eXkjyIPWg==",
"version": "15.10.3",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz",
"integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==",
"dev": true,
"requires": {
"@csstools/css-parser-algorithms": "^2.3.0",
"@csstools/css-tokenizer": "^2.1.1",
"@csstools/media-query-list-parser": "^2.1.2",
"@csstools/css-parser-algorithms": "^2.3.1",
"@csstools/css-tokenizer": "^2.2.0",
"@csstools/media-query-list-parser": "^2.1.4",
"@csstools/selector-specificity": "^3.0.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
@@ -12392,7 +12398,7 @@
"css-functions-list": "^3.2.0",
"css-tree": "^2.3.1",
"debug": "^4.3.4",
"fast-glob": "^3.3.0",
"fast-glob": "^3.3.1",
"fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1",
"global-modules": "^2.0.0",
@@ -12403,13 +12409,13 @@
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
"known-css-properties": "^0.27.0",
"known-css-properties": "^0.28.0",
"mathml-tag-names": "^2.1.3",
"meow": "^10.1.5",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.25",
"postcss": "^8.4.27",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.0.13",

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.18.3",
"version": "0.18.5",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -22,7 +22,9 @@
"start:prod": "hugo server --bind=0.0.0.0 --disableFastRender --printI18nWarnings -e production",
"prebuild": "npm run clean:public && npm run -s mod:install",
"build": "hugo --gc --minify",
"build:cache": "npm run -s prebuild && hugo config | grep cachedir && hugo --gc --minify -e ci",
"build:example": "npm run -s prebuild && hugo --gc --minify -s exampleSite",
"build:example:ci": "npm run -s prebuild && hugo --gc --minify -s exampleSite -e ci",
"build:debug": "hugo -e debug --debug",
"build:preview": "npm run build -D -F",
"clean:public": "rimraf public",
@@ -82,7 +84,7 @@
"replace-in-files-cli": "^2.2.0",
"rimraf": "^5.0.1",
"shx": "^0.3.4",
"stylelint": "^15.10.2",
"stylelint": "^15.10.3",
"stylelint-config-standard-scss": "^10.0.0"
},
"hugo-bin": {