mirror of
https://github.com/bigskysoftware/htmx.git
synced 2025-10-02 15:25:26 +00:00
Merge branch 'master' into dev
This commit is contained in:
commit
7247e8abd7
@ -3,43 +3,55 @@
|
|||||||
/** @type {import("../htmx").HtmxInternalApi} */
|
/** @type {import("../htmx").HtmxInternalApi} */
|
||||||
var api;
|
var api;
|
||||||
|
|
||||||
const targetAttrPrefix = 'hx-target-';
|
var attrPrefix = 'hx-target-';
|
||||||
const targetAttrMinLen = targetAttrPrefix.length - 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {HTMLElement} elt
|
* @param {HTMLElement} elt
|
||||||
* @param {number} respCode
|
* @param {number} respCode
|
||||||
* @returns {HTMLElement | null}
|
* @returns {HTMLElement | null}
|
||||||
*/
|
*/
|
||||||
function getRespCodeTarget(elt, respCode) {
|
function getRespCodeTarget(elt, respCodeNumber) {
|
||||||
if (!elt || !respCode) return null;
|
if (!elt || !respCodeNumber) return null;
|
||||||
|
|
||||||
var targetAttr = targetAttrPrefix + respCode;
|
var respCode = respCodeNumber.toString();
|
||||||
var targetStr = api.getClosestAttributeValue(elt, targetAttr);
|
|
||||||
|
|
||||||
if (targetStr) {
|
// '*' is the original syntax, as the obvious character for a wildcard.
|
||||||
if (targetStr === "this") {
|
// The 'x' alternative was added for maximum compatibility with HTML
|
||||||
return api.findThisElement(elt, targetAttr);
|
// templating engines, due to ambiguity around which characters are
|
||||||
} else {
|
// supported in HTML attributes.
|
||||||
return api.querySelectorExt(elt, targetStr);
|
//
|
||||||
}
|
// Start with the most specific possible attribute and generalize from
|
||||||
} else {
|
// there.
|
||||||
for (let l = targetAttr.length - 1; l > targetAttrMinLen; l--) {
|
var attrPossibilities = [
|
||||||
targetAttr = targetAttr.substring(0, l) + '*';
|
respCode,
|
||||||
targetStr = api.getClosestAttributeValue(elt, targetAttr);
|
|
||||||
if (targetStr) break;
|
respCode.substr(0, 2) + '*',
|
||||||
|
respCode.substr(0, 2) + 'x',
|
||||||
|
|
||||||
|
respCode.substr(0, 1) + '*',
|
||||||
|
respCode.substr(0, 1) + 'x',
|
||||||
|
respCode.substr(0, 1) + '**',
|
||||||
|
respCode.substr(0, 1) + 'xx',
|
||||||
|
|
||||||
|
'*',
|
||||||
|
'x',
|
||||||
|
'***',
|
||||||
|
'xxx',
|
||||||
|
];
|
||||||
|
|
||||||
|
for (var i = 0; i < attrPossibilities.length; i++) {
|
||||||
|
var attr = attrPrefix + attrPossibilities[i];
|
||||||
|
var attrValue = api.getClosestAttributeValue(elt, attr);
|
||||||
|
if (attrValue) {
|
||||||
|
if (attrValue === "this") {
|
||||||
|
return api.findThisElement(elt, attr);
|
||||||
|
} else {
|
||||||
|
return api.querySelectorExt(elt, attrValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetStr) {
|
return null;
|
||||||
if (targetStr === "this") {
|
|
||||||
return api.findThisElement(elt, targetAttr);
|
|
||||||
} else {
|
|
||||||
return api.querySelectorExt(elt, targetStr);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param {Event} evt */
|
/** @param {Event} evt */
|
||||||
|
@ -263,4 +263,38 @@ describe("response-targets extension", function() {
|
|||||||
htmx.config.responseTargetPrefersExisting = false;
|
htmx.config.responseTargetPrefersExisting = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('status code formatting', function()
|
||||||
|
{
|
||||||
|
var attributes = [
|
||||||
|
"hx-target-404",
|
||||||
|
|
||||||
|
"hx-target-40*",
|
||||||
|
"hx-target-40x",
|
||||||
|
|
||||||
|
"hx-target-4*",
|
||||||
|
"hx-target-4x",
|
||||||
|
"hx-target-4**",
|
||||||
|
"hx-target-4xx",
|
||||||
|
|
||||||
|
"hx-target-*",
|
||||||
|
"hx-target-x",
|
||||||
|
"hx-target-***",
|
||||||
|
"hx-target-xxx",
|
||||||
|
];
|
||||||
|
|
||||||
|
// String replacement because IE11 doesn't support template literals
|
||||||
|
var btnMarkup = '<button hx-ext="response-targets" HX_TARGET="#d1" hx-get="/test">Click Me!</button>';
|
||||||
|
// forEach because IE11 doesn't play nice with closures inside for loops
|
||||||
|
attributes.forEach(function(attribute) {
|
||||||
|
it('supports ' + attribute, function() {
|
||||||
|
this.server.respondWith("GET", "/test", [404, {}, "Not found!"]);
|
||||||
|
var btn = make(btnMarkup.replace("HX_TARGET", attribute));
|
||||||
|
var div1 = make('<div id="d1"></div>')
|
||||||
|
btn.click();
|
||||||
|
this.server.respond();
|
||||||
|
div1.innerHTML.should.equal("Not found!");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -7,7 +7,8 @@ build_search_index = false
|
|||||||
generate_feed = true
|
generate_feed = true
|
||||||
|
|
||||||
taxonomies = [
|
taxonomies = [
|
||||||
{ name = "tag", render = false, feed = true }
|
{ name = "tag", render = false, feed = true },
|
||||||
|
{ name = "author", render = false, feed = false }
|
||||||
]
|
]
|
||||||
|
|
||||||
[markdown]
|
[markdown]
|
||||||
|
@ -73,6 +73,16 @@ Thank you to all our generous <a href="https://github.com/sponsors/bigskysoftwar
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 760px) {
|
||||||
|
|
||||||
|
/* Force table to not be like tables anymore */
|
||||||
|
table, thead, tbody, th, td, tr {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<div style="overflow-x: auto">
|
<div style="overflow-x: auto">
|
||||||
<table id="sponsor-table">
|
<table id="sponsor-table">
|
||||||
@ -81,11 +91,14 @@ Thank you to all our generous <a href="https://github.com/sponsors/bigskysoftwar
|
|||||||
<a href="https://www.jetbrains.com//"><img src="/img/jetbrains.png" style="max-width:30%;min-width:200px;"></a>
|
<a href="https://www.jetbrains.com//"><img src="/img/jetbrains.png" style="max-width:30%;min-width:200px;"></a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="https://github.blog/2023-04-12-github-accelerator-our-first-cohort-and-whats-next//"><img src="/img/Github_Logo.png" style="max-width:30%;min-width:200px;"></a>
|
<a href="https://www.nuclei.ai/"><img src="/img/nuclei_logo_with_text.svg" style="max-width:50%;min-width:200px;"></a>
|
||||||
</td>
|
</td>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td>
|
||||||
<a href="https://www.commspace.co.za/"><img src="/img/commspace.svg" style="width:100%;max-width:500px"></a>
|
<a href="https://github.blog/2023-04-12-github-accelerator-our-first-cohort-and-whats-next//"><img src="/img/Github_Logo.png" style="max-width:30%;min-width:200px;"></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://www.commspace.co.za/"><img src="/img/commspace.svg" style="width:100%;max-width:600px"></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@ -98,16 +111,6 @@ Thank you to all our generous <a href="https://github.com/sponsors/bigskysoftwar
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<a href="https://www.peakcrypto.com/">
|
|
||||||
<img alt="Peak Crypto" src="/img/peakcrypto.png" style="width:100%;max-width:65px">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="https://bigsky.software"><img src="/img/bss.png" style="width:100%;max-width:150px"></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -7,11 +7,10 @@ The `hx-on` attribute allows you to embed scripts inline to respond to events di
|
|||||||
`hx-on` improves upon `onevent` by enabling the handling of any event for enhanced [Locality of Behaviour (LoB)](/essays/locality-of-behaviour/). This also enables you to handle any htmx event.
|
`hx-on` improves upon `onevent` by enabling the handling of any event for enhanced [Locality of Behaviour (LoB)](/essays/locality-of-behaviour/). This also enables you to handle any htmx event.
|
||||||
|
|
||||||
There are two forms of this attribute, one in which you specify the event as part of the attribute name
|
There are two forms of this attribute, one in which you specify the event as part of the attribute name
|
||||||
after a colon (`hx-on:click`, for example), and one that uses the `hx-on` attribute directly. The
|
after a colon (`hx-on:click`, for example), and a deprecated form that uses the `hx-on` attribute directly. The
|
||||||
latter form should only be used if IE11 support is required.
|
latter should only be used if IE11 support is required.
|
||||||
|
|
||||||
### Forms
|
### hx-on:* (recommended)
|
||||||
#### hx-on:* (recommended)
|
|
||||||
The event name follows a colon `:` in the attribute, and the attribute value is the script to be executed:
|
The event name follows a colon `:` in the attribute, and the attribute value is the script to be executed:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
@ -40,22 +39,16 @@ events, and omit the "htmx" part:
|
|||||||
Adding multiple handlers is easy, you just specify additional attributes:
|
Adding multiple handlers is easy, you just specify additional attributes:
|
||||||
```html
|
```html
|
||||||
<button hx-get="/info"
|
<button hx-get="/info"
|
||||||
hx-on::before-request="alert('Making a request!'")
|
hx-on::before-request="alert('Making a request!')"
|
||||||
hx-on::after-request="alert('Done making a request!')">
|
hx-on::after-request="alert('Done making a request!')">
|
||||||
Get Info!
|
Get Info!
|
||||||
</button>
|
</button>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
#### hx-on (deprecated, except for IE11 support)
|
### hx-on (deprecated)
|
||||||
The value is an event name, followed by a colon `:`, followed by the script:
|
The value is an event name, followed by a colon `:`, followed by the script:
|
||||||
|
|
||||||
```html
|
|
||||||
<div hx-on="click: alert('Clicked!')">Click</div>
|
|
||||||
```
|
|
||||||
|
|
||||||
And htmx events:
|
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<button hx-get="/info" hx-on="htmx:beforeRequest: alert('Making a request!')">
|
<button hx-get="/info" hx-on="htmx:beforeRequest: alert('Making a request!')">
|
||||||
Get Info!
|
Get Info!
|
||||||
|
@ -24,6 +24,23 @@ This button will issue a `GET` to `/info` and then select the element with the i
|
|||||||
which will replace the entire button in the DOM, and, in addition, pick out an element with the id `alert`
|
which will replace the entire button in the DOM, and, in addition, pick out an element with the id `alert`
|
||||||
in the response and swap it in for div in the DOM with the same ID.
|
in the response and swap it in for div in the DOM with the same ID.
|
||||||
|
|
||||||
|
Each value in the comma separated list of values can specify any valid [`hx-swap`](@/attributes/hx-swap.md)
|
||||||
|
strategy by separating the selector and the swap strategy with a `:`.
|
||||||
|
|
||||||
|
For example, to prepend the alert content instead of replacing it:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div>
|
||||||
|
<div id="alert"></div>
|
||||||
|
<button hx-get="/info"
|
||||||
|
hx-select="#info-details"
|
||||||
|
hx-swap="outerHTML"
|
||||||
|
hx-select-oob="#alert:afterbegin">
|
||||||
|
Get Info!
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
* `hx-select-oob` is inherited and can be placed on a parent element
|
* `hx-select-oob` is inherited and can be placed on a parent element
|
||||||
|
@ -3,6 +3,7 @@ title = "10 Tips For Building SSR/HDA applications"
|
|||||||
date = 2022-06-13
|
date = 2022-06-13
|
||||||
updated = 2023-06-13
|
updated = 2023-06-13
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
+++
|
+++
|
||||||
title = "Essays"
|
title = "Essays"
|
||||||
insert_anchor_links = "left"
|
insert_anchor_links = "left"
|
||||||
|
page_template = "essay.html"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
### Hypermedia and REST
|
### Hypermedia and REST
|
||||||
|
@ -3,6 +3,7 @@ title = "A Real World React -> htmx Port"
|
|||||||
date = 2022-09-29
|
date = 2022-09-29
|
||||||
updated = 2022-10-15
|
updated = 2022-10-15
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "A Response To "Have Single-Page Apps Ruined the Web?""
|
|||||||
date = 2021-12-24
|
date = 2021-12-24
|
||||||
updated = 2022-05-27
|
updated = 2022-05-27
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Architectural Sympathy"
|
|||||||
date = 2023-04-06
|
date = 2023-04-06
|
||||||
updated = 2023-04-06
|
updated = 2023-04-06
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Complexity Budget"
|
|||||||
date = 2020-10-29
|
date = 2020-10-29
|
||||||
updated = 2022-02-06
|
updated = 2022-02-06
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,9 +3,11 @@ title = "HATEOAS"
|
|||||||
date = 2021-10-16
|
date = 2021-10-16
|
||||||
updated = 2022-02-06
|
updated = 2022-02-06
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
[extra]
|
[extra]
|
||||||
show_title = false
|
show_title = false
|
||||||
|
show_author = false
|
||||||
+++
|
+++
|
||||||
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
+++
|
+++
|
||||||
title = "How Did REST Come To Mean The Opposite of REST?"
|
title = "How Did REST Come To Mean The Opposite of REST?"
|
||||||
author = "Carson Gross <carson@bigsky.software>"
|
|
||||||
date = 2022-07-18
|
date = 2022-07-18
|
||||||
updated = 2022-11-26
|
updated = 2022-11-26
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
<h4>18 July 2022</h4>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
pre {
|
pre {
|
||||||
margin: 32px !important;
|
margin: 32px !important;
|
||||||
|
@ -3,6 +3,7 @@ title = "Hypermedia APIs vs. Data APIs"
|
|||||||
date = 2021-07-17
|
date = 2021-07-17
|
||||||
updated = 2022-04-07
|
updated = 2022-04-07
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Hypermedia Clients"
|
|||||||
date = 2023-01-28
|
date = 2023-01-28
|
||||||
updated = 2023-01-29
|
updated = 2023-01-29
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Hypermedia-Driven Applications"
|
|||||||
date = 2022-02-06
|
date = 2022-02-06
|
||||||
updated = 2022-10-18
|
updated = 2022-10-18
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ does not.
|
|||||||
In particular, HDAs continue to use [Hypermedia As The Engine of Application State (HATEOAS)](@/essays/hateoas.md), whereas
|
In particular, HDAs continue to use [Hypermedia As The Engine of Application State (HATEOAS)](@/essays/hateoas.md), whereas
|
||||||
most SPAs abandon HATEOAS in favor of a client-side model and data (rather than hypermedia) APIs.
|
most SPAs abandon HATEOAS in favor of a client-side model and data (rather than hypermedia) APIs.
|
||||||
|
|
||||||
## An Example SPA fragment
|
## An Example HDA fragment
|
||||||
|
|
||||||
Consider the htmx [Active Search](@/examples/active-search.md) example:
|
Consider the htmx [Active Search](@/examples/active-search.md) example:
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Hypermedia-Friendly Scripting"
|
|||||||
date = 2022-11-17
|
date = 2022-11-17
|
||||||
updated = 2022-11-29
|
updated = 2022-11-29
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title = "Hypermedia On Whatever you'd Like"
|
title = "Hypermedia On Whatever you'd Like"
|
||||||
date = 2023-05-23
|
date = 2023-05-23
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Locality of Behaviour (LoB)"
|
|||||||
date = 2020-05-29
|
date = 2020-05-29
|
||||||
updated = 2023-01-20
|
updated = 2023-01-20
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,9 +3,11 @@ title = "REST Copypasta"
|
|||||||
date = 2023-06-26
|
date = 2023-06-26
|
||||||
updated = 2023-06-26
|
updated = 2023-06-26
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
[extra]
|
[extra]
|
||||||
show_title = false
|
show_title = false
|
||||||
|
show_author = false
|
||||||
+++
|
+++
|
||||||
|
|
||||||
## REST copy-pastas
|
## REST copy-pastas
|
||||||
|
@ -3,6 +3,7 @@ title = "SPA Alternative"
|
|||||||
date = 2020-10-29
|
date = 2020-10-29
|
||||||
updated = 2022-02-06
|
updated = 2022-02-06
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Splitting Your Data & Application APIs: Going Further"
|
|||||||
date = 2021-09-16
|
date = 2021-09-16
|
||||||
updated = 2022-02-06
|
updated = 2022-02-06
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Template Fragments"
|
|||||||
date = 2022-08-03
|
date = 2022-08-03
|
||||||
updated = 2023-03-18
|
updated = 2023-03-18
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "Two Approaches To Decoupling"
|
|||||||
date = 2022-05-01
|
date = 2022-05-01
|
||||||
updated = 2022-05-01
|
updated = 2022-05-01
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ template = "demo.html"
|
|||||||
title = "View Transitions"
|
title = "View Transitions"
|
||||||
date = 2023-04-11
|
date = 2023-04-11
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title = "When Should You Use Hypermedia?"
|
|||||||
date = 2022-10-23
|
date = 2022-10-23
|
||||||
updated = 2023-02-03
|
updated = 2023-02-03
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
|
author = ["Carson Gross"]
|
||||||
tag = ["posts"]
|
tag = ["posts"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title = "response-targets"
|
title = "response-targets"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
This extension allows to specify different target elements to be swapped when
|
This extension allows you to specify different target elements to be swapped when
|
||||||
different HTTP response codes are received.
|
different HTTP response codes are received.
|
||||||
|
|
||||||
It uses attribute names in a form of ``hx-target-[CODE]`` where `[CODE]` is a numeric
|
It uses attribute names in a form of ``hx-target-[CODE]`` where `[CODE]` is a numeric
|
||||||
@ -101,6 +101,10 @@ be looked up (in the given order):
|
|||||||
* `hx-target-4*`
|
* `hx-target-4*`
|
||||||
* `hx-target-*`.
|
* `hx-target-*`.
|
||||||
|
|
||||||
|
|
||||||
|
_If you are using tools that do not support asterisks in HTML attributes, you
|
||||||
|
may instead use the `x` character, e.g., `hx-target-4xx`._
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
* `hx-target-…` is inherited and can be placed on a parent element.
|
* `hx-target-…` is inherited and can be placed on a parent element.
|
||||||
|
@ -14,7 +14,7 @@ Use the following attributes to configure how WebSockets behave:
|
|||||||
host and port to have browsers send cookies via websockets.
|
host and port to have browsers send cookies via websockets.
|
||||||
* `ws-send` - Sends a message to the nearest websocket based on the trigger value for the element (either the natural
|
* `ws-send` - Sends a message to the nearest websocket based on the trigger value for the element (either the natural
|
||||||
event
|
event
|
||||||
of the event specified by [`hx-trigger`])
|
or the event specified by [`hx-trigger`])
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
Name,URL
|
Name,URL
|
||||||
Devmode.fm - Dynamic HTML with htmx,https://devmode.fm/episodes/dynamic-html-with-htmx
|
devMode.fm - Dynamic HTML with htmx,https://devmode.fm/episodes/dynamic-html-with-htmx
|
||||||
JS Party - Less JavaScript more htmx,https://changelog.com/jsparty/171
|
JS Party - Less JavaScript more htmx,https://changelog.com/jsparty/171
|
||||||
Software Breakthroughs for the 21s Century,https://www.youtube.com/watch?v=O4ZFIx1ckSg
|
Software Breakthroughs for the 21st Century,https://www.youtube.com/watch?v=O4ZFIx1ckSg
|
||||||
|
HTML All The Things,https://www.htmlallthethings.com/blog-posts/htmx-hyperscript-and-more
|
||||||
Django Chat,https://djangochat.com/episodes/htmx-carson-gross
|
Django Chat,https://djangochat.com/episodes/htmx-carson-gross
|
||||||
Talk Python,https://talkpython.fm/episodes/show/321/htmx-clean-dynamic-html-pages
|
Talk Python,https://talkpython.fm/episodes/show/321/htmx-clean-dynamic-html-pages
|
||||||
.NET Rocks!,https://www.dotnetrocks.com/?show=1749
|
.NET Rocks!,https://www.dotnetrocks.com/?show=1749
|
||||||
"PyCharmIDE - Simple, Fast Frontends With htmx",https://www.youtube.com/watch?v=cBfz4W_KvEI
|
"PyCharmIDE - Simple, Fast Frontends With htmx",https://www.youtube.com/watch?v=cBfz4W_KvEI
|
||||||
JetBrainsTV - htmx: Writing JavaScript to Avoid Writing JavaScript,https://www.youtube.com/watch?v=u2rjnLJ1M98
|
JetBrainsTV - htmx: Writing JavaScript to Avoid Writing JavaScript,https://www.youtube.com/watch?v=u2rjnLJ1M98
|
||||||
"DjangoConUS - REST, HATEOAS & Django - It's OK to not use JSON... or Javascript",https://www.youtube.com/watch?v=L_UWY-zHlOA
|
"DjangoConUS - REST, HATEOAS & Django - It's OK to not use JSON... or Javascript",https://www.youtube.com/watch?v=L_UWY-zHlOA
|
||||||
|
devMode.fm - Hype for Hyperscript,https://devmode.fm/episodes/hype-for-hyperscript
|
||||||
|
JavaScript Jabber,https://topenddevs.com/podcasts/javascript-jabber/episodes/htmx-and-intercooler-ft-carson-gross-jsj-513
|
||||||
|
Chariot TechCast,https://chariotsolutions.com/podcast/techchat-tuesdays-48-carson-gross-and-htmx/
|
||||||
"airhacks.fm - HATEOAS, Data APIs, Java and How htmx Happened",https://airhacks.fm/#episode_200
|
"airhacks.fm - HATEOAS, Data APIs, Java and How htmx Happened",https://airhacks.fm/#episode_200
|
||||||
ChariotSolutions - Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture,https://www.youtube.com/watch?v=LRrrxQXWdhI
|
ChariotSolutions - Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture,https://www.youtube.com/watch?v=LRrrxQXWdhI
|
||||||
Go Time - Is htmx the way to Go?,https://changelog.com/gotime/266
|
Go Time - Is htmx the way to Go?,https://changelog.com/gotime/266
|
||||||
|
Kompilator - Complexity very very bad,https://kompilator.se/067
|
||||||
|
GitHub - Accelerator: Open Source Demo Day,https://www.youtube.com/watch?v=Gj6Bez2182k&t=1821s
|
||||||
|
Unfiltered Build - The HOWL stack is your new tech stack,https://podcast.unfilteredbuild.com/episodes/ep24-howl-stack-and-htmx-carson-gross/
|
||||||
|
FrontendRheinMain - htmx: Building modern web applications without JS,https://www.youtube.com/watch?v=Jodkvyo5DbA
|
||||||
|
|
88
www/static/img/nuclei_logo_with_text.svg
Normal file
88
www/static/img/nuclei_logo_with_text.svg
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 5563.000000 1400.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
<style>
|
||||||
|
path { fill: black; }
|
||||||
|
</style>
|
||||||
|
<g transform="translate(0.000000,1400.000000) scale(0.100000,-0.100000)"
|
||||||
|
stroke="none">
|
||||||
|
<path d="M6770 13354 c-239 -51 -430 -159 -636 -357 -273 -262 -496 -606 -703
|
||||||
|
-1083 -364 -842 -635 -2040 -746 -3304 -8 -96 -18 -198 -21 -227 l-5 -51 -182
|
||||||
|
-128 c-484 -338 -932 -692 -1372 -1083 -177 -157 -655 -636 -795 -796 -552
|
||||||
|
-634 -865 -1166 -972 -1656 -19 -89 -22 -133 -22 -299 0 -180 2 -203 27 -295
|
||||||
|
126 -468 517 -759 1157 -860 139 -22 586 -31 775 -16 299 24 614 73 941 147
|
||||||
|
200 44 535 132 679 178 l75 24 6 -27 c216 -911 484 -1601 817 -2101 468 -703
|
||||||
|
1058 -950 1623 -681 116 56 197 108 305 197 408 338 784 1024 1060 1932 70
|
||||||
|
234 65 318 -27 421 -59 65 -127 95 -219 94 -76 0 -116 -14 -182 -62 -56 -41
|
||||||
|
-85 -94 -127 -237 -183 -616 -420 -1136 -667 -1461 -84 -110 -244 -265 -325
|
||||||
|
-313 -137 -82 -285 -102 -415 -56 -403 142 -829 850 -1125 1866 -46 158 -154
|
||||||
|
582 -154 605 0 8 21 21 48 31 298 108 802 319 1160 485 118 55 217 99 220 99
|
||||||
|
3 0 69 -30 146 -66 1192 -564 2381 -937 3356 -1055 249 -31 758 -34 945 -6
|
||||||
|
610 89 988 345 1145 774 80 221 82 498 5 790 -74 280 -256 644 -487 973 -249
|
||||||
|
353 -610 766 -983 1122 l-140 133 128 120 c243 229 577 590 775 837 752 943
|
||||||
|
955 1731 588 2281 -338 508 -1118 685 -2246 511 -1340 -207 -3122 -925 -4745
|
||||||
|
-1912 -142 -87 -150 -90 -153 -68 -2 13 11 136 28 272 183 1477 557 2688 1026
|
||||||
|
3321 77 104 255 280 326 322 118 69 173 85 283 85 85 0 109 -3 163 -26 227
|
||||||
|
-94 430 -313 642 -692 144 -258 267 -550 391 -931 98 -302 99 -304 149 -359
|
||||||
|
124 -134 340 -118 452 33 35 48 58 117 58 172 0 85 -183 623 -318 934 -209
|
||||||
|
485 -431 828 -706 1092 -208 200 -402 309 -638 357 -95 20 -298 20 -388 0z
|
||||||
|
m4410 -3134 c243 -19 396 -53 545 -124 105 -50 206 -136 248 -214 87 -161 71
|
||||||
|
-402 -47 -692 -187 -457 -655 -1069 -1259 -1643 l-157 -150 -52 44 c-234 197
|
||||||
|
-667 527 -983 749 -332 234 -871 583 -951 616 -57 24 -175 16 -238 -16 -175
|
||||||
|
-89 -212 -338 -70 -471 22 -20 120 -87 219 -149 353 -221 808 -535 1135 -783
|
||||||
|
201 -153 480 -377 480 -385 -1 -10 -318 -261 -535 -424 -587 -439 -1243 -862
|
||||||
|
-1936 -1248 -481 -267 -1215 -623 -1684 -815 -224 -92 -468 -185 -473 -181
|
||||||
|
-13 14 -93 598 -127 928 -56 551 -75 904 -82 1531 -5 464 8 1146 23 1199 7 26
|
||||||
|
502 335 906 566 1481 849 3028 1444 4199 1616 327 48 606 63 839 46z m-6564
|
||||||
|
-2957 c-20 -902 57 -2027 200 -2906 20 -121 33 -221 31 -224 -9 -9 -301 -94
|
||||||
|
-492 -143 -352 -91 -664 -150 -980 -187 -211 -24 -638 -24 -790 0 -536 84
|
||||||
|
-741 303 -670 713 119 677 979 1725 2215 2695 114 90 483 368 489 369 2 0 1
|
||||||
|
-143 -3 -317z m6173 -926 c715 -710 1143 -1347 1227 -1827 68 -392 -130 -615
|
||||||
|
-626 -705 -127 -23 -513 -32 -703 -16 -780 66 -1741 336 -2801 788 -172 74
|
||||||
|
-245 109 -235 115 8 5 107 60 220 123 918 507 1807 1111 2608 1771 l26 22 30
|
||||||
|
-25 c16 -13 131 -124 254 -246z"/>
|
||||||
|
<path d="M6835 7745 c-296 -54 -520 -264 -602 -566 -24 -87 -23 -270 1 -358
|
||||||
|
96 -354 409 -585 766 -568 198 10 352 79 496 222 77 76 98 105 137 185 57 115
|
||||||
|
76 186 84 305 24 381 -258 724 -645 784 -88 14 -147 13 -237 -4z" style="fill:#2188ff"/>
|
||||||
|
<path d="M2667 10810 c-740 -67 -1187 -369 -1329 -898 -26 -97 -35 -330 -19
|
||||||
|
-456 62 -463 357 -1020 861 -1623 88 -107 110 -127 165 -154 152 -74 325 -15
|
||||||
|
396 135 51 107 36 224 -39 318 -20 25 -84 105 -142 176 -360 443 -588 864
|
||||||
|
-645 1188 -36 209 -2 356 112 475 137 144 360 221 718 249 322 26 807 -22
|
||||||
|
1280 -126 88 -19 191 -42 229 -50 84 -18 146 -8 224 36 119 69 172 220 122
|
||||||
|
352 -24 66 -69 121 -123 153 -92 53 -665 166 -1067 210 -171 19 -603 27 -743
|
||||||
|
15z"/>
|
||||||
|
<path d="M34665 10654 c-265 -27 -422 -55 -605 -111 -972 -294 -1631 -1120
|
||||||
|
-1835 -2300 -57 -332 -60 -382 -60 -1233 0 -852 4 -926 61 -1255 200 -1145
|
||||||
|
838 -1968 1763 -2274 286 -95 496 -125 866 -125 355 0 577 26 852 100 425 114
|
||||||
|
751 299 1044 593 203 204 331 388 450 651 117 255 215 618 244 903 l7 67 -301
|
||||||
|
0 -301 0 -4 -22 c-3 -13 -10 -57 -16 -98 -78 -511 -263 -924 -540 -1200 -328
|
||||||
|
-328 -777 -482 -1415 -484 -263 -1 -356 8 -547 55 -335 82 -600 237 -853 500
|
||||||
|
-323 336 -548 809 -645 1359 -51 293 -53 320 -57 1125 -5 794 -1 920 38 1190
|
||||||
|
52 360 133 632 274 920 121 248 263 445 448 621 283 270 599 423 1012 491 151
|
||||||
|
24 538 24 710 -1 404 -57 714 -190 967 -412 308 -271 524 -713 603 -1239 10
|
||||||
|
-60 19 -116 21 -122 3 -10 72 -13 305 -13 l301 0 -7 68 c-40 390 -174 817
|
||||||
|
-349 1117 -128 218 -329 456 -513 607 -332 271 -748 437 -1263 503 -118 16
|
||||||
|
-563 28 -655 19z"/>
|
||||||
|
<path d="M16740 7005 l0 -3555 300 0 300 0 0 3035 c0 1669 3 3035 8 3035 4 -1
|
||||||
|
923 -1365 2043 -3033 l2036 -3032 301 -3 302 -2 0 3555 0 3555 -295 0 -295 0
|
||||||
|
0 -3042 c-1 -2877 -2 -3042 -18 -3022 -9 11 -930 1380 -2047 3042 l-2030 3022
|
||||||
|
-302 0 -303 0 0 -3555z"/>
|
||||||
|
<path d="M24730 8078 c0 -1609 4 -2525 10 -2603 30 -345 103 -627 231 -894
|
||||||
|
194 -405 529 -740 950 -951 397 -200 868 -292 1404 -277 386 11 687 68 997
|
||||||
|
189 544 211 937 568 1178 1071 118 246 174 444 222 787 9 63 12 729 15 2623
|
||||||
|
l4 2537 -305 0 -306 0 -3 -2542 c-3 -2787 1 -2582 -59 -2843 -134 -579 -531
|
||||||
|
-1017 -1093 -1203 -236 -78 -433 -107 -745 -107 -394 0 -684 59 -962 194 -466
|
||||||
|
227 -773 626 -887 1154 -52 242 -51 161 -51 2849 l0 2498 -300 0 -300 0 0
|
||||||
|
-2482z"/>
|
||||||
|
<path d="M39910 7005 l0 -3555 2060 0 2060 0 0 255 0 255 -1760 0 -1760 0 0
|
||||||
|
3300 0 3300 -300 0 -300 0 0 -3555z"/>
|
||||||
|
<path d="M46180 7005 l0 -3555 2210 0 2210 0 0 255 0 255 -1910 0 -1910 0 0
|
||||||
|
1450 0 1450 1660 0 1660 0 0 255 0 255 -1660 0 -1660 0 0 1340 0 1340 1900 0
|
||||||
|
1900 0 0 255 0 255 -2200 0 -2200 0 0 -3555z"/>
|
||||||
|
<path d="M53000 7005 l0 -3555 300 0 300 0 0 3555 0 3555 -300 0 -300 0 0
|
||||||
|
-3555z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
@ -7,7 +7,7 @@ require (
|
|||||||
github.com/benpate/htmlconv v0.3.0
|
github.com/benpate/htmlconv v0.3.0
|
||||||
github.com/labstack/echo/v4 v4.9.0
|
github.com/labstack/echo/v4 v4.9.0
|
||||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
|
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
|
||||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f
|
golang.org/x/net v0.7.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@ -16,7 +16,7 @@ require (
|
|||||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasttemplate v1.2.1 // indirect
|
github.com/valyala/fasttemplate v1.2.1 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
|
golang.org/x/crypto v0.1.0 // indirect
|
||||||
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect
|
golang.org/x/sys v0.5.0 // indirect
|
||||||
golang.org/x/text v0.3.7 // indirect
|
golang.org/x/text v0.7.0 // indirect
|
||||||
)
|
)
|
||||||
|
@ -26,26 +26,51 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
|
|||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
|
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
|
||||||
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||||
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
|
||||||
|
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
|
|
||||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||||
|
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||||
|
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b h1:1VkfZQv42XQlA/jchYumAnv1UPo6RgF9rJFkTgZIxO4=
|
|
||||||
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||||
|
@ -3,21 +3,19 @@ module github.com/benpate/ghost
|
|||||||
go 1.17
|
go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/labstack/echo/v4 v4.3.0
|
github.com/labstack/echo/v4 v4.9.0
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
|
golang.org/x/net v0.7.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
|
github.com/labstack/gommon v0.3.1 // indirect
|
||||||
github.com/labstack/gommon v0.3.0 // indirect
|
github.com/mattn/go-colorable v0.1.11 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.8 // indirect
|
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.12 // indirect
|
|
||||||
github.com/stretchr/testify v1.7.0 // indirect
|
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasttemplate v1.2.1 // indirect
|
github.com/valyala/fasttemplate v1.2.1 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
|
golang.org/x/crypto v0.1.0 // indirect
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
|
golang.org/x/sys v0.5.0 // indirect
|
||||||
golang.org/x/text v0.3.6 // indirect
|
golang.org/x/text v0.7.0 // indirect
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
|
||||||
)
|
)
|
||||||
|
@ -1,52 +1,71 @@
|
|||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||||
github.com/labstack/echo/v4 v4.3.0 h1:DCP6cbtT+Zu++K6evHOJzSgA2115cPMuCx0xg55q1EQ=
|
github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY=
|
||||||
github.com/labstack/echo/v4 v4.3.0/go.mod h1:PvmtTvhVqKDzDQy4d3bWzPjZLzom4iQbAZy2sgZ/qI8=
|
github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
|
||||||
github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=
|
github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
|
||||||
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
|
github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
|
||||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs=
|
||||||
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
|
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
|
||||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
|
||||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
|
||||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
|
||||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
|
||||||
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
|
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
|
||||||
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
|
||||||
|
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
|
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
@ -129,6 +129,10 @@ table {
|
|||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
time {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: var(--midBlue)
|
color: var(--midBlue)
|
||||||
|
34
www/themes/htmx-theme/templates/essay.html
Normal file
34
www/themes/htmx-theme/templates/essay.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{% if page.title -%}
|
||||||
|
{% set html_title = "</> htmx ~ " ~ page.title -%}
|
||||||
|
{% endif -%}
|
||||||
|
{% endblock title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
{% if page.extra and page.extra.show_title is defined -%}
|
||||||
|
{% set show_title = page.extra.show_title -%}
|
||||||
|
{% else -%}
|
||||||
|
{% set show_title = true -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% if page.extra and page.extra.show_author is defined -%}
|
||||||
|
{% set show_author = page.extra.show_author -%}
|
||||||
|
{% else -%}
|
||||||
|
{% set show_author = true -%}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set page_title = page.title -%}
|
||||||
|
{% if show_title %}<h1>{{ page_title | safe }}</h1>{% endif %}
|
||||||
|
{% if show_author and page.taxonomies.author %}
|
||||||
|
<address>{{ page.taxonomies.author | join(sep=", ") }}</address>
|
||||||
|
<time>{{ page.date | date(format="%B %d, %Y") }}</time>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ page.content | safe }}
|
||||||
|
<div style="padding-top: 120px;padding-bottom:40px;text-align: center">
|
||||||
|
</>
|
||||||
|
</div>
|
||||||
|
{% endblock content %}
|
@ -27,9 +27,4 @@
|
|||||||
{% endif -%}
|
{% endif -%}
|
||||||
{% if show_title %}<h1>{{ page_title | safe }}</h1>{% endif %}
|
{% if show_title %}<h1>{{ page_title | safe }}</h1>{% endif %}
|
||||||
{{ page.content | safe }}
|
{{ page.content | safe }}
|
||||||
{% if page.path is starting_with("/essays/") -%}
|
|
||||||
<div style="padding-top: 120px;padding-bottom:40px;text-align: center">
|
|
||||||
</>
|
|
||||||
</div>
|
|
||||||
{% endif -%}
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user