Who is asking — as a seam, not a decision.
This store never authenticates anyone. A deployment already has an identity
system: OIDC, a session cookie, an API key, a signed header from a gateway.
It supplies an identify-fn of the request that yields
{:customer/ref :customer/email} or nil, and the boundary upserts a customer
from that.
Two implementations ship: one for a demo and one for machine clients. Neither is an authentication system, and both say so.
Who is asking — as a seam, not a decision.
This store never authenticates anyone. A deployment already has an identity
system: OIDC, a session cookie, an API key, a signed header from a gateway.
It supplies an `identify-fn` of the request that yields
{:customer/ref :customer/email} or nil, and the boundary upserts a customer
from that.
Two implementations ship: one for a demo and one for machine clients. Neither
is an authentication system, and both say so.The HTTP surface.
Thin on purpose: a handler resolves who is asking, calls one pipeline
operation, and projects the result through wire. Every decision worth
testing lives below this namespace, where it can be tested without a
request.
The HTTP surface. Thin on purpose: a handler resolves who is asking, calls one pipeline operation, and projects the result through `wire`. Every decision worth testing lives below this namespace, where it can be tested without a request.
The SPA shell — as DATA, not as a file with holes in it.
The document is hiccup, so writing an experiment assignment into it is
merge on an attribute map. An earlier version of this namespace kept the
shell as HTML and spliced attributes in with a regex; it rewrote a COMMENT
that happened to mention <html>, and the assignment silently never reached
the browser. That class of bug does not exist here: a map has no second place
to put a key.
Setting the arm server-side is what makes an experiment free — the stylesheet already contains every arm, so the first paint is the assigned design, with no script, no round trip, and no flash of the losing variant.
The SPA shell — as DATA, not as a file with holes in it. The document is hiccup, so writing an experiment assignment into it is `merge` on an attribute map. An earlier version of this namespace kept the shell as HTML and spliced attributes in with a regex; it rewrote a COMMENT that happened to mention `<html>`, and the assignment silently never reached the browser. That class of bug does not exist here: a map has no second place to put a key. Setting the arm server-side is what makes an experiment free — the stylesheet already contains every arm, so the first paint is the assigned design, with no script, no round trip, and no flash of the losing variant.
Domain values as wire shapes.
One namespace decides what leaves the process. Everything here is a projection: keys are renamed and amounts are rendered for display, and anything the customer has no business seeing simply has no clause.
Domain values as wire shapes. One namespace decides what leaves the process. Everything here is a projection: keys are renamed and amounts are rendered for display, and anything the customer has no business seeing simply has no clause.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |