9873c184d69929ac4b691e234afdc2c323c72fc6
src/checkout/ holds code without the PayPal SDK or Strapi at runtime, so it can be unit tested without node_modules: - vat.ts: vatIncludedDecimal and vatDecimal. config/constants.ts re-exports them under the same names and keeps vatDecimalExcluded. - pricing.ts: calculateTotalProductPrice, unchanged. The product service re-exports it, so every importer keeps working. - paypal-order.ts: the order request createSessionOrThrow builds, in two halves. buildPayPalOrderItems (the total guard and the unsent items) still runs before the try block, and buildPayPalOrderRequest inside it. Errors and log lines stay as they were, for every input. The SDK enums are replaced by their string values (CAPTURE, SET_PROVIDED_ADDRESS). No behaviour change. Refs libretech/mp#71
libreshop/cms
Strapi-based content backend (catalogue, orders, customers).
Part of the libreshop toolkit. Image
published at git.librete.ch/libreshop/cms on every push to main
and on v* tags.
Source
This repo was extracted from mp/cms/ on 2026-04-29; mp was the
first concrete adapter consuming the toolkit. mp's compose.yml now
pulls git.librete.ch/libreshop/cms:<pin> instead of building locally.
Build locally
docker build -t libreshop/cms:dev .
Adapter contract
See docker-entrypoint.sh and Dockerfile for the runtime surface.
Adapters configure the component via env vars and bind-mounted volumes;
do not patch the running container or rely on internal paths.
Languages
TypeScript
91.9%
Shell
7.2%
JavaScript
0.6%
Dockerfile
0.3%