jekyll-fingerprint-flow 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +15 -2
- data/interface.yml +1 -1
- data/lib/jekyll/fingerprint_flow/srcset_rewriter.rb +4 -3
- data/lib/jekyll/fingerprint_flow/url_tagger.rb +4 -4
- data/lib/jekyll/fingerprint_flow/version.rb +1 -1
- metadata +10 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b9ee1723a4896982df6a7fc8ad1aa4a672c5dd1e50e08bf75b049b7b81c9943d
|
|
4
|
+
data.tar.gz: 530cf60817874dfa4aefd4917ffd65feb98a2b18067e7525587dd9329e81e02a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 654ee48ee034a9811aae5aa9badcfb60eec2b35ce69d525c8dd1847e3be42176aee67b80a102735c8bdaa6b2ff5daaf1377e3adcdcac812848e993001f74917b
|
|
7
|
+
data.tar.gz: 78276b60233d9d8be25bce577b72f79198e75c423548910a1cc596521a78b875782488f554f66b0afb67830e1e78723ac67b0566db1b52147b379243c2bd5ada
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.1.2] - 2026-11-10
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `rake docs:demo` — captures the checked-in illustrative overview as
|
|
10
|
+
animated AVIF + WebP + static PNG (headless Chrome + ffmpeg + img2webp;
|
|
11
|
+
build-host tools), embedded in README via `<picture>`. Examples are
|
|
12
|
+
schematic, not generated from a live Jekyll build.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- In-range gem updates: `addressable` 2.9.1 → 2.9.2,
|
|
17
|
+
`sass-embedded` 1.107.0 → 1.108.1, `rspec-*` 3.13.x patches;
|
|
18
|
+
`BUNDLED WITH` 4.0.21 → 4.0.24.
|
|
19
|
+
- CI: `ruby/setup-ruby` pin bumped v1.335.0 → v1.338.0.
|
|
20
|
+
- CI: Semgrep bumped to 1.182.0 — `ci.yml` and `release.yml` install it with `pipx install semgrep==1.182.0`, and the `semgrep ci` job runs the digest-pinned `semgrep/semgrep:1.182.0` container image (replacing the earlier `pip3 install semgrep==1.176.0` pins; the interim hashed `requirements-ci.txt` lockfile was dropped). Added `.github/dependabot.yml` covering github-actions and bundler updates.
|
|
21
|
+
|
|
22
|
+
- Gemspec `description` rewritten as an RDoc `==`-headed blurb so
|
|
23
|
+
rubygems.org renders it as markup instead of a single plain paragraph.
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- Specs covering `.htm` output files and per-build hash memoization (a file changed mid-build keeps its first tag; the next build re-hashes).
|
|
28
|
+
|
|
5
29
|
## [0.1.1] - 2026-10-06
|
|
6
30
|
|
|
7
31
|
### Fixed
|
data/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
[](https://deepwiki.com/gundestrup/jekyll-fingerprint-flow)
|
|
12
12
|
[](https://www.codefactor.io/repository/github/gundestrup/jekyll-fingerprint-flow)
|
|
13
|
-
[](https://github.com/gundestrup/jekyll-fingerprint-flow/security/code-scanning)
|
|
14
14
|
[](https://sonarcloud.io/summary/new_code?id=gundestrup_jekyll-fingerprint-flow)
|
|
15
15
|
|
|
16
16
|
Drop-in content-hash cache busting for Jekyll. After the site is written,
|
|
@@ -27,6 +27,19 @@ No template changes or asset-pipeline tags are needed. The post-write pass
|
|
|
27
27
|
covers matching URLs emitted by layouts, themes, and other plugins, without
|
|
28
28
|
mistaking comments, script text, or unrelated `data-*` attributes for markup.
|
|
29
29
|
|
|
30
|
+
<!-- markdownlint-disable MD033 -->
|
|
31
|
+
<picture>
|
|
32
|
+
<source
|
|
33
|
+
srcset="docs/assets/jekyll-fingerprint-flow-demo.avif"
|
|
34
|
+
type="image/avif">
|
|
35
|
+
<source
|
|
36
|
+
srcset="docs/assets/jekyll-fingerprint-flow-demo.webp"
|
|
37
|
+
type="image/webp">
|
|
38
|
+
<img src="docs/assets/jekyll-fingerprint-flow-demo.png"
|
|
39
|
+
alt="jekyll-fingerprint-flow demo">
|
|
40
|
+
</picture>
|
|
41
|
+
<!-- markdownlint-enable MD033 -->
|
|
42
|
+
|
|
30
43
|
## Why
|
|
31
44
|
|
|
32
45
|
Browsers cache static assets aggressively. When a site serves assets with a
|
|
@@ -146,7 +159,7 @@ fingerprinting, then compression (0–10).
|
|
|
146
159
|
```bash
|
|
147
160
|
bundle install
|
|
148
161
|
bundle exec rake quick # rubocop + rspec
|
|
149
|
-
bundle exec rake ci # + bundler-audit, semgrep, package check
|
|
162
|
+
bundle exec rake ci # + bundler-audit, semgrep (local rules), package check
|
|
150
163
|
```
|
|
151
164
|
|
|
152
165
|
Release: `bundle exec rake "version:bump[patch]"`, add a dated CHANGELOG
|
data/interface.yml
CHANGED
|
@@ -39,10 +39,11 @@ module Jekyll
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def strip_trailing_commas(url, finish)
|
|
42
|
-
commas =
|
|
43
|
-
|
|
42
|
+
commas = 0
|
|
43
|
+
commas += 1 while commas < url.bytesize && url.getbyte(url.bytesize - 1 - commas) == 44
|
|
44
|
+
return [url, finish, false] if commas.zero?
|
|
44
45
|
|
|
45
|
-
[url.byteslice(0, url.bytesize - commas
|
|
46
|
+
[url.byteslice(0, url.bytesize - commas), finish - commas, true]
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
def skip_url(value, position)
|
|
@@ -26,12 +26,12 @@ module Jekyll
|
|
|
26
26
|
|
|
27
27
|
# Returns the rewritten URL, or nil when the URL must not be touched.
|
|
28
28
|
def tag(url, html_dir:, base_href: nil)
|
|
29
|
-
parts = split(url.strip)
|
|
29
|
+
parts = split(url.strip) || return
|
|
30
30
|
path, query, frag = parts
|
|
31
|
-
decoded_path = unescape(path)
|
|
31
|
+
decoded_path = unescape(path) || return
|
|
32
32
|
return unless fingerprintable?(decoded_path)
|
|
33
33
|
|
|
34
|
-
resolved = resolve(decoded_path, html_dir, base_href)
|
|
34
|
+
resolved = resolve(decoded_path, html_dir, base_href) || return
|
|
35
35
|
merge(path, query, frag, @hasher.tag(resolved))
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -102,7 +102,7 @@ module Jekyll
|
|
|
102
102
|
return html_dir unless base_href
|
|
103
103
|
|
|
104
104
|
base_path = base_href.strip.partition("#").first.partition("?").first
|
|
105
|
-
decoded_base = unescape(base_path)
|
|
105
|
+
decoded_base = unescape(base_path) || return
|
|
106
106
|
return html_dir if decoded_base.empty?
|
|
107
107
|
|
|
108
108
|
base_target = base_target(decoded_base, html_dir)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-fingerprint-flow
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Svend Gundestrup
|
|
@@ -29,10 +29,15 @@ dependencies:
|
|
|
29
29
|
- - "<"
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
31
|
version: '5.0'
|
|
32
|
-
description:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
description: |
|
|
33
|
+
== Content-hash cache busting for Jekyll
|
|
34
|
+
|
|
35
|
+
A zero-config plugin that content-tags supported local asset URLs in
|
|
36
|
+
generated .html/.htm attributes at post_write — covering markup
|
|
37
|
+
emitted by themes and plugins without template changes.
|
|
38
|
+
|
|
39
|
+
CSS/JS runtime references and HTTP cache headers are outside its
|
|
40
|
+
scope.
|
|
36
41
|
email:
|
|
37
42
|
- svend@gundestrup.dk
|
|
38
43
|
executables: []
|