From 1acb666892c541b7280046a168e5c8a621fd5640 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Wed, 14 Oct 2026 13:08:55 +0200 Subject: [PATCH 01/22] chore: rename repo --- .changeset/config.json | 2 +- package.json | 6 +++--- scripts/npm-trust.ts | 2 +- scripts/split.ts | 18 +++++++++--------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index 7ad52953..2c877d65 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,6 +1,6 @@ { "$schema": "https://unpkg.com/@changesets/config@4.0.1/schema.json", - "changelog": ["@changesets/changelog-github", { "repo": "TrialAndErrorOrg/parsers" }], + "changelog": ["@changesets/changelog-github", { "repo": "TrialAndErrorOrg/trialanderror" }], "commit": false, "fixed": [], "linked": [], diff --git a/package.json b/package.json index e2c48789..955d5d1e 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { - "name": "jote", + "name": "trialanderror", "version": "0.0.1", "private": true, "type": "module", "license": "GPL-3.0-or-later", - "repository": "https://github.com/TrialAndErrorOrg/parsers", + "repository": "https://github.com/TrialAndErrorOrg/trialanderror", "author": "Thomas F. K. Jorna ", - "description": "JOTE parsers monorepo", + "description": "Monorepo for almost development work done by the Center of Trial and Error", "packageManager": "pnpm@11.3.0", "engines": { "node": ">=24" diff --git a/scripts/npm-trust.ts b/scripts/npm-trust.ts index dc2528a7..b22e752b 100644 --- a/scripts/npm-trust.ts +++ b/scripts/npm-trust.ts @@ -16,7 +16,7 @@ import { setTimeout as sleep } from 'node:timers/promises' import { promisify } from 'node:util' import { publishablePackages } from './workspace-packages.ts' -const REPOSITORY = 'TrialAndErrorOrg/parsers' +const REPOSITORY = 'TrialAndErrorOrg/trialanderror' const WORKFLOW = 'release.yml' const run = promisify(execFile) diff --git a/scripts/split.ts b/scripts/split.ts index 4aa855f6..25061167 100644 --- a/scripts/split.ts +++ b/scripts/split.ts @@ -24,7 +24,7 @@ import { promisify } from 'node:util' import { publishablePackages, workspaceRoot } from './workspace-packages.ts' const ORG = 'TrialAndErrorOrg' -const MONOREPO = `${ORG}/parsers` +const MONOREPO = `${ORG}/trialanderror` // committer of the snapshot commits const BOT = ['github-actions[bot]', '41898282+github-actions[bot]@users.noreply.github.com'] @@ -39,9 +39,9 @@ const exec = promisify(execFile) // in CI the token is the only git credential; locally the user's own credential helper is used const auth = process.env.GH_TOKEN ? [ - '-c', - `http.https://github.com/.extraheader=AUTHORIZATION: basic ${Buffer.from(`x-access-token:${token}`).toString('base64')}`, - ] + '-c', + `http.https://github.com/.extraheader=AUTHORIZATION: basic ${Buffer.from(`x-access-token:${token}`).toString('base64')}`, + ] : [] const git = async (gitArgs: string[], env?: Record) => ( @@ -165,11 +165,11 @@ for (const p of plans) { const branch = p.existing?.default_branch ?? 'main' const head = p.existing ? ( - await api<{ object: { sha: string } }>( - 'GET', - `repos/${ORG}/${p.repo}/git/ref/heads/${branch}`, - ) - )?.object.sha + await api<{ object: { sha: string } }>( + 'GET', + `repos/${ORG}/${p.repo}/git/ref/heads/${branch}`, + ) + )?.object.sha : undefined if (head) await git(['fetch', '--quiet', '--no-tags', '--depth=1', url, head]) From c652be53aaa8264df3bd42af9c48ca4072defd5c Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Wed, 14 Oct 2026 13:19:27 +0200 Subject: [PATCH 02/22] feat(sveltia-gateway): single sign-on gateway for Sveltia CMS Editors sign in with Microsoft Entra ID, Google or any OpenID Connect provider and edit a GitHub repository without a GitHub account. The gateway answers who is signed in from a signed session and passes the CMS's GitHub calls on as a GitHub App, after checking them against default-deny rules for repository, branches, paths and GraphQL mutations. No database and no runtime dependencies, so it runs on Cloudflare Workers, Node, Deno and Bun. MIT licensed. --- libs/sveltia-gateway/LICENSE | 21 + libs/sveltia-gateway/README.md | 163 ++++++++ libs/sveltia-gateway/examples/astro/README.md | 29 ++ .../examples/cloudflare-worker/package.json | 15 + .../examples/cloudflare-worker/src/index.ts | 37 ++ .../examples/cloudflare-worker/wrangler.toml | 10 + libs/sveltia-gateway/examples/node/server.mjs | 68 ++++ libs/sveltia-gateway/package.json | 45 ++ libs/sveltia-gateway/src/encoding.ts | 39 ++ libs/sveltia-gateway/src/gateway.test.ts | 384 ++++++++++++++++++ libs/sveltia-gateway/src/gateway.ts | 267 ++++++++++++ libs/sveltia-gateway/src/github.ts | 128 ++++++ libs/sveltia-gateway/src/identity.ts | 271 ++++++++++++ libs/sveltia-gateway/src/index.ts | 14 + libs/sveltia-gateway/src/popup.ts | 45 ++ libs/sveltia-gateway/src/rules.test.ts | 151 +++++++ libs/sveltia-gateway/src/rules.ts | 192 +++++++++ libs/sveltia-gateway/src/signed.ts | 48 +++ libs/sveltia-gateway/tsconfig.json | 7 + libs/sveltia-gateway/tsconfig.lib.json | 18 + libs/sveltia-gateway/vitest.config.ts | 1 + pnpm-lock.yaml | 2 + 22 files changed, 1955 insertions(+) create mode 100644 libs/sveltia-gateway/LICENSE create mode 100644 libs/sveltia-gateway/README.md create mode 100644 libs/sveltia-gateway/examples/astro/README.md create mode 100644 libs/sveltia-gateway/examples/cloudflare-worker/package.json create mode 100644 libs/sveltia-gateway/examples/cloudflare-worker/src/index.ts create mode 100644 libs/sveltia-gateway/examples/cloudflare-worker/wrangler.toml create mode 100644 libs/sveltia-gateway/examples/node/server.mjs create mode 100644 libs/sveltia-gateway/package.json create mode 100644 libs/sveltia-gateway/src/encoding.ts create mode 100644 libs/sveltia-gateway/src/gateway.test.ts create mode 100644 libs/sveltia-gateway/src/gateway.ts create mode 100644 libs/sveltia-gateway/src/github.ts create mode 100644 libs/sveltia-gateway/src/identity.ts create mode 100644 libs/sveltia-gateway/src/index.ts create mode 100644 libs/sveltia-gateway/src/popup.ts create mode 100644 libs/sveltia-gateway/src/rules.test.ts create mode 100644 libs/sveltia-gateway/src/rules.ts create mode 100644 libs/sveltia-gateway/src/signed.ts create mode 100644 libs/sveltia-gateway/tsconfig.json create mode 100644 libs/sveltia-gateway/tsconfig.lib.json create mode 100644 libs/sveltia-gateway/vitest.config.ts diff --git a/libs/sveltia-gateway/LICENSE b/libs/sveltia-gateway/LICENSE new file mode 100644 index 00000000..30ecb833 --- /dev/null +++ b/libs/sveltia-gateway/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Thomas F. K. Jorna + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/libs/sveltia-gateway/README.md b/libs/sveltia-gateway/README.md new file mode 100644 index 00000000..d62fa2a4 --- /dev/null +++ b/libs/sveltia-gateway/README.md @@ -0,0 +1,163 @@ +# sveltia-gateway + +Single sign-on for [Sveltia CMS](https://github.com/sveltia/sveltia-cms). Editors sign in with +Microsoft Entra ID, Google or any OpenID Connect provider, and never need a GitHub account. + +- **No database.** Sessions are signed tokens, so the gateway keeps no state. +- **Runs anywhere** that speaks Web `Request` and `Response`: Cloudflare Workers, Node 20+, Deno, + Bun, or a route in Astro, Next.js, SvelteKit or Hono. +- **No runtime dependencies.** Web Crypto does the signing. +- **Default deny.** Editors reach one repository, commit only to the branches and paths you + open, and only through the calls Sveltia makes. + +## How it works + +Sveltia CMS normally talks to GitHub straight from the browser, with the editor's own GitHub +token. The gateway stands in for both GitHub's sign-in and GitHub's API: + +``` +Sveltia CMS ──sign in──▶ /auth ──▶ your identity provider ──▶ /callback ──▶ session back to the CMS +Sveltia CMS ──API calls with the session──▶ /api/... ──rules──▶ GitHub, as your GitHub App +``` + +- `/auth` and `/callback` run the OpenID Connect authorization code flow with PKCE and a nonce, + check the ID token's signature against the provider's keys, and hand the CMS a signed session + through the same popup handshake that Netlify and `sveltia-cms-auth` use. +- `/api/...` is what the CMS uses as GitHub's API. It answers "who am I" from the session, checks + every other call against the rules, and passes allowed ones to GitHub with a short-lived token + of a GitHub App that is installed on the content repository only. That token never reaches the + browser. + +## Setup + +### 1. A GitHub App + +In the organisation or account that owns the content repository: Settings, Developer settings, +GitHub Apps, New GitHub App. + +- Homepage URL: anything, e.g. your site. Uncheck **Webhook**. +- Repository permissions: **Contents** read and write, **Pull requests** read and write (the + second only matters for Sveltia's editorial workflow). +- Create it, note the **App ID**, and generate a **private key** (a `.pem` file). +- Install the app, on the content repository only. + +### 2. An identity provider + +**Microsoft Entra ID.** In the Entra admin center, App registrations, New registration: + +- Supported account types: this organisational directory only. +- Redirect URI (Web): `https:///callback`. +- Certificates and secrets: a new client secret. +- Note the **Directory (tenant) ID** and **Application (client) ID**. +- Decide who may sign in: Enterprise applications, your app, Properties, **Assignment required** + yes, then Users and groups, add the editors or a group. + +**Google.** In Google Cloud, APIs and Services, Credentials, an OAuth client ID of type Web +application, with the same redirect URI. Pass `domain` to admit only your Workspace. + +**Anything else** with OpenID Connect (Okta, Keycloak, Authentik, Auth0, GitLab...): `oidc()` +with its issuer URL. + +### 3. Run the gateway + +Inside your site, as a catch-all route (Astro shown, see `examples/astro`): + +```ts +import { createGateway, entra } from "sveltia-gateway"; + +const gateway = createGateway({ + identity: entra({ tenantId: TENANT_ID, clientId: CLIENT_ID, clientSecret: CLIENT_SECRET }), + github: { repo: "owner/name", appId: GITHUB_APP_ID, privateKey: GITHUB_APP_PRIVATE_KEY }, + sessionSecret: SESSION_SECRET, // 32+ random characters + basePath: "/admin", + paths: ["src/content/**", "public/uploads/**"], +}); + +export const ALL = ({ request }) => gateway.fetch(request); +``` + +Or on its own Cloudflare Worker, for a CMS hosted anywhere (`examples/cloudflare-worker`). Then +list the site in `allowedOrigins`. + +### 4. Point Sveltia CMS at it + +In the CMS's `config.yml`: + +```yaml +backend: + name: github + repo: owner/name + branch: main + base_url: https://example.org # where the gateway runs + auth_endpoint: admin/auth # basePath + /auth, without the leading slash + api_root: https://example.org/admin/api + # Commits are made by the GitHub App, so put the editor in the message + commit_messages: + create: "Create {{collection}} “{{slug}}” (by {{author-name}})" + update: "Update {{collection}} “{{slug}}” (by {{author-name}})" + delete: "Delete {{collection}} “{{slug}}” (by {{author-name}})" + uploadMedia: "Upload “{{path}}” (by {{author-name}})" + deleteMedia: "Delete “{{path}}” (by {{author-name}})" +``` + +Sveltia adds `/api/v3` and `/api/graphql` to a custom `api_root`, as it does for GitHub +Enterprise. The gateway accepts both. + +## Options + +| Option | Default | | +|---|---|---| +| `identity` | required | `entra()`, `google()`, `oidc()`, or `testIdentity()` locally | +| `github` | required | `{ repo, appId, privateKey }`, or `{ repo, token }` for testing. `apiRoot` for GitHub Enterprise Server | +| `sessionSecret` | required | 32+ characters. Changing it signs everyone out | +| `basePath` | `""` | Prefix of the routes, e.g. `/admin` | +| `branches` | `["main", "cms/**"]` | Branches commits may go to. `*` stays within a name, `**` crosses slashes | +| `paths` | any | Paths commits may touch | +| `readOnly` | `false` | Refuse every write | +| `dispatches` | `true` | Let the CMS trigger a deploy through `repository_dispatch` | +| `sessionTtl` | 8 hours | In seconds | +| `allowedOrigins` | the gateway's own | Sites whose CMS may use the gateway | +| `publicUrl` | from the request | The gateway's public URL, if a proxy hides it | +| `onRefused` | none | Called with the reason for every refused call or sign-in, for logging | + +`entra()`, `google()` and `oidc()` all take `allow(claims)` to narrow who may sign in, e.g. by +group or email, and `toEditor(claims)` to change the name and email the CMS shows. + +## What editors can do + +Everything else is refused with a 403 and a reason. + +- Read the content repository (REST and GraphQL). Queries naming another repository are refused. +- Commit with `createCommitOnBranch` to an open branch, changing only open paths. +- Create, update and delete open branches, open and merge pull requests and set their labels, + for the editorial workflow. +- Trigger `repository_dispatch`, unless `dispatches: false`. + +## Try it locally + +```sh +pnpm install && pnpm build +REPO=owner/name GITHUB_TOKEN=$(gh auth token) FOLDER=content node examples/node/server.mjs +``` + +Then open http://localhost:8788/admin/. Everyone is signed in as a test editor, GitHub is reached +with your own token, and writes are refused unless `READ_ONLY=false`. + +## Limits + +- **GitHub only** for now. GitLab and Forgejo would need their own API rules. +- **Commits are by the app.** GitHub's `createCommitOnBranch` takes no author, so the editor's + name goes in the commit message (see `commit_messages` above). +- **Sessions can't be revoked one by one.** They expire after `sessionTtl`. Changing + `sessionSecret` signs everyone out. Removing someone in the identity provider stops their next + sign-in. +- **The editorial workflow** (branches and pull requests) follows Sveltia's calls but has had less + testing than plain saving. + +## Credits + +Builds on the ideas of [sveltia-cms-auth](https://github.com/sveltia/sveltia-cms-auth) (the +popup handshake) and [sveltia-identity-translator](https://github.com/andrewdunndev/sveltia-identity-translator) +(answering "who am I" from the session, default deny), which does the same for GitLab and Google. + +MIT licence. diff --git a/libs/sveltia-gateway/examples/astro/README.md b/libs/sveltia-gateway/examples/astro/README.md new file mode 100644 index 00000000..69bc47ee --- /dev/null +++ b/libs/sveltia-gateway/examples/astro/README.md @@ -0,0 +1,29 @@ +# In an Astro site + +With an adapter (any server output), add one catch-all route next to the CMS +page, e.g. `src/pages/admin/[...gateway].ts`: + +```ts +import type { APIRoute } from "astro"; +import { createGateway, entra } from "sveltia-gateway"; + +export const prerender = false; + +const gateway = createGateway({ + identity: entra({ + tenantId: import.meta.env.ENTRA_TENANT_ID, + clientId: import.meta.env.ENTRA_CLIENT_ID, + clientSecret: import.meta.env.ENTRA_CLIENT_SECRET, + }), + github: { repo: "owner/name", appId: import.meta.env.GITHUB_APP_ID, privateKey: import.meta.env.GITHUB_APP_PRIVATE_KEY }, + sessionSecret: import.meta.env.SESSION_SECRET, + basePath: "/admin", +}); + +export const ALL: APIRoute = ({ request }) => gateway.fetch(request); +``` + +`src/pages/admin/index.astro` (the CMS page) and `admin/config.yml` still win +over the catch-all, because Astro prefers more specific routes. The same +three lines work in a Next.js route handler, SvelteKit `+server.ts`, Hono or +anything else that hands you a `Request`. diff --git a/libs/sveltia-gateway/examples/cloudflare-worker/package.json b/libs/sveltia-gateway/examples/cloudflare-worker/package.json new file mode 100644 index 00000000..5216f6c7 --- /dev/null +++ b/libs/sveltia-gateway/examples/cloudflare-worker/package.json @@ -0,0 +1,15 @@ +{ + "name": "sveltia-gateway-worker", + "private": true, + "type": "module", + "scripts": { + "dev": "wrangler dev", + "deploy": "wrangler deploy" + }, + "dependencies": { + "sveltia-gateway": "^0.1.0" + }, + "devDependencies": { + "wrangler": "^4.0.0" + } +} diff --git a/libs/sveltia-gateway/examples/cloudflare-worker/src/index.ts b/libs/sveltia-gateway/examples/cloudflare-worker/src/index.ts new file mode 100644 index 00000000..3d4cc9dd --- /dev/null +++ b/libs/sveltia-gateway/examples/cloudflare-worker/src/index.ts @@ -0,0 +1,37 @@ +import { createGateway, entra } from 'sveltia-gateway' + +/* + * The gateway on its own Worker, for a CMS hosted anywhere else. Secrets + * (wrangler secret put): ENTRA_CLIENT_SECRET, GITHUB_APP_PRIVATE_KEY, + * SESSION_SECRET. The rest is in wrangler.toml. + */ + +interface Env { + ENTRA_TENANT_ID: string + ENTRA_CLIENT_ID: string + ENTRA_CLIENT_SECRET: string + GITHUB_APP_ID: string + GITHUB_APP_PRIVATE_KEY: string + REPO: string + SESSION_SECRET: string + /** Comma-separated origins of the sites whose CMS uses this Worker */ + ALLOWED_ORIGINS: string +} + +let gateway: ReturnType | undefined + +export default { + fetch(request: Request, env: Env) { + gateway ??= createGateway({ + identity: entra({ + tenantId: env.ENTRA_TENANT_ID, + clientId: env.ENTRA_CLIENT_ID, + clientSecret: env.ENTRA_CLIENT_SECRET, + }), + github: { repo: env.REPO, appId: env.GITHUB_APP_ID, privateKey: env.GITHUB_APP_PRIVATE_KEY }, + sessionSecret: env.SESSION_SECRET, + allowedOrigins: env.ALLOWED_ORIGINS.split(',').map((origin) => origin.trim()), + }) + return gateway.fetch(request) + }, +} diff --git a/libs/sveltia-gateway/examples/cloudflare-worker/wrangler.toml b/libs/sveltia-gateway/examples/cloudflare-worker/wrangler.toml new file mode 100644 index 00000000..8cda550d --- /dev/null +++ b/libs/sveltia-gateway/examples/cloudflare-worker/wrangler.toml @@ -0,0 +1,10 @@ +name = "sveltia-gateway" +main = "src/index.ts" +compatibility_date = "2026-09-01" + +[vars] +ENTRA_TENANT_ID = "00000000-0000-0000-0000-000000000000" +ENTRA_CLIENT_ID = "00000000-0000-0000-0000-000000000000" +GITHUB_APP_ID = "123456" +REPO = "owner/name" +ALLOWED_ORIGINS = "https://example.org" diff --git a/libs/sveltia-gateway/examples/node/server.mjs b/libs/sveltia-gateway/examples/node/server.mjs new file mode 100644 index 00000000..66c63a7f --- /dev/null +++ b/libs/sveltia-gateway/examples/node/server.mjs @@ -0,0 +1,68 @@ +// Try the gateway locally with Sveltia CMS, without an identity provider or a +// GitHub App: everyone is signed in as a test editor, GitHub is reached with +// your own token, and writes are refused. +// +// pnpm build +// REPO=owner/name GITHUB_TOKEN=$(gh auth token) node examples/node/server.mjs +// open http://localhost:8788/admin/ + +import { createServer } from 'node:http' +import { randomBytes } from 'node:crypto' +import { createGateway, testIdentity } from '../../dist/index.js' + +const repo = process.env.REPO +const branch = process.env.BRANCH ?? 'main' +if (!repo || !process.env.GITHUB_TOKEN) throw new Error('Set REPO=owner/name and GITHUB_TOKEN') + +const gateway = createGateway({ + identity: testIdentity(), + github: { repo, token: process.env.GITHUB_TOKEN }, + sessionSecret: randomBytes(32).toString('hex'), + basePath: '/admin', + branches: [branch, 'cms/**'], + readOnly: process.env.READ_ONLY !== 'false', +}) + +const page = ` +Sveltia gateway test + +` + +const config = (origin) => `backend: + name: github + repo: ${repo} + branch: ${branch} + base_url: ${origin} + auth_endpoint: admin/auth + api_root: ${origin}/admin/api +media_folder: ${process.env.MEDIA ?? 'static/uploads'} +collections: + - name: files + label: Files + folder: ${process.env.FOLDER ?? '.'} + extension: ${process.env.EXTENSION ?? 'md'} + fields: [{ name: title, label: Title, widget: string }] +` + +createServer(async (req, res) => { + const url = new URL(`http://${req.headers.host}${req.url}`) + if (url.pathname === '/admin/' || url.pathname === '/admin') + return send(res, new Response(page, { headers: { 'Content-Type': 'text/html' } })) + if (url.pathname === '/admin/config.yml') + return send( + res, + new Response(config(url.origin), { headers: { 'Content-Type': 'application/yaml' } }), + ) + + const body = + req.method === 'GET' || req.method === 'HEAD' + ? undefined + : await new Response(req).arrayBuffer() + const request = new Request(url, { method: req.method, headers: req.headers, body }) + send(res, await gateway.fetch(request)) +}).listen(8788, () => console.log('http://localhost:8788/admin/')) + +async function send(res, response) { + res.writeHead(response.status, Object.fromEntries(response.headers)) + res.end(Buffer.from(await response.arrayBuffer())) +} diff --git a/libs/sveltia-gateway/package.json b/libs/sveltia-gateway/package.json new file mode 100644 index 00000000..4097f7ce --- /dev/null +++ b/libs/sveltia-gateway/package.json @@ -0,0 +1,45 @@ +{ + "name": "sveltia-gateway", + "version": "0.1.0", + "description": "Single sign-on for Sveltia CMS: editors sign in with Microsoft Entra ID, Google or any OpenID Connect provider, no GitHub account needed. Runs on Cloudflare Workers, Node, Deno or Bun, without a database.", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/TrialAndErrorOrg/trialanderror.git", + "directory": "libs/sveltia-gateway" + }, + "homepage": "https://github.com/TrialAndErrorOrg/trialanderror/tree/main/libs/sveltia-gateway#readme", + "author": "Thomas F. K. Jorna ", + "type": "module", + "keywords": [ + "sveltia", + "sveltia-cms", + "decap-cms", + "cms", + "oidc", + "sso", + "entra", + "github-app", + "cloudflare-workers" + ], + "exports": { + ".": { + "@jote/source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "engines": { + "node": ">=20" + }, + "scripts": { + "build": "tsc -p tsconfig.lib.json", + "typecheck": "tsc -p tsconfig.json", + "test": "vitest run" + } +} diff --git a/libs/sveltia-gateway/src/encoding.ts b/libs/sveltia-gateway/src/encoding.ts new file mode 100644 index 00000000..db118ec7 --- /dev/null +++ b/libs/sveltia-gateway/src/encoding.ts @@ -0,0 +1,39 @@ +/* + * Small helpers on top of Web Crypto, so the gateway runs anywhere that has + * `crypto.subtle`: Cloudflare Workers, Node 20+, Deno and Bun. + */ + +const encoder = new TextEncoder() +const decoder = new TextDecoder() + +export const utf8 = (text: string) => encoder.encode(text) +export const fromUtf8 = (bytes: Uint8Array) => decoder.decode(bytes) + +export function base64url(bytes: Uint8Array | ArrayBuffer) { + const view = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes) + let binary = '' + for (const byte of view) binary += String.fromCharCode(byte) + return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') +} + +export function fromBase64url(text: string) { + const base64 = text + .replace(/-/g, '+') + .replace(/_/g, '/') + .padEnd(Math.ceil(text.length / 4) * 4, '=') + return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)) +} + +export const randomString = (bytes = 32) => base64url(crypto.getRandomValues(new Uint8Array(bytes))) + +export async function sha256(text: string) { + return base64url(await crypto.subtle.digest('SHA-256', utf8(text))) +} + +/** Compare two strings without leaking where they differ */ +export function equalStrings(a: string, b: string) { + if (a.length !== b.length) return false + let difference = 0 + for (let i = 0; i < a.length; i++) difference |= a.charCodeAt(i) ^ b.charCodeAt(i) + return difference === 0 +} diff --git a/libs/sveltia-gateway/src/gateway.test.ts b/libs/sveltia-gateway/src/gateway.test.ts new file mode 100644 index 00000000..396850c9 --- /dev/null +++ b/libs/sveltia-gateway/src/gateway.test.ts @@ -0,0 +1,384 @@ +import { createVerify, generateKeyPairSync } from 'node:crypto' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { base64url, utf8 } from './encoding.js' +import { appJwt, pemToPkcs8 } from './github.js' +import { createGateway, entra, type IdentityProvider, oidc, testIdentity } from './index.js' + +const SECRET = 'x'.repeat(40) +const SITE = 'https://example.org' + +/** A pretend OpenID provider and GitHub, answering the gateway's fetches */ +function fakeWorld({ + issuer = 'https://id.example.com', + audience = 'client', + tid, +}: { issuer?: string; audience?: string; tid?: string } = {}) { + const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048 }) + const jwk = { ...publicKey.export({ format: 'jwk' }), kid: 'k1', alg: 'RS256', use: 'sig' } + // Someone else's key, for forged tokens + const forger = generateKeyPairSync('rsa', { modulusLength: 2048 }).privateKey + let signingKey = privateKey + let nonce = '' + const github: { url: string; method: string; auth: string | null; body?: string }[] = [] + + const sign = async (claims: object) => { + const key = await crypto.subtle.importKey( + 'pkcs8', + signingKey.export({ format: 'der', type: 'pkcs8' }), + { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' }, + false, + ['sign'], + ) + const data = `${base64url(utf8(JSON.stringify({ alg: 'RS256', kid: 'k1' })))}.${base64url(utf8(JSON.stringify(claims)))}` + return `${data}.${base64url(await crypto.subtle.sign('RSASSA-PKCS1-v1_5', key, utf8(data)))}` + } + + const claims = (extra: object = {}) => ({ + iss: issuer, + aud: audience, + sub: 'user-1', + oid: 'object-1', + tid, + name: 'Ada Editor', + email: 'ada@example.org', + nonce, + exp: Math.floor(Date.now() / 1000) + 300, + ...extra, + }) + let tokenClaims: (() => object) | undefined + + vi.stubGlobal('fetch', async (input: string | URL | Request, init?: RequestInit) => { + const url = new URL(typeof input === 'string' || input instanceof URL ? input : input.url) + if (url.pathname.endsWith('/.well-known/openid-configuration')) { + return Response.json({ + issuer, + authorization_endpoint: `${issuer}/authorize`, + token_endpoint: `${issuer}/token`, + jwks_uri: `${issuer}/jwks`, + }) + } + if (url.href === `${issuer}/jwks`) return Response.json({ keys: [jwk] }) + if (url.href === `${issuer}/token`) + return Response.json({ id_token: await sign(tokenClaims ? tokenClaims() : claims()) }) + if (url.hostname === 'api.github.com') { + github.push({ + url: url.pathname, + method: init?.method ?? 'GET', + auth: new Headers(init?.headers).get('Authorization'), + body: init?.body as string, + }) + return Response.json({ ok: true, path: url.pathname }) + } + throw new Error(`Unexpected fetch ${url}`) + }) + + return { + github, + setNonce: (value: string) => { + nonce = value + }, + setClaims: (extra: object) => { + tokenClaims = () => claims(extra) + }, + forge: () => { + signingKey = forger + }, + } +} + +/** Walk through sign-in as the browser would, and return the session the popup hands to the CMS */ +async function signIn( + gateway: ReturnType, + world?: ReturnType, +) { + const start = await gateway.fetch( + new Request(`${SITE}/admin/auth?provider=github&site_id=example.org&scope=repo`), + ) + expect(start.status).toBe(302) + const location = new URL(start.headers.get('Location')!) + const cookie = start.headers.get('Set-Cookie')!.split(';')[0] + world?.setNonce(location.searchParams.get('nonce') ?? '') + const callback = await gateway.fetch( + new Request(`${SITE}/admin/callback?code=abc&state=${location.searchParams.get('state')}`, { + headers: { Cookie: cookie }, + }), + ) + const html = await callback.text() + const message = JSON.parse( + html.match(/const message = (".*?");/)![1].replaceAll('\\u003c', '<'), + ) as string + const result = JSON.parse(message.replace(/^authorization:github:(success|error):/, '')) + return { status: callback.status, result, location, html } +} + +const api = ( + gateway: ReturnType, + token: string, + path: string, + init: RequestInit = {}, +) => + gateway.fetch( + new Request(`${SITE}/admin/api${path}`, { + ...init, + headers: { Authorization: `token ${token}`, ...init.headers }, + }), + ) + +beforeEach(() => { + vi.restoreAllMocks() +}) +afterEach(() => { + vi.unstubAllGlobals() +}) + +describe('sign-in', () => { + it('signs an editor in through any OpenID provider and answers /user from the session', async () => { + const world = fakeWorld() + const gateway = createGateway({ + identity: oidc({ issuer: 'https://id.example.com', clientId: 'client', clientSecret: 's' }), + github: { repo: 'acme/site', token: 'ghp_test' }, + sessionSecret: SECRET, + basePath: '/admin', + }) + const { status, result, location } = await signIn(gateway, world) + expect(location.origin + location.pathname).toBe('https://id.example.com/authorize') + expect(location.searchParams.get('code_challenge_method')).toBe('S256') + expect(location.searchParams.get('redirect_uri')).toBe(`${SITE}/admin/callback`) + expect(status).toBe(200) + expect(result.token).toBeTruthy() + + const user = await (await api(gateway, result.token, '/v3/user')).json() + expect(user).toMatchObject({ id: 'user-1', name: 'Ada Editor', email: 'ada@example.org' }) + expect(world.github).toHaveLength(0) + }) + + it('checks the tenant for Entra', async () => { + const tenant = '11111111-2222-3333-4444-555555555555' + const world = fakeWorld({ + issuer: `https://login.microsoftonline.com/${tenant}/v2.0`, + tid: tenant, + }) + const gateway = createGateway({ + identity: entra({ tenantId: tenant, clientId: 'client', clientSecret: 's' }), + github: { repo: 'acme/site', token: 't' }, + sessionSecret: SECRET, + basePath: '/admin', + }) + const ok = await signIn(gateway, world) + expect(ok.result.token).toBeTruthy() + expect(ok.location.searchParams.get('prompt')).toBe('select_account') + const user = await (await api(gateway, ok.result.token, '/user')).json() + expect(user.id).toBe('object-1') + + world.setClaims({ tid: 'someone-else' }) + const refused = await signIn(gateway, world) + expect(refused.status).toBe(403) + expect(refused.result.error).toMatch(/may not edit/) + }) + + it('refuses tokens with the wrong audience, nonce or signature', async () => { + const world = fakeWorld() + const gateway = createGateway({ + identity: oidc({ issuer: 'https://id.example.com', clientId: 'client' }), + github: { repo: 'acme/site', token: 't' }, + sessionSecret: SECRET, + basePath: '/admin', + }) + world.setClaims({ aud: 'another-app' }) + expect((await signIn(gateway, world)).result.error).toMatch(/another app/) + world.setClaims({ nonce: 'replayed' }) + expect((await signIn(gateway, world)).result.error).toMatch(/another sign-in/) + world.setClaims({ exp: 1 }) + expect((await signIn(gateway, world)).result.error).toMatch(/expired/) + world.setClaims({}) + expect((await signIn(gateway, world)).result.token).toBeTruthy() + world.forge() + expect((await signIn(gateway, world)).result.error).toMatch(/signature/) + }) + + it('refuses a callback without the matching attempt cookie', async () => { + fakeWorld() + const gateway = createGateway({ + identity: testIdentity(), + github: { repo: 'acme/site', token: 't' }, + sessionSecret: SECRET, + basePath: '/admin', + }) + const response = await gateway.fetch(new Request(`${SITE}/admin/callback?code=x&state=forged`)) + expect(response.status).toBe(403) + }) + + it('only hands the token to allowed origins', async () => { + fakeWorld() + const gateway = createGateway({ + identity: testIdentity(), + github: { repo: 'acme/site', token: 't' }, + sessionSecret: SECRET, + basePath: '/admin', + allowedOrigins: ['https://cms.example.net'], + }) + const { html } = await signIn(gateway) + expect(html).toContain('const allowed = ["https://example.org","https://cms.example.net"]') + }) +}) + +describe('the GitHub proxy', () => { + async function setup(options: Partial[0]> = {}) { + const world = fakeWorld() + const gateway = createGateway({ + identity: testIdentity(), + github: { repo: 'acme/site', token: 'ghp_server_side' }, + sessionSecret: SECRET, + basePath: '/admin', + paths: ['content/**'], + ...options, + }) + const { result } = await signIn(gateway) + return { world, gateway, token: result.token as string } + } + + it("passes allowed calls to GitHub with the server's token, never the editor's", async () => { + const { world, gateway, token } = await setup() + const response = await api(gateway, token, '/v3/repos/acme/site/git/trees/main?recursive=1') + expect(response.status).toBe(200) + expect(world.github).toEqual([ + { + url: '/repos/acme/site/git/trees/main', + method: 'GET', + auth: 'Bearer ghp_server_side', + body: undefined, + }, + ]) + }) + + it('refuses requests without a valid session', async () => { + const { gateway, token } = await setup() + expect((await api(gateway, '', '/user')).status).toBe(401) + expect((await api(gateway, `${token.slice(0, -2)}xx`, '/user')).status).toBe(401) + const otherGateway = createGateway({ + identity: testIdentity(), + github: { repo: 'acme/site', token: 't' }, + sessionSecret: 'y'.repeat(40), + }) + expect( + ( + await otherGateway.fetch( + new Request(`${SITE}/api/user`, { headers: { Authorization: `token ${token}` } }), + ) + ).status, + ).toBe(401) + }) + + it('applies the rules', async () => { + const { world, gateway, token } = await setup() + expect((await api(gateway, token, '/v3/repos/acme/other')).status).toBe(403) + const commit = (path: string) => + api(gateway, token, '/graphql', { + method: 'POST', + body: JSON.stringify({ + query: + 'mutation($input: CreateCommitOnBranchInput!) { createCommitOnBranch(input: $input) { commit { oid } } }', + variables: { + input: { + branch: { repositoryNameWithOwner: 'acme/site', branchName: 'main' }, + fileChanges: { additions: [{ path, contents: '' }] }, + }, + }, + }), + }) + expect((await commit('content/a.md')).status).toBe(200) + expect((await commit('.github/workflows/x.yml')).status).toBe(403) + expect(world.github.map((call) => call.url)).toEqual(['/graphql']) + }) + + it('answers CORS preflights for allowed origins only', async () => { + const { gateway } = await setup({ allowedOrigins: ['https://cms.example.net'] }) + const preflight = (origin: string) => + gateway.fetch( + new Request(`${SITE}/admin/api/v3/user`, { + method: 'OPTIONS', + headers: { Origin: origin }, + }), + ) + expect( + (await preflight('https://cms.example.net')).headers.get('Access-Control-Allow-Origin'), + ).toBe('https://cms.example.net') + expect( + (await preflight('https://evil.example')).headers.get('Access-Control-Allow-Origin'), + ).toBeNull() + }) + + it('ignores paths outside its base', async () => { + const { gateway } = await setup() + expect(gateway.handles(new Request(`${SITE}/blog`))).toBe(false) + expect((await gateway.fetch(new Request(`${SITE}/admin/other`))).status).toBe(404) + }) +}) + +describe('GitHub App keys', () => { + it("turns GitHub's PKCS#1 key into one Web Crypto can sign with", async () => { + const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048 }) + const pkcs1 = privateKey.export({ format: 'pem', type: 'pkcs1' }) as string + expect(pkcs1).toContain('BEGIN RSA PRIVATE KEY') + expect(pemToPkcs8(pkcs1)).toEqual( + new Uint8Array(privateKey.export({ format: 'der', type: 'pkcs8' })), + ) + + const jwt = await appJwt('123', pkcs1.replace(/\n/g, '\\n')) + const [header, payload, signature] = jwt.split('.') + const verify = createVerify('RSA-SHA256').update(`${header}.${payload}`) + expect(verify.verify(publicKey, Buffer.from(signature, 'base64url'))).toBe(true) + expect(JSON.parse(Buffer.from(payload, 'base64url').toString())).toMatchObject({ iss: '123' }) + }) + + it('asks for an installation token limited to the repository, and reuses it', async () => { + const { privateKey } = generateKeyPairSync('rsa', { modulusLength: 2048 }) + const calls: { url: string; body?: string }[] = [] + vi.stubGlobal('fetch', async (input: string, init?: RequestInit) => { + calls.push({ url: input, body: init?.body as string }) + if (input.endsWith('/repos/acme/site/installation')) return Response.json({ id: 42 }) + if (input.endsWith('/app/installations/42/access_tokens')) { + return Response.json({ + token: 'ghs_installation', + expires_at: new Date(Date.now() + 3600_000).toISOString(), + }) + } + return Response.json({ auth: new Headers(init?.headers).get('Authorization') }) + }) + const gateway = createGateway({ + identity: testIdentity() as IdentityProvider, + github: { + repo: 'acme/site', + appId: 123, + privateKey: privateKey.export({ format: 'pem', type: 'pkcs1' }) as string, + }, + sessionSecret: SECRET, + }) + const { result } = await (async () => { + const start = await gateway.fetch(new Request(`${SITE}/auth`)) + const location = new URL(start.headers.get('Location')!) + const callback = await gateway.fetch( + new Request(`${SITE}/callback?code=x&state=${location.searchParams.get('state')}`, { + headers: { Cookie: start.headers.get('Set-Cookie')!.split(';')[0] }, + }), + ) + const message = JSON.parse( + (await callback.text()).match(/const message = (".*?");/)![1], + ) as string + return { result: JSON.parse(message.replace(/^authorization:github:success:/, '')) } + })() + const call = () => + gateway.fetch( + new Request(`${SITE}/api/repos/acme/site`, { + headers: { Authorization: `token ${result.token}` }, + }), + ) + expect(await (await call()).json()).toEqual({ auth: 'Bearer ghs_installation' }) + await call() + expect(calls.filter((c) => c.url.includes('access_tokens'))).toHaveLength(1) + expect(JSON.parse(calls.find((c) => c.url.includes('access_tokens'))!.body!)).toEqual({ + repositories: ['site'], + permissions: { contents: 'write', pull_requests: 'write' }, + }) + }) +}) diff --git a/libs/sveltia-gateway/src/gateway.ts b/libs/sveltia-gateway/src/gateway.ts new file mode 100644 index 00000000..23421b5e --- /dev/null +++ b/libs/sveltia-gateway/src/gateway.ts @@ -0,0 +1,267 @@ +import { randomString } from './encoding.js' +import { type GitHubCredentials, githubTokens } from './github.js' +import type { Editor, IdentityProvider } from './identity.js' +import { popupResponse } from './popup.js' +import { checkGraphql, checkRest, type Rules } from './rules.js' +import { seal, unseal } from './signed.js' + +export interface GatewayOptions { + /** Who editors are: `entra()`, `google()`, `oidc()` or, locally, `testIdentity()` */ + identity: IdentityProvider + /** The content repository and how to reach it */ + github: GitHubCredentials & { + /** `owner/name` */ + repo: string + /** For GitHub Enterprise Server. Defaults to `https://api.github.com` */ + apiRoot?: string + } + /** At least 32 random characters. Signs sessions and sign-in attempts */ + sessionSecret: string + /** Where the gateway's routes live, e.g. `/admin` for `/admin/auth`. Defaults to the root */ + basePath?: string + /** Branches editors may commit to. Defaults to `main` plus `cms/**`, the editorial workflow's branches */ + branches?: string[] + /** Paths editors may change, e.g. `["content/**", "static/uploads/**"]`. Any path if left out */ + paths?: string[] + /** Refuse every write. For trying the gateway out */ + readOnly?: boolean + /** Allow the CMS to trigger a deploy through `repository_dispatch`. Defaults to true */ + dispatches?: boolean + /** How long a sign-in lasts, in seconds. Defaults to 8 hours */ + sessionTtl?: number + /** + * Origins of the sites whose CMS may use this gateway, e.g. + * `["https://example.org"]`. Only needed when the gateway runs elsewhere + * than the CMS (say, on a Worker). The gateway's own origin is always allowed. + */ + allowedOrigins?: string[] + /** The gateway's public URL, when it can't be told from the request (behind some proxies) */ + publicUrl?: string + /** Called with every refused request and failed sign-in, e.g. for logging */ + onRefused?: (reason: string, request: Request) => void +} + +export interface Gateway { + /** Handle a request. Answers 404 for paths outside the gateway */ + fetch(request: Request): Promise + /** Whether a request is for one of the gateway's routes */ + handles(request: Request): boolean +} + +const ATTEMPT_COOKIE = 'sveltia-gateway-attempt' + +interface Attempt { + state: string + nonce: string + codeVerifier: string +} + +export function createGateway(options: GatewayOptions): Gateway { + if (!options.sessionSecret || options.sessionSecret.length < 32) + throw new Error('sessionSecret must be at least 32 characters') + const base = (options.basePath ?? '').replace(/\/$/, '') + const apiRoot = (options.github.apiRoot ?? 'https://api.github.com').replace(/\/$/, '') + const tokens = githubTokens(options.github, options.github.repo, apiRoot) + const rules: Rules = { + repo: options.github.repo, + branches: options.branches ?? ['main', 'cms/**'], + paths: options.paths, + readOnly: options.readOnly ?? false, + dispatches: options.dispatches ?? true, + } + const ttl = options.sessionTtl ?? 8 * 60 * 60 + const secret = options.sessionSecret + + const publicOrigin = (request: Request) => new URL(options.publicUrl ?? request.url).origin + const allowedOrigins = (request: Request) => [ + publicOrigin(request), + ...(options.allowedOrigins ?? []).map((o) => new URL(o).origin), + ] + const callbackUrl = (request: Request) => `${publicOrigin(request)}${base}/callback` + const refuse = (reason: string, request: Request, status = 403) => { + options.onRefused?.(reason, request) + return json({ message: reason }, status) + } + + const route = (request: Request) => { + const path = new URL(request.url).pathname + if (base && path !== base && !path.startsWith(`${base}/`)) return undefined + return path.slice(base.length) || '/' + } + + async function signIn(request: Request) { + const attempt: Attempt = { + state: randomString(), + nonce: randomString(), + codeVerifier: randomString(48), + } + const url = await options.identity.authorizationUrl({ + ...attempt, + redirectUri: callbackUrl(request), + }) + return new Response(null, { + status: 302, + headers: { + Location: url, + 'Cache-Control': 'no-store', + 'Set-Cookie': cookie( + ATTEMPT_COOKIE, + await seal(secret, attempt, 10 * 60), + base || '/', + request, + 10 * 60, + ), + }, + }) + } + + async function callback(request: Request) { + const url = new URL(request.url) + const attempt = await unseal(secret, readCookie(request, ATTEMPT_COOKIE)) + const clear = cookie(ATTEMPT_COOKIE, '', base || '/', request, 0) + const code = url.searchParams.get('code') + const fail = (reason: string) => { + options.onRefused?.(reason, request) + const response = popupResponse({ error: reason }, allowedOrigins(request)) + response.headers.append('Set-Cookie', clear) + return response + } + + if (url.searchParams.get('error')) + return fail(url.searchParams.get('error_description') ?? url.searchParams.get('error')!) + if (!code || !attempt || url.searchParams.get('state') !== attempt.state) + return fail('The sign-in expired or was started elsewhere. Please try again.') + let editor: Editor + try { + editor = await options.identity.finish(code, { + ...attempt, + redirectUri: callbackUrl(request), + }) + } catch (error) { + return fail(error instanceof Error ? error.message : 'Sign-in failed') + } + const response = popupResponse( + { token: await seal(secret, { editor }, ttl) }, + allowedOrigins(request), + ) + response.headers.append('Set-Cookie', clear) + return response + } + + async function api(request: Request, path: string) { + const cors = corsHeaders(request, allowedOrigins(request)) + if (request.method === 'OPTIONS') return new Response(null, { status: 204, headers: cors }) + const withCors = (response: Response) => { + for (const [name, value] of Object.entries(cors)) response.headers.set(name, value) + return response + } + + const token = request.headers.get('Authorization')?.replace(/^(token|bearer)\s+/i, '') + const session = await unseal<{ editor: Editor }>(secret, token) + if (!session) return withCors(refuse('Not signed in, or the sign-in has expired', request, 401)) + const { editor } = session + + // Sveltia calls a custom api_root the way it calls GitHub Enterprise: REST under /v3 + path = path.replace(/^\/v3(?=\/|$)/, '') + + // Who is signed in. Sveltia puts the name in commit messages + if (path === '/user') { + return withCors( + json({ + id: editor.id, + login: editor.email ?? editor.id, + name: editor.name, + email: editor.email ?? null, + avatar_url: null, + html_url: null, + type: 'User', + bot: false, + }), + ) + } + // Invitations belong to GitHub accounts, which editors don't have + if (path === '/user/repository_invitations') return withCors(json([])) + + const body = + request.method === 'GET' || request.method === 'HEAD' ? undefined : await request.text() + let parsed: unknown + try { + parsed = body ? JSON.parse(body) : undefined + } catch { + return withCors(refuse('Malformed request body', request, 400)) + } + const reason = + path === '/graphql' + ? checkGraphql(rules, parsed) + : checkRest(rules, request.method, path, parsed) + if (reason) return withCors(refuse(reason, request)) + + const upstream = await fetch(`${apiRoot}${path}${new URL(request.url).search}`, { + method: request.method, + body, + headers: { + Authorization: `Bearer ${await tokens.token()}`, + Accept: request.headers.get('Accept') ?? 'application/vnd.github+json', + 'Content-Type': request.headers.get('Content-Type') ?? 'application/json', + 'User-Agent': 'sveltia-gateway', + 'X-GitHub-Api-Version': '2022-11-28', + }, + }) + const headers = new Headers() + for (const name of [ + 'content-type', + 'etag', + 'last-modified', + 'link', + 'x-ratelimit-remaining', + 'x-ratelimit-reset', + ]) { + const value = upstream.headers.get(name) + if (value) headers.set(name, value) + } + headers.set('Cache-Control', 'no-store') + return withCors(new Response(upstream.body, { status: upstream.status, headers })) + } + + return { + handles: (request) => route(request) !== undefined, + async fetch(request) { + const path = route(request) + if (path === '/auth' && request.method === 'GET') return signIn(request) + if (path === '/callback' && request.method === 'GET') return callback(request) + if (path === '/api' || path?.startsWith('/api/')) return api(request, path.slice(4)) + return new Response('Not found', { status: 404 }) + }, + } +} + +const json = (data: unknown, status = 200) => + new Response(JSON.stringify(data), { + status, + headers: { 'Content-Type': 'application/json', 'Cache-Control': 'no-store' }, + }) + +function corsHeaders(request: Request, allowed: string[]): Record { + const origin = request.headers.get('Origin') + if (!origin || !allowed.includes(origin)) return {} + return { + 'Access-Control-Allow-Origin': origin, + 'Access-Control-Allow-Methods': 'GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS', + 'Access-Control-Allow-Headers': 'Authorization, Content-Type, Accept', + 'Access-Control-Max-Age': '600', + Vary: 'Origin', + } +} + +function readCookie(request: Request, name: string) { + for (const part of request.headers.get('Cookie')?.split(';') ?? []) { + const [key, ...value] = part.trim().split('=') + if (key === name) return decodeURIComponent(value.join('=')) + } + return undefined +} + +function cookie(name: string, value: string, path: string, request: Request, maxAge: number) { + const secure = new URL(request.url).protocol === 'https:' ? '; Secure' : '' + return `${name}=${encodeURIComponent(value)}; Path=${path}; Max-Age=${maxAge}; HttpOnly; SameSite=Lax${secure}` +} diff --git a/libs/sveltia-gateway/src/github.ts b/libs/sveltia-gateway/src/github.ts new file mode 100644 index 00000000..392161da --- /dev/null +++ b/libs/sveltia-gateway/src/github.ts @@ -0,0 +1,128 @@ +import { base64url, utf8 } from './encoding.js' + +/* + * Tokens for GitHub. Editors have no GitHub account, so the gateway talks to + * GitHub as a GitHub App installed on the content repository, asking for + * short-lived installation tokens limited to that one repository. A fixed + * token works too, for testing. + */ + +export type GitHubCredentials = + | { + /** The GitHub App's id */ + appId: string | number + /** The app's private key, as downloaded (PKCS#1, "BEGIN RSA PRIVATE KEY") or PKCS#8 */ + privateKey: string + } + | { + /** A token that can read and write the repository, e.g. a fine-grained personal access token. Mainly for testing */ + token: string + } + +export interface TokenSource { + token(): Promise +} + +export function githubTokens( + credentials: GitHubCredentials, + repo: string, + apiRoot: string, +): TokenSource { + if ('token' in credentials) return { token: async () => credentials.token } + + let cached: { token: string; expires: number } | undefined + let pending: Promise | undefined + + const renew = async () => { + const jwt = await appJwt(String(credentials.appId), credentials.privateKey) + const headers = { + Authorization: `Bearer ${jwt}`, + Accept: 'application/vnd.github+json', + 'User-Agent': 'sveltia-gateway', + } + const installation = await githubJson<{ id: number }>(`${apiRoot}/repos/${repo}/installation`, { + headers, + }) + const access = await githubJson<{ token: string; expires_at: string }>( + `${apiRoot}/app/installations/${installation.id}/access_tokens`, + { + method: 'POST', + headers, + // Only this repository, and only what the CMS needs + body: JSON.stringify({ + repositories: [repo.split('/')[1]], + permissions: { contents: 'write', pull_requests: 'write' }, + }), + }, + ) + cached = { token: access.token, expires: Date.parse(access.expires_at) } + return access.token + } + + return { + async token() { + // Installation tokens last an hour. Renew five minutes early, once even when many requests ask at the same time + if (cached && cached.expires > Date.now() + 5 * 60_000) return cached.token + pending ??= renew().finally(() => { + pending = undefined + }) + return pending + }, + } +} + +async function githubJson(url: string, init: RequestInit): Promise { + const response = await fetch(url, init) + if (!response.ok) + throw new Error( + `GitHub ${response.status} for ${new URL(url).pathname}: ${await response.text()}`, + ) + return (await response.json()) as T +} + +const signingKeys = new Map>() + +/** The JWT a GitHub App signs to ask for installation tokens, valid for nine minutes */ +export async function appJwt(appId: string, privateKey: string) { + let key = signingKeys.get(privateKey) + if (!key) { + key = crypto.subtle.importKey( + 'pkcs8', + pemToPkcs8(privateKey), + { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' }, + false, + ['sign'], + ) + signingKeys.set(privateKey, key) + } + const now = Math.floor(Date.now() / 1000) + const encode = (value: object) => base64url(utf8(JSON.stringify(value))) + const data = `${encode({ alg: 'RS256', typ: 'JWT' })}.${encode({ iat: now - 60, exp: now + 9 * 60, iss: appId })}` + return `${data}.${base64url(await crypto.subtle.sign('RSASSA-PKCS1-v1_5', await key, utf8(data)))}` +} + +/** + * GitHub hands out PKCS#1 keys, and Web Crypto only reads PKCS#8, so wrap the + * former in the latter. Accepts either, with real or escaped (`\n`) newlines. + */ +export function pemToPkcs8(pem: string): Uint8Array { + const text = pem.replace(/\\n/g, '\n') + const pkcs1 = /BEGIN RSA PRIVATE KEY/.test(text) + const body = text.replace(/-----(BEGIN|END)[^-]+-----/g, '').replace(/\s+/g, '') + const der = Uint8Array.from(atob(body), (c) => c.charCodeAt(0)) + if (!pkcs1) return der + + // PrivateKeyInfo ::= SEQUENCE { version 0, AlgorithmIdentifier rsaEncryption, OCTET STRING pkcs1 } + const rsaEncryption = [ + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + ] + const inner = [0x02, 0x01, 0x00, ...rsaEncryption, 0x04, ...derLength(der.length), ...der] + return Uint8Array.from([0x30, ...derLength(inner.length), ...inner]) +} + +function derLength(length: number) { + if (length < 0x80) return [length] + const bytes: number[] = [] + for (let n = length; n > 0; n >>= 8) bytes.unshift(n & 0xff) + return [0x80 | bytes.length, ...bytes] +} diff --git a/libs/sveltia-gateway/src/identity.ts b/libs/sveltia-gateway/src/identity.ts new file mode 100644 index 00000000..83a0d8c8 --- /dev/null +++ b/libs/sveltia-gateway/src/identity.ts @@ -0,0 +1,271 @@ +import { fromBase64url, fromUtf8, sha256, utf8 } from './encoding.js' + +/* + * Who an editor is. Any OpenID Connect provider works through `oidc()`; + * `entra()` and `google()` fill in the details for the common ones. The flow + * is the authorization code flow with PKCE and a nonce, and the ID token's + * signature is checked against the provider's published keys. + */ + +export interface Editor { + /** Stable id from the identity provider */ + id: string + name: string + email?: string +} + +export type Claims = Record + +export interface SignInStart { + redirectUri: string + state: string + nonce: string + codeVerifier: string +} + +export interface IdentityProvider { + /** Where to send the editor to sign in */ + authorizationUrl(start: SignInStart): Promise + /** Trade the code the provider sent back for the editor. Throws when sign-in failed or isn't allowed */ + finish(code: string, start: SignInStart): Promise +} + +export interface OidcOptions { + /** The issuer, e.g. `https://accounts.google.com`. Its discovery document is read from `/.well-known/openid-configuration` */ + issuer: string + clientId: string + /** Needed for confidential clients (Entra web apps, Google). Leave out for public clients */ + clientSecret?: string + /** Defaults to `openid profile email` */ + scopes?: string[] + /** Extra parameters for the authorization request, e.g. `{ prompt: "select_account" }` */ + authorizationParams?: Record + /** Who may sign in, decided from the ID token's claims. Everyone the provider lets through, if left out */ + allow?: (claims: Claims) => boolean | Promise + /** Turn claims into an editor. By default: `sub`, `name` and `email` */ + toEditor?: (claims: Claims) => Editor +} + +interface Discovery { + issuer: string + authorization_endpoint: string + token_endpoint: string + jwks_uri: string +} + +/** Any OpenID Connect provider */ +export function oidc(options: OidcOptions): IdentityProvider { + let discovery: Promise | undefined + const discover = () => { + discovery ??= getJson( + `${options.issuer.replace(/\/$/, '')}/.well-known/openid-configuration`, + ).catch((error) => { + discovery = undefined + throw error + }) + return discovery + } + const keys = new JwksCache() + + return { + async authorizationUrl({ redirectUri, state, nonce, codeVerifier }) { + const { authorization_endpoint } = await discover() + const url = new URL(authorization_endpoint) + for (const [key, value] of Object.entries({ + ...options.authorizationParams, + client_id: options.clientId, + response_type: 'code', + redirect_uri: redirectUri, + scope: (options.scopes ?? ['openid', 'profile', 'email']).join(' '), + state, + nonce, + code_challenge: await sha256(codeVerifier), + code_challenge_method: 'S256', + })) { + url.searchParams.set(key, value) + } + return url.href + }, + + async finish(code, { redirectUri, nonce, codeVerifier }) { + const config = await discover() + const body = new URLSearchParams({ + grant_type: 'authorization_code', + code, + redirect_uri: redirectUri, + client_id: options.clientId, + code_verifier: codeVerifier, + }) + if (options.clientSecret) body.set('client_secret', options.clientSecret) + const response = await fetch(config.token_endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/json', + }, + body, + }) + if (!response.ok) + throw new Error(`The identity provider refused the sign-in (${response.status})`) + const { id_token: idToken } = (await response.json()) as { id_token?: string } + if (!idToken) throw new Error('The identity provider sent no ID token') + + const claims = await verifyJwt(idToken, (kid) => keys.get(config.jwks_uri, kid)) + if (claims.iss !== config.issuer) throw new Error('The ID token is from another issuer') + const audience = Array.isArray(claims.aud) ? claims.aud : [claims.aud] + if (!audience.includes(options.clientId)) throw new Error('The ID token is for another app') + if (claims.nonce !== nonce) throw new Error('The ID token is for another sign-in') + if (options.allow && !(await options.allow(claims))) + throw new Error('This account may not edit this site') + + const editor = (options.toEditor ?? defaultEditor)(claims) + if (!editor.id) throw new Error('The ID token does not say who signed in') + return editor + }, + } +} + +export interface EntraOptions extends Omit { + /** The directory (tenant) id. Only accounts from this tenant can sign in */ + tenantId: string +} + +/** + * Microsoft Entra ID (Azure AD), single tenant. Decide who may sign in in + * Entra itself: set "Assignment required" on the app and assign people or + * groups. `allow` can narrow it further. + */ +export function entra({ tenantId, allow, ...options }: EntraOptions): IdentityProvider { + return oidc({ + authorizationParams: { prompt: 'select_account' }, + ...options, + issuer: `https://login.microsoftonline.com/${tenantId}/v2.0`, + allow: async (claims) => claims.tid === tenantId && (allow ? await allow(claims) : true), + toEditor: + options.toEditor ?? + ((claims) => ({ + id: String(claims.oid ?? claims.sub), + name: String(claims.name ?? claims.preferred_username ?? ''), + email: str(claims.email) ?? str(claims.preferred_username), + })), + }) +} + +export interface GoogleOptions extends Omit { + /** Only accounts of this Google Workspace domain can sign in */ + domain?: string +} + +/** Google, optionally limited to one Workspace domain */ +export function google({ domain, allow, ...options }: GoogleOptions): IdentityProvider { + return oidc({ + authorizationParams: { prompt: 'select_account', ...(domain && { hd: domain }) }, + ...options, + issuer: 'https://accounts.google.com', + allow: async (claims) => + claims.email_verified === true && + (!domain || claims.hd === domain) && + (allow ? await allow(claims) : true), + }) +} + +/** + * Signs everyone in as the given editor without asking anyone. For trying the + * gateway locally only: never use it where others can reach it. + */ +export function testIdentity( + editor: Editor = { id: 'test', name: 'Test Editor', email: 'editor@example.org' }, +): IdentityProvider { + return { + authorizationUrl: async ({ redirectUri, state }) => { + const url = new URL(redirectUri) + url.searchParams.set('code', 'test') + url.searchParams.set('state', state) + return url.href + }, + finish: async () => editor, + } +} + +const str = (value: unknown) => (typeof value === 'string' && value ? value : undefined) + +const defaultEditor = (claims: Claims): Editor => ({ + id: String(claims.sub ?? ''), + name: String(claims.name ?? claims.preferred_username ?? claims.email ?? ''), + email: str(claims.email), +}) + +async function getJson(url: string): Promise { + const response = await fetch(url, { headers: { Accept: 'application/json' } }) + if (!response.ok) throw new Error(`${response.status} for ${url}`) + return (await response.json()) as T +} + +type Jwk = JsonWebKey & { kid?: string; alg?: string } + +/** The provider's signing keys, fetched again when a token names a key we haven't seen (keys rotate) */ +class JwksCache { + private keys: Jwk[] = [] + private fetchedAt = 0 + + async get(uri: string, kid: string | undefined) { + const find = () => this.keys.find((key) => !kid || key.kid === kid) + if (!find() && Date.now() - this.fetchedAt > 60_000) { + this.keys = (await getJson<{ keys: Jwk[] }>(uri)).keys + this.fetchedAt = Date.now() + } + const key = find() + if (!key) throw new Error('The ID token is signed with an unknown key') + return key + } +} + +const ALGORITHMS: Record< + string, + { import: RsaHashedImportParams | EcKeyImportParams; verify: AlgorithmIdentifier | EcdsaParams } +> = { + RS256: { + import: { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' }, + verify: { name: 'RSASSA-PKCS1-v1_5' }, + }, + ES256: { + import: { name: 'ECDSA', namedCurve: 'P-256' }, + verify: { name: 'ECDSA', hash: 'SHA-256' }, + }, +} + +/** A JWT's claims, after checking its signature and expiry */ +export async function verifyJwt( + token: string, + keyFor: (kid: string | undefined) => Promise, +): Promise { + const [header, payload, signature] = token.split('.') + if (!header || !payload || !signature) throw new Error('Malformed ID token') + const { alg, kid } = JSON.parse(fromUtf8(fromBase64url(header))) as { alg: string; kid?: string } + const algorithm = ALGORITHMS[alg] + if (!algorithm) throw new Error(`Unsupported ID token algorithm ${alg}`) + + const jwk = await keyFor(kid) + const key = await crypto.subtle.importKey( + 'jwk', + { ...jwk, alg, ext: true }, + algorithm.import, + false, + ['verify'], + ) + const valid = await crypto.subtle.verify( + algorithm.verify, + key, + fromBase64url(signature), + utf8(`${header}.${payload}`), + ) + if (!valid) throw new Error("The ID token's signature is wrong") + + const claims = JSON.parse(fromUtf8(fromBase64url(payload))) as Claims + const now = Date.now() / 1000 + if (typeof claims.exp !== 'number' || claims.exp < now - 60) + throw new Error('The ID token has expired') + if (typeof claims.nbf === 'number' && claims.nbf > now + 60) + throw new Error('The ID token is not valid yet') + return claims +} diff --git a/libs/sveltia-gateway/src/index.ts b/libs/sveltia-gateway/src/index.ts new file mode 100644 index 00000000..0a7e6301 --- /dev/null +++ b/libs/sveltia-gateway/src/index.ts @@ -0,0 +1,14 @@ +export { createGateway, type Gateway, type GatewayOptions } from './gateway.js' +export type { GitHubCredentials } from './github.js' +export { + type Claims, + type Editor, + type EntraOptions, + entra, + type GoogleOptions, + google, + type IdentityProvider, + type OidcOptions, + oidc, + testIdentity, +} from './identity.js' diff --git a/libs/sveltia-gateway/src/popup.ts b/libs/sveltia-gateway/src/popup.ts new file mode 100644 index 00000000..135e2492 --- /dev/null +++ b/libs/sveltia-gateway/src/popup.ts @@ -0,0 +1,45 @@ +/* + * The page that ends a sign-in. Sveltia CMS (like Decap and Netlify CMS) + * opens sign-in in a popup and waits for this handshake: the popup says + * "authorizing:github", the CMS echoes it, the popup answers with the token + * (here, the editor's session) and closes. + * + * The hello carries nothing secret, so it goes to whatever opened the popup. + * The token only goes back to an echo from one of the allowed origins. + */ + +export type PopupResult = { token: string } | { error: string } + +export function popupResponse(result: PopupResult, allowedOrigins: string[], provider = 'github') { + const success = 'token' in result + const message = `authorization:${provider}:${success ? 'success' : 'error'}:${JSON.stringify(result)}` + // JSON inside a script: escape "<" so nothing in it can close the tag + const literal = (value: unknown) => JSON.stringify(value).replaceAll('<', '\\u003c') + const html = ` + +Signing in… + +

${success ? 'Signed in. This window closes by itself.' : 'Sign-in failed. You can close this window and try again.'}

+ + +` + return new Response(html, { + status: success ? 200 : 403, + headers: { + 'Content-Type': 'text/html; charset=utf-8', + 'Cache-Control': 'no-store', + 'Content-Security-Policy': "default-src 'none'; script-src 'unsafe-inline'", + 'Referrer-Policy': 'no-referrer', + }, + }) +} diff --git a/libs/sveltia-gateway/src/rules.test.ts b/libs/sveltia-gateway/src/rules.test.ts new file mode 100644 index 00000000..5fd8fbaa --- /dev/null +++ b/libs/sveltia-gateway/src/rules.test.ts @@ -0,0 +1,151 @@ +import { describe, expect, it } from 'vitest' +import { checkGraphql, checkRest, matchesAny, type Rules, topLevelFields } from './rules.js' + +const rules: Rules = { + repo: 'acme/site', + branches: ['main', 'cms/**'], + paths: ['content/**', 'static/uploads/*'], + readOnly: false, + dispatches: true, +} + +describe('matchesAny', () => { + it('keeps * within a segment and lets ** cross them', () => { + expect(matchesAny('cms/posts/hello', ['cms/**'])).toBe(true) + expect(matchesAny('static/uploads/a.png', ['static/uploads/*'])).toBe(true) + expect(matchesAny('static/uploads/x/a.png', ['static/uploads/*'])).toBe(false) + expect(matchesAny('mainline', ['main'])).toBe(false) + }) +}) + +describe('checkRest', () => { + it('allows reads of the repository only', () => { + expect(checkRest(rules, 'GET', '/repos/acme/site/git/trees/abc', undefined)).toBeUndefined() + expect(checkRest(rules, 'GET', '/repos/ACME/Site', undefined)).toBeUndefined() + expect(checkRest(rules, 'GET', '/repos/acme/site-private/contents', undefined)).toBeTruthy() + expect(checkRest(rules, 'GET', '/repos/acme/other', undefined)).toBeTruthy() + expect(checkRest(rules, 'GET', '/user/repos', undefined)).toBeTruthy() + }) + + it('allows branches and pull requests on open branches only', () => { + expect( + checkRest(rules, 'POST', '/repos/acme/site/git/refs', { ref: 'refs/heads/cms/posts/hello' }), + ).toBeUndefined() + expect( + checkRest(rules, 'POST', '/repos/acme/site/git/refs', { ref: 'refs/heads/release' }), + ).toBeTruthy() + expect( + checkRest(rules, 'DELETE', '/repos/acme/site/git/refs/heads/cms%2Fposts%2Fhello', undefined), + ).toBeUndefined() + expect(checkRest(rules, 'PATCH', '/repos/acme/site/git/refs/heads/release', {})).toBeTruthy() + expect( + checkRest(rules, 'POST', '/repos/acme/site/pulls', { head: 'cms/posts/hello', base: 'main' }), + ).toBeUndefined() + expect( + checkRest(rules, 'POST', '/repos/acme/site/pulls', { + head: 'cms/posts/hello', + base: 'release', + }), + ).toBeTruthy() + expect(checkRest(rules, 'PUT', '/repos/acme/site/pulls/4/merge', {})).toBeUndefined() + expect( + checkRest(rules, 'POST', '/repos/acme/site/issues/4/labels', { labels: ['x'] }), + ).toBeUndefined() + }) + + it('refuses everything else that writes', () => { + expect(checkRest(rules, 'PUT', '/repos/acme/site/contents/README.md', {})).toBeTruthy() + expect(checkRest(rules, 'POST', '/repos/acme/site/forks', {})).toBeTruthy() + expect(checkRest(rules, 'DELETE', '/repos/acme/site', undefined)).toBeTruthy() + expect(checkRest(rules, 'POST', '/repos/acme/site/dispatches', {})).toBeUndefined() + expect( + checkRest({ ...rules, dispatches: false }, 'POST', '/repos/acme/site/dispatches', {}), + ).toBeTruthy() + expect( + checkRest({ ...rules, readOnly: true }, 'POST', '/repos/acme/site/git/refs', { + ref: 'refs/heads/main', + }), + ).toBeTruthy() + }) +}) + +const commit = (branchName: string, paths: string[], repositoryNameWithOwner = 'acme/site') => ({ + query: + 'mutation($input: CreateCommitOnBranchInput!) { createCommitOnBranch(input: $input) { commit { oid } } }', + variables: { + input: { + branch: { repositoryNameWithOwner, branchName }, + fileChanges: { additions: paths.map((path) => ({ path, contents: '' })) }, + }, + }, +}) + +describe('checkGraphql', () => { + it('allows queries about the repository', () => { + expect( + checkGraphql(rules, { + query: + 'query($owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { id } }', + variables: { owner: 'acme', repo: 'site' }, + }), + ).toBeUndefined() + expect( + checkGraphql(rules, { query: '{ repository(owner: "acme", name: "other") { id } }' }), + ).toBeTruthy() + expect( + checkGraphql(rules, { query: 'query { x }', variables: { owner: 'acme', repo: 'other' } }), + ).toBeTruthy() + }) + + it('allows commits to open branches and paths', () => { + expect(checkGraphql(rules, commit('main', ['content/posts/a.md']))).toBeUndefined() + expect(checkGraphql(rules, commit('release', ['content/posts/a.md']))).toMatch(/release/) + expect(checkGraphql(rules, commit('main', ['package.json']))).toMatch(/package.json/) + expect(checkGraphql(rules, commit('main', ['content/a.md'], 'acme/other'))).toBeTruthy() + expect( + checkGraphql({ ...rules, readOnly: true }, commit('main', ['content/a.md'])), + ).toBeTruthy() + }) + + it('refuses other mutations, also when hidden behind an alias or a query', () => { + expect( + checkGraphql(rules, { + query: 'mutation { deleteRef(input: {refId: "x"}) { clientMutationId } }', + }), + ).toMatch(/deleteRef/) + expect( + checkGraphql(rules, { + query: + 'mutation { ok: createCommitOnBranch(input: $input) { x } evil: deleteRepository { x } }', + variables: commit('main', ['content/a.md']).variables, + }), + ).toMatch(/deleteRepository/) + expect( + checkGraphql(rules, { query: 'query A { x } mutation B { deleteRef(input: {}) { x } }' }), + ).toBeTruthy() + expect( + checkGraphql(rules, { + query: 'mutation { createCommitOnBranch(input: {branch: {}}) { x } }', + }), + ).toMatch(/\$input/) + }) + + it('is not fooled by strings that mention mutations', () => { + expect( + checkGraphql(rules, { + query: + '{ repository(owner: "acme", name: "site") { object(expression: "mutation { deleteRef }") { id } } }', + }), + ).toBeUndefined() + }) +}) + +describe('topLevelFields', () => { + it('lists the fields at the top of an operation', () => { + expect( + topLevelFields( + 'mutation M($a: X!) { one: createCommitOnBranch(input: $a) { commit { oid } } two __typename }', + ), + ).toEqual(['createCommitOnBranch', 'two', '__typename']) + }) +}) diff --git a/libs/sveltia-gateway/src/rules.ts b/libs/sveltia-gateway/src/rules.ts new file mode 100644 index 00000000..fe493a05 --- /dev/null +++ b/libs/sveltia-gateway/src/rules.ts @@ -0,0 +1,192 @@ +/* + * What an editor may do through the gateway. Everything is refused unless a + * rule allows it: reads of the one repository, commits to the allowed + * branches and paths, and the pull request calls Sveltia's editorial workflow + * makes. Each check returns a reason when it refuses, or undefined. + */ + +export interface Rules { + /** `owner/name` of the content repository */ + repo: string + /** Branches commits may go to. `*` matches within a name, `**` across slashes */ + branches: string[] + /** Paths commits may touch. Any path if left out */ + paths?: string[] + /** Refuse every write */ + readOnly: boolean + /** Allow `repository_dispatch`, which Sveltia uses to trigger a deploy */ + dispatches: boolean +} + +/** Match `value` against globs where `*` stays within one path segment and `**` crosses them */ +export function matchesAny(value: string, globs: string[]) { + return globs.some((glob) => { + const pattern = glob + .split('**') + .map((part) => part.split('*').map(escape).join('[^/]*')) + .join('.*') + return new RegExp(`^${pattern}$`).test(value) + }) +} + +const escape = (text: string) => text.replace(/[.+?^${}()|[\]\\]/g, '\\$&') + +const sameRepo = (a: string, b: string) => a.toLowerCase() === b.toLowerCase() + +/** A REST call, by method and path (without the API root) */ +export function checkRest( + rules: Rules, + method: string, + path: string, + body: unknown, +): string | undefined { + const prefix = `/repos/${rules.repo}` + const inRepo = + sameRepo(path.slice(0, prefix.length), prefix) && + (path.length === prefix.length || path[prefix.length] === '/') + if (!inRepo) return 'Only the content repository can be reached through this gateway' + + if (method === 'GET' || method === 'HEAD') return undefined + if (rules.readOnly) return 'This gateway is read-only' + + const rest = path.slice(prefix.length) + const data = (body ?? {}) as Record + const branch = (name: unknown) => + typeof name === 'string' && matchesAny(name.replace(/^[^:]+:/, ''), rules.branches) + ? undefined + : `Branch "${name}" is not open for editing` + + // Branches, for the editorial workflow + if (method === 'POST' && rest === '/git/refs') + return branch(String(data.ref ?? '').replace(/^refs\/heads\//, '')) + const ref = rest.match(/^\/git\/refs\/heads\/(.+)$/) + if (ref && (method === 'PATCH' || method === 'DELETE')) return branch(decodeURIComponent(ref[1])) + + // Pull requests and their labels, for the editorial workflow + if (method === 'POST' && rest === '/pulls') return branch(data.head) ?? branch(data.base) + if (method === 'PATCH' && /^\/pulls\/\d+$/.test(rest)) + return data.base === undefined ? undefined : branch(data.base) + if (method === 'PUT' && /^\/pulls\/\d+\/merge$/.test(rest)) return undefined + if ( + /^\/issues\/\d+\/labels(?:\/[^/]+)?$/.test(rest) && + ['POST', 'PUT', 'DELETE'].includes(method) + ) + return undefined + + // "Publish" button that triggers a deploy + if (method === 'POST' && rest === '/dispatches' && rules.dispatches) return undefined + + return `${method} ${rest || '/'} is not allowed through this gateway` +} + +const ALLOWED_MUTATIONS = new Set([ + 'createCommitOnBranch', + 'markPullRequestReadyForReview', + 'convertPullRequestToDraft', +]) + +/** A GraphQL request body */ +export function checkGraphql(rules: Rules, body: unknown): string | undefined { + const { query, variables = {} } = (body ?? {}) as { + query?: unknown + variables?: Record + } + if (typeof query !== 'string') return 'Malformed GraphQL request' + const text = withoutStrings(query) + + // Sveltia passes the repository as variables + if ( + variables.owner !== undefined && + variables.repo !== undefined && + !sameRepo(`${variables.owner}/${variables.repo}`, rules.repo) + ) { + return 'Only the content repository can be reached through this gateway' + } + for (const match of query.matchAll( + /repository\s*\(\s*owner\s*:\s*"([^"]*)"\s*,\s*name\s*:\s*"([^"]*)"/g, + )) { + if (!sameRepo(`${match[1]}/${match[2]}`, rules.repo)) + return 'Only the content repository can be reached through this gateway' + } + + if (/\bsubscription\b/.test(text)) return 'GraphQL subscriptions are not allowed' + if (!/\bmutation\b/.test(text)) return undefined + if (rules.readOnly) return 'This gateway is read-only' + + for (const field of topLevelFields(text.slice(text.search(/\bmutation\b/)))) { + if (!ALLOWED_MUTATIONS.has(field)) + return `The GraphQL mutation ${field} is not allowed through this gateway` + if (field === 'createCommitOnBranch') { + const reason = checkCommit(rules, variables.input) + if (reason) return reason + } + } + return undefined +} + +/** A commit through `createCommitOnBranch`. Its input has to come as a variable, so it can be checked */ +function checkCommit(rules: Rules, input: any): string | undefined { + if (!input?.branch || !input.fileChanges) + return 'Commits must pass their input as the $input variable' + const { repositoryNameWithOwner, branchName } = input.branch + if ( + typeof repositoryNameWithOwner !== 'string' || + !sameRepo(repositoryNameWithOwner, rules.repo) + ) { + return 'Only the content repository can be reached through this gateway' + } + if (typeof branchName !== 'string' || !matchesAny(branchName, rules.branches)) + return `Branch "${branchName}" is not open for editing` + if (rules.paths) { + const paths = [ + ...(input.fileChanges.additions ?? []), + ...(input.fileChanges.deletions ?? []), + ].map((change: { path: string }) => change.path) + const outside = paths.find( + (path) => typeof path !== 'string' || !matchesAny(path, rules.paths!), + ) + if (outside !== undefined) return `"${outside}" is outside the folders open for editing` + } + return undefined +} + +/** Blank out string literals and comments, so their contents can't look like operations */ +function withoutStrings(query: string) { + return query + .replace(/"""[\s\S]*?"""/g, '""') + .replace(/"(?:\\.|[^"\\])*"/g, '""') + .replace(/#[^\n]*/g, '') +} + +/** The fields selected at the top of an operation, e.g. `createCommitOnBranch` (aliases resolved) */ +export function topLevelFields(operation: string) { + const fields: string[] = [] + let depth = 0 + let parens = 0 + let buffer = '' + // Every name left in the buffer is a field: aliases ("name:") are dropped first + const flush = () => { + fields.push(...(buffer.replace(/\w+\s*:/g, ' ').match(/[a-z_]\w*/gi) ?? [])) + buffer = '' + } + for (const char of operation) { + if (char === '(') { + if (depth === 1 && parens === 0) flush() + parens++ + } else if (char === ')') { + parens-- + } else if (parens > 0) { + continue + } else if (char === '{') { + if (depth === 1) flush() + depth++ + } else if (char === '}') { + if (depth === 1) flush() + depth-- + if (depth === 0) break + } else if (depth === 1) { + buffer += char + } + } + return fields +} diff --git a/libs/sveltia-gateway/src/signed.ts b/libs/sveltia-gateway/src/signed.ts new file mode 100644 index 00000000..4c3243ee --- /dev/null +++ b/libs/sveltia-gateway/src/signed.ts @@ -0,0 +1,48 @@ +import { base64url, equalStrings, fromBase64url, fromUtf8, utf8 } from './encoding.js' + +/* + * Values the gateway hands out and takes back unchanged: the editor's session + * and the sign-in attempt kept in a cookie. They are signed with the session + * secret and carry their own expiry, so the gateway needs no database. + */ + +const keys = new Map>() + +function hmacKey(secret: string) { + let key = keys.get(secret) + if (!key) { + key = crypto.subtle.importKey('raw', utf8(secret), { name: 'HMAC', hash: 'SHA-256' }, false, [ + 'sign', + ]) + keys.set(secret, key) + } + return key +} + +async function signature(secret: string, data: string) { + return base64url(await crypto.subtle.sign('HMAC', await hmacKey(secret), utf8(data))) +} + +/** Sign `value`, valid for `ttl` seconds */ +export async function seal(secret: string, value: object, ttl: number) { + const data = base64url( + utf8(JSON.stringify({ ...value, exp: Math.floor(Date.now() / 1000) + ttl })), + ) + return `${data}.${await signature(secret, data)}` +} + +/** The value back, or undefined when it was changed, is malformed or has expired */ +export async function unseal( + secret: string, + token: string | null | undefined, +): Promise { + const [data, given, extra] = token?.split('.') ?? [] + if (!data || !given || extra !== undefined) return undefined + if (!equalStrings(given, await signature(secret, data))) return undefined + try { + const value = JSON.parse(fromUtf8(fromBase64url(data))) + return typeof value.exp === 'number' && value.exp > Date.now() / 1000 ? (value as T) : undefined + } catch { + return undefined + } +} diff --git a/libs/sveltia-gateway/tsconfig.json b/libs/sveltia-gateway/tsconfig.json new file mode 100644 index 00000000..32a1de51 --- /dev/null +++ b/libs/sveltia-gateway/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["src"] +} diff --git a/libs/sveltia-gateway/tsconfig.lib.json b/libs/sveltia-gateway/tsconfig.lib.json new file mode 100644 index 00000000..a18761d0 --- /dev/null +++ b/libs/sveltia-gateway/tsconfig.lib.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false, + "rootDir": "src", + "outDir": "dist", + "customConditions": [] + }, + "include": ["src"], + "exclude": [ + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/test/**", + "src/**/spec/**", + "src/**/__tests__/**", + "src/**/fixtures/**" + ] +} diff --git a/libs/sveltia-gateway/vitest.config.ts b/libs/sveltia-gateway/vitest.config.ts new file mode 100644 index 00000000..3ab95ee7 --- /dev/null +++ b/libs/sveltia-gateway/vitest.config.ts @@ -0,0 +1 @@ +export { default } from '../../vitest.shared.ts' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 231a0fac..4a6efa4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1287,6 +1287,8 @@ importers: specifier: 'catalog:' version: 11.0.5 + libs/sveltia-gateway: {} + libs/unified-latex/unified-latex-stringify: dependencies: '@unified-latex/unified-latex-types': From 0a4acff0021d5f4f92b3f2886ce9cb9785aaeaf1 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Wed, 14 Oct 2026 13:26:42 +0200 Subject: [PATCH 03/22] feat(site): trialanderror.org, built and deployed from the monorepo The Astro site that merges the main site, the blog and the journal moves here from TrialAndErrorOrg/websites as a fresh copy. Its /admin sign-in now uses sveltia-gateway from the workspace, limited to the branch and folders the CMS edits. Underlay reads retry when rate limited. site.yml builds it on GitHub Actions, keeping pnpm, turbo and the site's image and article caches between runs, publishes ghcr.io/trialanderrororg/site and calls Coolify's deploy webhook. The Dockerfile only packages the build. CI type-checks the site but leaves building it to site.yml, and oxfmt skips it because it can't read .astro files. .env.example files are no longer ignored. --- .github/workflows/ci.yml | 6 +- .github/workflows/site.yml | 104 + .gitignore | 2 + .oxfmtrc.json | 1 + apps/site/.env.example | 28 + apps/site/.gitignore | 6 + apps/site/Dockerfile | 15 + apps/site/README.md | 256 ++ apps/site/astro.config.mjs | 65 + apps/site/package.json | 40 + apps/site/public/android-chrome-192x192.png | Bin 0 -> 1587 bytes apps/site/public/android-chrome-512x512.png | Bin 0 -> 3794 bytes apps/site/public/apple-touch-icon.png | Bin 0 -> 1540 bytes apps/site/public/browserconfig.xml | 9 + apps/site/public/favicon-16x16.png | Bin 0 -> 562 bytes apps/site/public/favicon-32x32.png | Bin 0 -> 657 bytes apps/site/public/favicon.ico | Bin 0 -> 15086 bytes apps/site/public/favicon.svg | 1 + apps/site/public/faviconn.svg | 11 + apps/site/public/mstile-150x150.png | Bin 0 -> 1473 bytes apps/site/public/safari-pinned-tab.svg | 15 + apps/site/public/site.webmanifest | 19 + apps/site/public/uploads/.gitkeep | 0 apps/site/scripts/blog-to-underlay.ts | 250 ++ apps/site/src/admin/config.yml | 231 ++ .../site/src/assets/fonts/OpenSans-Italic.ttf | Bin 0 -> 135380 bytes .../src/assets/fonts/OpenSans-Regular.ttf | Bin 0 -> 129796 bytes apps/site/src/assets/fonts/Overpass-Black.ttf | Bin 0 -> 168932 bytes apps/site/src/assets/fonts/Overpass-Bold.ttf | Bin 0 -> 169620 bytes .../src/assets/fonts/Overpass-SemiBold.ttf | Bin 0 -> 169332 bytes apps/site/src/components/AdConsent.astro | 58 + apps/site/src/components/ArticleCard.astro | 48 + apps/site/src/components/Downloads.astro | 46 + apps/site/src/components/Footer.astro | 52 + apps/site/src/components/Header.astro | 110 + apps/site/src/components/IssueCard.astro | 43 + apps/site/src/components/JournalNav.astro | 89 + apps/site/src/components/Logo.astro | 12 + apps/site/src/components/Markdown.astro | 13 + apps/site/src/components/Pagination.astro | 36 + apps/site/src/components/PersonCard.astro | 69 + apps/site/src/components/Picture.astro | 41 + apps/site/src/components/PostCard.astro | 34 + apps/site/src/components/PostList.astro | 18 + apps/site/src/components/Sections.astro | 37 + apps/site/src/components/SocialIcon.astro | 28 + .../src/components/sections/Buttons.astro | 16 + .../src/components/sections/Features.astro | 29 + apps/site/src/components/sections/Hero.astro | 39 + .../components/sections/LatestArticles.astro | 21 + .../src/components/sections/LatestPosts.astro | 26 + .../src/components/sections/Newsletter.astro | 31 + apps/site/src/components/sections/Team.astro | 16 + apps/site/src/components/sections/Text.astro | 22 + apps/site/src/config/navigation.yaml | 108 + apps/site/src/config/site.yaml | 34 + apps/site/src/content.config.ts | 79 + apps/site/src/content/pages/about.yaml | 37 + apps/site/src/content/pages/index.yaml | 49 + apps/site/src/integrations/pagefind.ts | 27 + apps/site/src/layouts/Base.astro | 71 + apps/site/src/layouts/BlogList.astro | 34 + apps/site/src/layouts/JournalArticle.astro | 261 ++ apps/site/src/layouts/JournalList.astro | 92 + apps/site/src/layouts/JournalPage.astro | 48 + apps/site/src/layouts/Page.astro | 29 + apps/site/src/layouts/Post.astro | 223 ++ apps/site/src/lib/admin.ts | 53 + apps/site/src/lib/format.ts | 21 + apps/site/src/lib/html.ts | 38 + apps/site/src/lib/journal-article.ts | 230 ++ apps/site/src/lib/og.ts | 245 ++ apps/site/src/lib/people.ts | 162 + apps/site/src/lib/preview.ts | 30 + apps/site/src/lib/settings.ts | 64 + apps/site/src/lib/sources/blog-strapi.ts | 119 + .../src/lib/sources/blog-underlay-records.ts | 58 + apps/site/src/lib/sources/blog-underlay.ts | 22 + apps/site/src/lib/sources/blog.ts | 58 + apps/site/src/lib/sources/journal.ts | 491 +++ apps/site/src/lib/sources/pages.ts | 35 + apps/site/src/lib/sources/underlay.ts | 92 + apps/site/src/lib/strapi.ts | 52 + apps/site/src/lib/theme.ts | 8 + apps/site/src/lib/types.ts | 67 + apps/site/src/pages/404.astro | 16 + apps/site/src/pages/[...slug].astro | 48 + apps/site/src/pages/admin/[...gateway].ts | 16 + apps/site/src/pages/admin/config.yml.ts | 24 + apps/site/src/pages/admin/index.astro | 18 + apps/site/src/pages/api/draft.ts | 31 + apps/site/src/pages/blog/[slug].astro | 21 + apps/site/src/pages/blog/api/draft.ts | 3 + apps/site/src/pages/blog/author/[slug].astro | 12 + .../site/src/pages/blog/category/[slug].astro | 12 + apps/site/src/pages/blog/index.astro | 29 + apps/site/src/pages/blog/page/[page].astro | 23 + apps/site/src/pages/blog/tag/[slug].astro | 12 + apps/site/src/pages/index.astro | 12 + apps/site/src/pages/journal/[slug].astro | 30 + apps/site/src/pages/journal/index.astro | 7 + .../site/src/pages/journal/issue/[slug].astro | 49 + apps/site/src/pages/journal/issues.astro | 13 + apps/site/src/pages/journal/kind/[slug].astro | 11 + apps/site/src/pages/journal/rss.xml.ts | 27 + apps/site/src/pages/jrn/[slug].astro | 36 + apps/site/src/pages/jrn/index.astro | 45 + apps/site/src/pages/jrn/kind/[slug].astro | 12 + apps/site/src/pages/og/blog/[slug].png.ts | 9 + apps/site/src/pages/og/default.png.ts | 5 + apps/site/src/pages/og/journal/[slug].png.ts | 9 + apps/site/src/pages/og/jrn/[slug].png.ts | 10 + apps/site/src/pages/people/[slug].astro | 119 + apps/site/src/pages/people/index.astro | 32 + apps/site/src/pages/preview/blog/[slug].astro | 19 + apps/site/src/pages/preview/page/[slug].astro | 23 + apps/site/src/pages/robots.txt.ts | 7 + apps/site/src/pages/rss.xml.ts | 24 + apps/site/src/pages/search.astro | 114 + apps/site/src/styles/global.css | 159 + apps/site/src/styles/journal.css | 63 + apps/site/src/styles/theme.css | 55 + apps/site/tsconfig.json | 10 + apps/site/turbo.json | 24 + pnpm-lock.yaml | 3120 ++++++++++++++--- 125 files changed, 8802 insertions(+), 437 deletions(-) create mode 100644 .github/workflows/site.yml create mode 100644 apps/site/.env.example create mode 100644 apps/site/.gitignore create mode 100644 apps/site/Dockerfile create mode 100644 apps/site/README.md create mode 100644 apps/site/astro.config.mjs create mode 100644 apps/site/package.json create mode 100644 apps/site/public/android-chrome-192x192.png create mode 100644 apps/site/public/android-chrome-512x512.png create mode 100644 apps/site/public/apple-touch-icon.png create mode 100644 apps/site/public/browserconfig.xml create mode 100644 apps/site/public/favicon-16x16.png create mode 100644 apps/site/public/favicon-32x32.png create mode 100644 apps/site/public/favicon.ico create mode 100644 apps/site/public/favicon.svg create mode 100644 apps/site/public/faviconn.svg create mode 100644 apps/site/public/mstile-150x150.png create mode 100644 apps/site/public/safari-pinned-tab.svg create mode 100644 apps/site/public/site.webmanifest create mode 100644 apps/site/public/uploads/.gitkeep create mode 100644 apps/site/scripts/blog-to-underlay.ts create mode 100644 apps/site/src/admin/config.yml create mode 100644 apps/site/src/assets/fonts/OpenSans-Italic.ttf create mode 100644 apps/site/src/assets/fonts/OpenSans-Regular.ttf create mode 100644 apps/site/src/assets/fonts/Overpass-Black.ttf create mode 100644 apps/site/src/assets/fonts/Overpass-Bold.ttf create mode 100644 apps/site/src/assets/fonts/Overpass-SemiBold.ttf create mode 100644 apps/site/src/components/AdConsent.astro create mode 100644 apps/site/src/components/ArticleCard.astro create mode 100644 apps/site/src/components/Downloads.astro create mode 100644 apps/site/src/components/Footer.astro create mode 100644 apps/site/src/components/Header.astro create mode 100644 apps/site/src/components/IssueCard.astro create mode 100644 apps/site/src/components/JournalNav.astro create mode 100644 apps/site/src/components/Logo.astro create mode 100644 apps/site/src/components/Markdown.astro create mode 100644 apps/site/src/components/Pagination.astro create mode 100644 apps/site/src/components/PersonCard.astro create mode 100644 apps/site/src/components/Picture.astro create mode 100644 apps/site/src/components/PostCard.astro create mode 100644 apps/site/src/components/PostList.astro create mode 100644 apps/site/src/components/Sections.astro create mode 100644 apps/site/src/components/SocialIcon.astro create mode 100644 apps/site/src/components/sections/Buttons.astro create mode 100644 apps/site/src/components/sections/Features.astro create mode 100644 apps/site/src/components/sections/Hero.astro create mode 100644 apps/site/src/components/sections/LatestArticles.astro create mode 100644 apps/site/src/components/sections/LatestPosts.astro create mode 100644 apps/site/src/components/sections/Newsletter.astro create mode 100644 apps/site/src/components/sections/Team.astro create mode 100644 apps/site/src/components/sections/Text.astro create mode 100644 apps/site/src/config/navigation.yaml create mode 100644 apps/site/src/config/site.yaml create mode 100644 apps/site/src/content.config.ts create mode 100644 apps/site/src/content/pages/about.yaml create mode 100644 apps/site/src/content/pages/index.yaml create mode 100644 apps/site/src/integrations/pagefind.ts create mode 100644 apps/site/src/layouts/Base.astro create mode 100644 apps/site/src/layouts/BlogList.astro create mode 100644 apps/site/src/layouts/JournalArticle.astro create mode 100644 apps/site/src/layouts/JournalList.astro create mode 100644 apps/site/src/layouts/JournalPage.astro create mode 100644 apps/site/src/layouts/Page.astro create mode 100644 apps/site/src/layouts/Post.astro create mode 100644 apps/site/src/lib/admin.ts create mode 100644 apps/site/src/lib/format.ts create mode 100644 apps/site/src/lib/html.ts create mode 100644 apps/site/src/lib/journal-article.ts create mode 100644 apps/site/src/lib/og.ts create mode 100644 apps/site/src/lib/people.ts create mode 100644 apps/site/src/lib/preview.ts create mode 100644 apps/site/src/lib/settings.ts create mode 100644 apps/site/src/lib/sources/blog-strapi.ts create mode 100644 apps/site/src/lib/sources/blog-underlay-records.ts create mode 100644 apps/site/src/lib/sources/blog-underlay.ts create mode 100644 apps/site/src/lib/sources/blog.ts create mode 100644 apps/site/src/lib/sources/journal.ts create mode 100644 apps/site/src/lib/sources/pages.ts create mode 100644 apps/site/src/lib/sources/underlay.ts create mode 100644 apps/site/src/lib/strapi.ts create mode 100644 apps/site/src/lib/theme.ts create mode 100644 apps/site/src/lib/types.ts create mode 100644 apps/site/src/pages/404.astro create mode 100644 apps/site/src/pages/[...slug].astro create mode 100644 apps/site/src/pages/admin/[...gateway].ts create mode 100644 apps/site/src/pages/admin/config.yml.ts create mode 100644 apps/site/src/pages/admin/index.astro create mode 100644 apps/site/src/pages/api/draft.ts create mode 100644 apps/site/src/pages/blog/[slug].astro create mode 100644 apps/site/src/pages/blog/api/draft.ts create mode 100644 apps/site/src/pages/blog/author/[slug].astro create mode 100644 apps/site/src/pages/blog/category/[slug].astro create mode 100644 apps/site/src/pages/blog/index.astro create mode 100644 apps/site/src/pages/blog/page/[page].astro create mode 100644 apps/site/src/pages/blog/tag/[slug].astro create mode 100644 apps/site/src/pages/index.astro create mode 100644 apps/site/src/pages/journal/[slug].astro create mode 100644 apps/site/src/pages/journal/index.astro create mode 100644 apps/site/src/pages/journal/issue/[slug].astro create mode 100644 apps/site/src/pages/journal/issues.astro create mode 100644 apps/site/src/pages/journal/kind/[slug].astro create mode 100644 apps/site/src/pages/journal/rss.xml.ts create mode 100644 apps/site/src/pages/jrn/[slug].astro create mode 100644 apps/site/src/pages/jrn/index.astro create mode 100644 apps/site/src/pages/jrn/kind/[slug].astro create mode 100644 apps/site/src/pages/og/blog/[slug].png.ts create mode 100644 apps/site/src/pages/og/default.png.ts create mode 100644 apps/site/src/pages/og/journal/[slug].png.ts create mode 100644 apps/site/src/pages/og/jrn/[slug].png.ts create mode 100644 apps/site/src/pages/people/[slug].astro create mode 100644 apps/site/src/pages/people/index.astro create mode 100644 apps/site/src/pages/preview/blog/[slug].astro create mode 100644 apps/site/src/pages/preview/page/[slug].astro create mode 100644 apps/site/src/pages/robots.txt.ts create mode 100644 apps/site/src/pages/rss.xml.ts create mode 100644 apps/site/src/pages/search.astro create mode 100644 apps/site/src/styles/global.css create mode 100644 apps/site/src/styles/journal.css create mode 100644 apps/site/src/styles/theme.css create mode 100644 apps/site/tsconfig.json create mode 100644 apps/site/turbo.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7eea1ec..7363b7a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,11 @@ jobs: - run: pnpm format:check - - run: pnpm turbo run build typecheck test --cache-dir=.turbo/cache + # The site is built and deployed by site.yml: its build reads Strapi, Underlay and + # site-content. Here it's only type-checked. + - run: pnpm turbo run build typecheck test --cache-dir=.turbo/cache --filter='!site' + + - run: pnpm turbo run typecheck --cache-dir=.turbo/cache --filter=site # Non-blocking reminder: list packages that changed without a changeset. - name: Changeset status diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml new file mode 100644 index 00000000..f89a9eeb --- /dev/null +++ b/.github/workflows/site.yml @@ -0,0 +1,104 @@ +# Builds the website (apps/site), publishes it as ghcr.io/trialanderrororg/site and asks Coolify +# to deploy it. Fast because it keeps every cache between runs: pnpm's store, turbo's cache (the +# libraries the site uses) and the site's own caches of resized images, share images and journal +# article HTML. The image only packages the built site, see apps/site/Dockerfile. +# +# Secrets: STRAPI_TOKEN and UNDERLAY_TOKEN (read-only, for the build), COOLIFY_DEPLOY_URL and +# COOLIFY_TOKEN (optional, to deploy). See apps/site/README.md, "Deploying". +name: site + +on: + push: + branches: [main] + paths: + - apps/site/** + - libs/sveltia-gateway/** + - pnpm-lock.yaml + - .github/workflows/site.yml + # Sent by site-content when an editor saves in /admin, and by Strapi when something is published + repository_dispatch: + types: [content-updated] + # New journal articles reach Underlay without telling anyone + schedule: + - cron: '17 4 * * *' + workflow_dispatch: + +permissions: {} + +# Only the newest content matters: a save cancels the build of the one before +concurrency: + group: site + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + env: + IMAGE: ghcr.io/trialanderrororg/site + # Read here so the Deploy step can skip itself when it isn't set + COOLIFY_DEPLOY_URL: ${{ secrets.COOLIFY_DEPLOY_URL }} + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v6 + with: + version: 11.3.0 + + - uses: actions/setup-node@v7 + with: + node-version: 24 + cache: pnpm + + - run: pnpm install --frozen-lockfile + + - name: Restore turbo cache + uses: actions/cache@v6 + with: + path: .turbo/cache + key: turbo-site-${{ runner.os }}-${{ github.sha }} + restore-keys: | + turbo-site-${{ runner.os }}- + turbo-${{ runner.os }}-main- + + # Content-addressed, so restoring the newest copy is always safe; each run saves a fresh one + - name: Restore the site's image and article caches + uses: actions/cache@v6 + with: + path: | + apps/site/node_modules/.astro + apps/site/node_modules/.cache + key: site-assets-${{ github.run_id }} + restore-keys: site-assets- + + - name: Build + run: pnpm turbo run build --filter=site... --cache-dir=.turbo/cache + env: + STRAPI_TOKEN: ${{ secrets.STRAPI_TOKEN }} + UNDERLAY_TOKEN: ${{ secrets.UNDERLAY_TOKEN }} + + # The built site plus only its production dependencies + - name: Package + run: pnpm --filter site deploy --prod --legacy "$RUNNER_TEMP/site" + + - name: Build and push the image + run: | + echo "$GITHUB_TOKEN" | docker login ghcr.io -u "$GITHUB_ACTOR" --password-stdin + docker build "$RUNNER_TEMP/site" -f apps/site/Dockerfile \ + --label org.opencontainers.image.source=https://github.com/${{ github.repository }} \ + --label org.opencontainers.image.revision=${{ github.sha }} \ + -t "$IMAGE:latest" -t "$IMAGE:${{ github.sha }}" + docker push --all-tags "$IMAGE" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Deploy + if: env.COOLIFY_DEPLOY_URL != '' + run: | + curl --fail --silent --show-error -H "Authorization: Bearer $COOLIFY_TOKEN" "$COOLIFY_DEPLOY_URL" + env: + COOLIFY_TOKEN: ${{ secrets.COOLIFY_TOKEN }} diff --git a/.gitignore b/.gitignore index 74abbcb5..0b56a374 100644 --- a/.gitignore +++ b/.gitignore @@ -356,6 +356,8 @@ thebiggestfile.ts .env .env.* +# Examples of the variables, without values, belong in the repository +!.env.example graph # typedoc scratch output (scripts/readme.ts); hand-written docs/*.md are tracked **/docs/* diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 48792fab..ec266856 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -8,6 +8,7 @@ "sortPackageJson": false, "ignorePatterns": [ "dist", + "apps/site", "deprecated", "coverage", ".next", diff --git a/apps/site/.env.example b/apps/site/.env.example new file mode 100644 index 00000000..e6bc3ab7 --- /dev/null +++ b/apps/site/.env.example @@ -0,0 +1,28 @@ +# Where blog posts, authors, team and pages come from +STRAPI_URL=https://cms.trialanderror.org +# A read-only Strapi API token. Needed for drafts, optional for published content. +STRAPI_TOKEN= +# Shared secret for draft previews. Must equal DRAFT_SECRET in Strapi (its preview button sends it) +DRAFT_SECRET= +# Journal articles (and, later, the blog) come from Underlay +UNDERLAY_URL=https://www.underlay.org +# Optional. Without it Underlay reads are anonymous and rate limited to 60 requests a minute. +UNDERLAY_TOKEN= +# strapi (default) or underlay. With underlay the blog is read from this collection, +# filled by scripts/blog-to-underlay.ts +BLOG_SOURCE=strapi +UNDERLAY_BLOG_COLLECTION=centeroftrialanderror/blog + +# How editors sign in to /admin: github (their own GitHub account, the default), +# microsoft (Entra, no GitHub account needed) or dev (a test editor, pnpm dev only). +# See "Microsoft sign-in for /admin" in the README. +ADMIN_AUTH=github +ADMIN_SESSION_SECRET= +ENTRA_TENANT_ID= +ENTRA_CLIENT_ID= +ENTRA_CLIENT_SECRET= +GITHUB_APP_ID= +GITHUB_APP_PRIVATE_KEY= +# Local testing only: a token that stands in for the GitHub App, and a switch that refuses writes +# GITHUB_CONTENT_TOKEN= +# ADMIN_READ_ONLY=true diff --git a/apps/site/.gitignore b/apps/site/.gitignore new file mode 100644 index 00000000..d8ca479c --- /dev/null +++ b/apps/site/.gitignore @@ -0,0 +1,6 @@ +dist/ +.astro/ +node_modules/ +.env +dist-*/ +underlay-export/ diff --git a/apps/site/Dockerfile b/apps/site/Dockerfile new file mode 100644 index 00000000..724872f9 --- /dev/null +++ b/apps/site/Dockerfile @@ -0,0 +1,15 @@ +# Packaging only. CI (.github/workflows/site.yml) builds the site and runs +# `pnpm --filter site deploy --prod `, which leaves the built site with +# just its production dependencies. This image copies that directory in, so +# it builds in seconds and holds no source or build tools. +# +# Locally, the same: pnpm turbo run build --filter=site... +# pnpm --filter site deploy --prod --legacy /tmp/site +# docker build -f apps/site/Dockerfile /tmp/site +FROM node:24-slim +ENV NODE_ENV=production HOST=0.0.0.0 PORT=4321 +WORKDIR /app +COPY --chown=node:node . . +USER node +EXPOSE 4321 +CMD ["node", "dist/server/entry.mjs"] diff --git a/apps/site/README.md b/apps/site/README.md new file mode 100644 index 00000000..c3f4657d --- /dev/null +++ b/apps/site/README.md @@ -0,0 +1,256 @@ +# trialanderror.org + +The website of the Center of Trial and Error: the main site, the blog (formerly +blog.trialanderror.org) and the Journal of Trial and Error's articles, in one +Astro site. + +Everything is built into plain HTML files ahead of time. The only parts that run +on a server are draft previews (`/preview/...` and `/api/draft`). + +## Where things come from + +| What | Where it lives | How to change it | +| --- | --- | --- | +| Homepage, About and other section-built pages | `src/content/pages/*.yaml` | `/admin`, or edit the file | +| Menus, footer, social links | `src/config/navigation.yaml` | `/admin` → Settings → Menus | +| Site name, newsletter, analytics | `src/config/site.yaml` | `/admin` → Settings → Site | +| Colours, fonts, borders, shadows | `src/styles/theme.css` | edit the file | +| Blog posts, authors, categories, tags | Strapi (cms.trialanderror.org) | Strapi | +| Team members | Strapi | Strapi | +| Free-text pages (donate, events, award calls) | Strapi → Pages | Strapi | +| Journal articles | Underlay ([centeroftrialanderror/jote](https://www.underlay.org/centeroftrialanderror/jote)), exported from PubPub | PubPub | + +A page in `src/content/pages` wins over a Strapi page with the same slug. + +## For editors + +### Publishing a blog post + +Write and publish it in Strapi as before. The site rebuilds when Strapi tells it +something changed (see *Rebuilding* below), which takes a minute or two. + +To see a draft before publishing, use the **Preview** button in Strapi. It opens +the post as it will look, with a "Draft preview" bar on top. Preview links work +for an hour. + +### Changing the homepage or another page + +Go to `/admin` and sign in. Pages are lists of **sections**, drawn top to +bottom. You can add, remove, reorder and edit sections: + +- **Big intro**: the large title block. Each line of the title gets its own box. +- **Text**: a block of text, optionally with a title and a coloured background. +- **Columns**: two or three boxes side by side (like "What do we do?"). +- **Latest blog posts** / **Latest journal articles**: filled in automatically. +- **Team**: everyone in Strapi's team list who has a photo. +- **Newsletter sign-up** +- **Buttons** + +Text fields take Markdown: `**bold**`, `*italic*`, `[a link](https://...)`. + +To make a new page, click **New Page** in `/admin`. Its address is its title +in lowercase with dashes (`Open Positions` becomes `/open-positions`). + +Saving in `/admin` makes a commit to the repository, which triggers a rebuild. + +### Signing in to /admin + +With `ADMIN_AUTH=microsoft`, editors sign in with their Center Microsoft +account and need no GitHub account. Otherwise (`ADMIN_AUTH=github`, the +default) they need a GitHub account with write access to +`TrialAndErrorOrg/trialanderror` and sign in with a +[personal access token](https://github.com/settings/tokens) (fine-grained, +repository contents read and write). + +## For developers + +The site is `apps/site` in the `trialanderror` monorepo. From the repository root: + +```sh +cp apps/site/.env.example apps/site/.env # fill in the tokens +pnpm install +pnpm turbo run dev --filter=site # http://localhost:4321 +pnpm turbo run build --filter=site... # into apps/site/dist, then `pnpm --filter site start` +``` + +Turbo builds the workspace packages the site uses (`sveltia-gateway`) first. +The site is not formatted by the repository's `oxfmt`, which can't read +`.astro` files; it keeps its own style (tabs, double quotes). + +### Layout + +``` +src/ + config/ site.yaml, navigation.yaml: settings editors can change + content/pages/ section-built pages (index.yaml is the homepage) + content.config.ts the section types and their fields + styles/theme.css every colour, font and size token + styles/global.css shared component classes (.card, .button, .label, .prose-site...) + components/ Header, Footer, cards; sections/ holds one component per section type + layouts/ Base (every page), Post (blog post), Page (CMS page), BlogList + lib/sources/ one module per content source: blog (Strapi), journal (Underlay), pages + pages/ routes +admin/config.yml the /admin editing interface (src/admin/config.yml) +``` + +### Restyling + +Change the values in `src/styles/theme.css`. Components only use those tokens +(`bg-accent`, `border-ink`, `shadow-hard`, `font-heading`) and the classes in +`global.css`, so a new palette or font is a one-file change. To change how all +cards or buttons look, edit `.card` or `.button` in `global.css`. + +### Adding a section type + +1. Make `src/components/sections/MySection.astro`. +2. Add its fields to the `section` union in `src/content.config.ts`. +3. Register it in `src/components/Sections.astro`. +4. Describe its fields under `sections.types` in `src/admin/config.yml`, so + editors can use it. + +### The journal + +`/journal` lists the articles from Underlay, filtered by type +(`/journal/kind/...`) and issue (`/journal/issue/...`). `/journal/` renders +the latest release's HTML export with downloads (PDF, EPUB, Word, JATS, LaTeX) +and citation metadata. Set `ARTICLE_PAGES = false` in +`src/lib/sources/journal.ts` to link to PubPub instead and skip those pages. +Article HTML is cached by hash in `node_modules/.cache/underlay`. + +`/jrn` is the archive of the Journal for Reproducibility in Neuroscience +([centeroftrialanderror/jrn](https://www.underlay.org/centeroftrialanderror/jrn)), +which is no longer updated. It uses the same article pages, in grey. Each +journal is an entry in `JOURNALS` in `src/lib/sources/journal.ts` (its +collection, path, article types and issue tags), and `journal("jrn")` gives +its loaders. + +### People + +`/people/` has a page for every team member and blog author, with their +posts and journal articles (`src/lib/people.ts`). Strapi keeps team members and +guest authors apart, so records with the same ORCID iD, or else the same full +name, become one person. Journal articles join a person on ORCID iD, or on the +exact full name when the iDs don't conflict. `/blog/author/` redirects +there from every slug a person had. + +### Built at build time, not by services + +- Share images (`/og/...png`) are drawn with satori in `src/lib/og.ts`, using + the colours from `theme.css`. Cached in `node_modules/.astro/og`. +- Feeds: `/rss.xml` (blog) and `/journal/rss.xml`. +- Search is [Pagefind](https://pagefind.app): an index written after the build + (`src/integrations/pagefind.ts`) and searched in the browser at `/search`. + Only elements marked `data-pagefind-body` are indexed. + +Keep `node_modules/.astro` and `node_modules/.cache` between builds if the host +allows it. A cold build downloads and resizes every image and draws every share +image again. + +### Switching content sources + +Components only see the types in `src/lib/types.ts`. Each source converts its +data into those. To read the blog from somewhere else, write a module like +`lib/sources/blog-strapi.ts` and select it in `lib/sources/blog.ts` +(`BLOG_SOURCE=underlay` is already wired to `blog-underlay.ts`). + +### Previews + +`/api/draft?secret=...&slug=...` is what Strapi's preview button calls. It +checks the secret against `DRAFT_SECRET`, sets a cookie for an hour and +redirects to `/preview/blog/` or `/preview/page/`, which render +the draft from Strapi on request. To preview another kind of content later, add +a `src/pages/preview//[slug].astro` with `export const prerender = false`. + +### Microsoft sign-in for /admin + +Sveltia CMS normally talks to GitHub straight from the browser, with the +editor's own GitHub token. With `ADMIN_AUTH=microsoft` the site stands in +between, through `sveltia-gateway` (`libs/sveltia-gateway` in this repository, +see its README): + +- `/admin/auth` sends the editor to Microsoft and `/admin/callback` takes them + back, then hands the CMS a signed session instead of a GitHub token. +- `/admin/api/...` is what the CMS uses as GitHub's API. It answers "who am I" + from the session and passes the rest to GitHub as a GitHub App. Editors can + only commit to the branch in `src/admin/config.yml` and only change the + folders the CMS edits (`src/lib/admin.ts` reads them from that file). +- `/admin/config.yml` is generated from `src/admin/config.yml` and points the + CMS at those routes. Commit messages carry the editor's name. + +To set it up: + +1. **Entra:** register an app (single tenant) with the redirect URI + `https://trialanderror.org/admin/callback` and a client secret. Under + Enterprise applications, set "Assignment required" to yes and assign the + editors or a group: that is who can sign in. Set `ENTRA_TENANT_ID`, + `ENTRA_CLIENT_ID` and `ENTRA_CLIENT_SECRET`. +2. **GitHub:** create a GitHub App in the TrialAndErrorOrg organisation with + repository permissions Contents and Pull requests (read and write), no + webhook, and install it only on the repository the CMS edits. Set + `GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` (the .pem as downloaded, + newlines may be written as `\n`). +3. Set `ADMIN_SESSION_SECRET` to 32 or more random characters and + `ADMIN_AUTH=microsoft`. These are read when the server runs, not at build. + +To try it locally without either: `ADMIN_AUTH=dev` signs everyone in as a test +editor (only in `pnpm dev`), `GITHUB_CONTENT_TOKEN=$(gh auth token)` stands in +for the app, and `ADMIN_READ_ONLY=true` refuses every write. + +### Rebuilding + +Content is fetched at build time, so the site has to rebuild when content +changes: + +- Strapi: a webhook on entry publish, unpublish, update and delete that sends + a `content-updated` repository dispatch to this repository (GitHub's + `POST /repos/TrialAndErrorOrg/trialanderror/dispatches`, with a token that may + trigger workflows). +- `/admin`: every save is a commit. While the content lives in this repository, + the push itself starts the build. Once it moves to site-content, that + repository sends the same dispatch. +- Journal: the daily run picks up new articles from Underlay. + +All three start `.github/workflows/site.yml` (see *Deploying*). + +### Deploying + +`.github/workflows/site.yml` builds the site on GitHub Actions and publishes +the image `ghcr.io/trialanderrororg/site` (`:latest` and `:`), then +calls Coolify's deploy webhook. It runs on pushes that touch the site, on a +`content-updated` repository dispatch (from site-content or Strapi), daily for +new journal articles, and by hand. A newer run cancels an older one. + +It is quick because it keeps every cache between runs: pnpm's store, turbo's +cache for the workspace packages, and the site's own caches of resized images, +share images and journal article HTML (`node_modules/.astro`, +`node_modules/.cache`). The site's turbo `build` task is never cached itself, +since its pages come from services turbo can't see. The `Dockerfile` only +packages the build: `pnpm deploy --prod` leaves the built site with just its +production dependencies, and the image copies that in. + +Setup: + +- Repository secrets: `STRAPI_TOKEN` and `UNDERLAY_TOKEN` (read-only, used at + build), `COOLIFY_DEPLOY_URL` and `COOLIFY_TOKEN` (Coolify, the app's deploy + webhook and an API token). Without the Coolify ones the image is only + published. +- The first push creates the package on GitHub, private. Make it public under + the organisation's Packages, or give Coolify a token to pull it. +- In Coolify: a "Docker Image" application for `ghcr.io/trialanderrororg/site:latest`, + port 4321, with the runtime variables from `.env.example` (`DRAFT_SECRET`, + `STRAPI_TOKEN` for previews, the `ADMIN_*`, `ENTRA_*` and `GITHUB_APP_*` ones). + +The image holds no secrets: Astro reads them from the environment when the +server runs. + +Elsewhere: any host that runs Node or Docker works, and so does any host with +an Astro adapter (replace `@astrojs/node` in `astro.config.mjs`). + +### Redirects to set up when this goes live + +- `blog.trialanderror.org/*` → `trialanderror.org/blog/*` (keeps old links and + blog DOIs working; `/blog/api/draft` exists for the old preview URL). +- `blog.trialanderror.org/author/*` → `trialanderror.org/blog/author/*` falls + out of the rule above. +- The old blog's page list (`blog.trialanderror.org/blog/2`) would land on + `/blog/blog/2`; redirect `/blog/blog/*` to `/blog/page/*` if that matters. diff --git a/apps/site/astro.config.mjs b/apps/site/astro.config.mjs new file mode 100644 index 00000000..b8b33bde --- /dev/null +++ b/apps/site/astro.config.mjs @@ -0,0 +1,65 @@ +import node from "@astrojs/node"; +import sitemap from "@astrojs/sitemap"; +import tailwindcss from "@tailwindcss/vite"; +import { defineConfig, envField, fontProviders } from "astro/config"; +import icon from "astro-icon"; +import pagefind from "./src/integrations/pagefind"; + +export default defineConfig({ + site: "https://trialanderror.org", + trailingSlash: "ignore", + // Lets parallel builds write to separate folders + outDir: process.env.ASTRO_OUT_DIR ?? "./dist", + // Every page is prebuilt. Only routes that set `prerender = false` (the + // draft previews) need the server. Swap this adapter for another host's + // (netlify, vercel, cloudflare) without touching anything else. + adapter: node({ mode: "standalone" }), + // /blog/author/* only redirects to /people/* + integrations: [icon(), sitemap({ filter: (page) => !page.includes("/preview/") && !page.includes("/blog/author/") }), pagefind()], + vite: { + plugins: [tailwindcss()], + }, + image: { + // Remote images from these hosts are downloaded and optimised at build + // time, so the built site does not depend on them at runtime. + domains: ["cms.trialanderror.org", "assets.pubpub.org", "www.underlay.org"], + }, + fonts: [ + { + provider: fontProviders.google(), + name: "Overpass", + cssVariable: "--font-overpass", + weights: [400, 600, 700, 800, 900], + fallbacks: ["sans-serif"], + }, + { + provider: fontProviders.google(), + name: "Open Sans", + cssVariable: "--font-open-sans", + weights: [400, 500, 600, 700], + styles: ["normal", "italic"], + fallbacks: ["sans-serif"], + }, + ], + env: { + schema: { + STRAPI_URL: envField.string({ context: "server", access: "secret", default: "https://cms.trialanderror.org" }), + STRAPI_TOKEN: envField.string({ context: "server", access: "secret", optional: true }), + DRAFT_SECRET: envField.string({ context: "server", access: "secret", optional: true }), + UNDERLAY_URL: envField.string({ context: "server", access: "secret", default: "https://www.underlay.org" }), + UNDERLAY_TOKEN: envField.string({ context: "server", access: "secret", optional: true }), + UNDERLAY_BLOG_COLLECTION: envField.string({ context: "server", access: "secret", default: "centeroftrialanderror/blog" }), + BLOG_SOURCE: envField.enum({ context: "server", access: "secret", values: ["strapi", "underlay"], default: "strapi" }), + // How editors sign in to /admin: their own GitHub account, or Microsoft (see src/lib/admin) + ADMIN_AUTH: envField.enum({ context: "server", access: "secret", values: ["github", "microsoft", "dev"], default: "github" }), + ADMIN_SESSION_SECRET: envField.string({ context: "server", access: "secret", optional: true }), + ADMIN_READ_ONLY: envField.boolean({ context: "server", access: "secret", default: false }), + ENTRA_TENANT_ID: envField.string({ context: "server", access: "secret", optional: true }), + ENTRA_CLIENT_ID: envField.string({ context: "server", access: "secret", optional: true }), + ENTRA_CLIENT_SECRET: envField.string({ context: "server", access: "secret", optional: true }), + GITHUB_APP_ID: envField.string({ context: "server", access: "secret", optional: true }), + GITHUB_APP_PRIVATE_KEY: envField.string({ context: "server", access: "secret", optional: true }), + GITHUB_CONTENT_TOKEN: envField.string({ context: "server", access: "secret", optional: true }), + }, + }, +}); diff --git a/apps/site/package.json b/apps/site/package.json new file mode 100644 index 00000000..df576ec4 --- /dev/null +++ b/apps/site/package.json @@ -0,0 +1,40 @@ +{ + "name": "site", + "version": "0.0.0", + "private": true, + "type": "module", + "files": [ + "dist" + ], + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "start": "node dist/server/entry.mjs", + "typecheck": "astro check" + }, + "dependencies": { + "@astrojs/node": "^11.1.7", + "@astrojs/rss": "^4.0.19", + "@astrojs/sitemap": "^3.7.4", + "@iconify-json/lucide": "^1.2.143", + "@iconify-json/simple-icons": "^1.2.100", + "astro": "^7.3.8", + "astro-icon": "^1.2.0", + "github-slugger": "^2.0.0", + "marked": "^18.1.1", + "satori": "^0.51.0", + "sharp": "^0.35.5", + "sveltia-gateway": "workspace:^", + "yaml": "^2.9.1" + }, + "devDependencies": { + "@astrojs/check": "^0.9.10", + "@tailwindcss/typography": "^0.5.20", + "@tailwindcss/vite": "^4.3.3", + "@types/node": "^24.19.2", + "pagefind": "^1.5.2", + "tailwindcss": "^4.3.3", + "typescript": "~5.9.3" + } +} diff --git a/apps/site/public/android-chrome-192x192.png b/apps/site/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..56b18e09d8c1031921250a960568adbaa7f781f8 GIT binary patch literal 1587 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE1xWt5x}*n4v7|ftIx;Y9?C1WI$O_~uBzpw; zGB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHrx4R3&|Mvbf`++?6 z5>H=O_GeszVjL+RjM`5~bUZ6Ci+(-aX^@>Mt}ai{a(R7dk; z_6If;F69>H-4!Za@-%(XyItmm<Z($2Kf@(-Y(%EWRvnf(Yjd(*ozJ0do@XqHi|IT_j*Q;%niKl8Duu172_1cRh3N<@dSN0RyCUKx`E{8j$xSNitJsB%g?XyMD8cW>Ss7VZyg z<1VXKWgCgSFe-`5ul#AQ;?c0p?vl=4)tOvE57z8kvRygak;&(^f0gwnQH2AgXD>ug z+{nNvRxEyDe3nGIzP-u|9Z7y31q%Z6TJFfUO&VIf|s`gF@;FR29A zdREDF#TSendwadB(^jn{d>u>FN@5U-`Sw}U_N`xHqZPQs=14nU)=u4PO#cXKYhy|RyGTU zx*eMYJ(;guJkK9W*7eaC5cS5CP+?MuRziIdrGtXtmPvsrt${?eVs^IH-@ z`IwlbNSvzIl`bonhW1`I)`|&UJMVhvcjNiiTlF8AKc1m-b=Kve>#tX>XwNf#QVc5t zBAo3n2TSBmRePy9qwyc>`&Wlr^`!mC0eN`ey06$*;-(=u~X z6-p`#QWY`_N|G5ED&{=?#KTb-rlE1l|MVHpr$G$N%G`R%+``Jj-jhX`g%w;HOb(|o vD{l@_IDO;Fi6du@$Q)rm-QcmnOON4|xM0aAC)24wD;PXo{an^LB{Ts5vSy3- literal 0 HcmV?d00001 diff --git a/apps/site/public/android-chrome-512x512.png b/apps/site/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d10160a3db76e2551f494581f7b82d8315534cfc GIT binary patch literal 3794 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 literal 0 HcmV?d00001 diff --git a/apps/site/public/apple-touch-icon.png b/apps/site/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3c231e11075d1fd44b0133b05a7be094c0337be9 GIT binary patch literal 1540 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD1xQXma&9M(Vo7)Ob!1@J*w6hZkrl{SNcITw zWnidMV_;}#VPN@6~X=gc;vmW^PQ@H1*U(Ud&~LVg2_)F&nS2iU*c8lD86eI|JQx*Sk_E< z)}Np8Vs(}Ce)hE+7L|VuRFxN5FD3D-?H=EmJ6Ef%=D&2;+PJ*@dui0?#_XEK{6=Sa z+Wv*jXJ5Br$>v?|x#m_HUzX{y-G6AbeD#?$ZN}DpqB1Kltg(Wy*X?HxkGQt}Oqe!P z>%O(U2Soo}OTY2rwPX`t~97iJ?aD{Pj~hs!l3lo z&({GKs#pX}uOBZmeslpP*u~61RY0M6pafh~;$U+Tn1X-2Xn+W*O9eGYYrkW=|7%ZZ zu<@*(eW!Es#Hw~g{uL-)KKWP3dH4INylPd-Kje0 zL}hm8xxeL1RjE7T*|-0-nso2Ld#yK@1AP_mAF^2ZS9A?mYn|`$?Y$uxLF{Z%iEi;u z|2@Pd2O{uc|Es?S^-cI3Z=6Q%hJo>x6yHovGno6Ynqr1o!bX58OPkKKOi z&6&n-vuK~0cfZul`|qZ3_8WjRw&e9BQ2EfdEI9w5&Z7SeD+Tvkqedff|6tghKf0lKk;xBhG}S=@;`mX^Jx$R zvog0{GPkg@u=ivUW?==F29v`n%*vZX6i(l`a^lFDBQi(WPd9ih@X}*=B`#R<$;oso P& + + + + + #da532c + + + diff --git a/apps/site/public/favicon-16x16.png b/apps/site/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..a496b4d90f59d61fb04efe55b4eeec94304fb467 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`!g;55I#0xYg;n3R;HoQ@q*Omh?VFMarLPVr9ll<%{P>a}-> zeh=Hd?6phJE8_-@I{w=AqMt>%S)0_|->C>YygKuaf5Q^>=@Ohmj(I7$GEJ^C%log@ z?)sQ?bJ`Y$WBbB)6;0=xyUSpP#pVl}&23K1S-tWvo5=gDjA`e3pPDk)a?W~o`oJ73 zsdaCaOLKPf$lRFt;=~gUvsHq*xm&iZIxqKY#>JxnKi0p~Zz$HzQQEg`4$zCLC9V-A zDTyViR>?)FK#IZ0z{p6~&_LJFJjBSz%D}?P*i75Nz{3oE!Zm>f=FR^A+k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJKpuOE zr>`sfGcG|f4i%@hr-6nunt8f7hIkymJJrzpaDYhb{^e`CIGSWdrtsxG3X_RtNuSHY z&hGA5AoA+LlD;N;hl0s@P0d!;<>&cdDCl`<4X{c}6`M_9A9*bSBi=WO|yYP{ZjQ94rnFvcy_ zGiZTuZ}++F%NMxoA1QnAN#xrz>;4})n+~$rz5W}?k5e(k}`ujJgTruO>tKi13b>+h&8weA82s%nXAL`h0wNvc(H zQ7VvPFfuSQ(ls>DH8c+~GO{wTurfB&HZZUwl zArU1(iRB6fMfqu&IjIUIl?AB^nFS@u3=9=>9)IHDC=AokIOTu(jOWuJ24-b$y<~1- zWnu5hBFw@HE)6D!Q<#-EhbWxBaplC3Ge=~Ou%B-5Sm33{@Jd{;RG<|Mp00i_ I>zopr06!J-asU7T literal 0 HcmV?d00001 diff --git a/apps/site/public/favicon.ico b/apps/site/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e714df47a9ce9bb78a9188e0044910b711d42abe GIT binary patch literal 15086 zcmeHOTSygM6duz8Lm?0!Ooj8{4?d)nf)^D1D+P%xF9kga{-_Tj1YTa$B2Z8As41pMVk+KV)VxKermcUz{X55V8RwjFj-3w9g5{psXVzY8e|ydB zz1LoHoE>M+UB1lmrH1?WFOCb~I8LKExWB-0(|p|pzQphM9XPIlf54l6h8N-f;TiRe zy#6l?{ucB1w#;O2Z%>YnjyA=xna7>+wQJX?tE-E;ySr_IVJmDF?7w&K9_{b%ldTYJ zh0Ut{))_Gsf9v2bXjSnSkg!g9+VLM78>5Vj3`$E&W97)mh|xd{4h~XwcD5|e%F3du zsw&#v-ZpAaw?ZlYZEbCI_Uu_Ue_$SOZf@3Xo?X|})M)1yVV*Ik3ah-b7s$9?(XjN z<;#~t2T*vW)PLmK|EImbuV25Gg};-N6TNx!Mj`5l;!5%F?CdmYe_dUj-ulPa*O&70 z@~EVwgo=xc89#aQg!=mW4h=K&N~!(B!^7n2>MH5~-Fz&@+1XjI4`S;#^hqu$wSRYa zm(tVIS={TW_2>8R-zhmcna-R!BiRRQ*blt0#;vTZq`0^^djI~tD1=|Xex-_v3c7Xc z7G1x7-H5MVy-E!Y4WhDAl}ho~ZTsiXpC)5p7_T2ceuy&U<&q`sm#f$IE zAqW2tA3o5tXV2)xix(%((9_b=LU>=KNRIu5g@uyeKe2DRk~&N8-$zGB$;->@xAno& z_G26|m)^K>gESfqd3bo77`wT-QFL@Pef#!J%6-`PT5kLw^Xc5&98FD4(e(86i7?t; zTwF9cpUCllNg%BBqiVmEfIm>H;;-Vb1Oe55l%S_v))0SN&mXYy{0&>qoq_EtSrGx` zX=!-=n`dpF7N5%{LY;h_)%g7R^OTyJN(BW4l%JpfTNt{a6S`eoTn2aAF7ekDc>R(=7rc0MDG5y}&-h`NKczC!ThlYl-Sg=z4K|w)A z{nyq1{P}YhTf+IiAs-cUlGA@v`r!j|$yW3u<`NtnEQ$X~_TLut7ZnxB9e%Ulf5fN4 z!orO3UtL`#KR-WKk8|9Fgak@TN}|NXL>A9QPKgwm>wjni>jFDFJC?I0w2Ag}a&p*N z6~BIAb_gYGv7~UcP)uj~+duhYuezMxIYoQq@{Sd(UA!5c#W70Tl6(cG9#h$lxovL5me_-!r?fs`U_udD(`NDdHI0eEI z8lJUr3jTl149VZ$eHk*VtbPBqsm#=~KFS^CrvLEiW%8eCx4J24mlYwgeKBFD)&l zh=>R#k9f%K+qY?HX^H8D?wy?-L7drcXn$E*nV$UJyLXQ~Ulh|1`N+sft$y@neSMvc zk>T1+Oun(Pk&su7yk)Gx(EpH-5PI<7fl;2dm^|j#&!0ato3UpD=E%QC&JfzvC0%)} z1@S)w0|NtW4UH1_LqkJ^{4bQaUt3$#HlZtzv5tv}VS88Pu8HxLD_7{HDMf{Wbg^$i4p$ES+Kv literal 0 HcmV?d00001 diff --git a/apps/site/public/favicon.svg b/apps/site/public/favicon.svg new file mode 100644 index 00000000..916df470 --- /dev/null +++ b/apps/site/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/site/public/faviconn.svg b/apps/site/public/faviconn.svg new file mode 100644 index 00000000..542f90ae --- /dev/null +++ b/apps/site/public/faviconn.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/site/public/mstile-150x150.png b/apps/site/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9e2ddc8e2da1454adf359879a2840495466427 GIT binary patch literal 1473 zcmeAS@N?(olHy`uVBq!ia0y~yVB`Z~4i=!ur5%QPK#C>Z(btiIVPik{pF~z5Um@8e z$d`ekN{xY`p@o6r7f`6-1p`B=0RzLU1O^7H84L{K1#@-<+5jb(lDyqr82-2SpV<%O zv6p!Iy0Smx5)|W5aaw!29%y!&r;B4q#jUq@{X0TaWsW~wZ#;QofNs|U0dA#&U=~NG z3#&r8&A0Z5DY`sbv>>!Q>e`|rao4rKm|bUcIEhc%lC_ZAn4?v}<&4AP`VgZtvddk? ze9oSq`Fii;>UXa{znNnE$-3C?oMpPj`<%*fP zFI6?Pv6Y!Ti{d{}(Aj*+={2L4^=4)9X#PUcGfzwWw#h9rxM4BxKd~ zy}l-w3uR8XuXTTM%jbBZ!t<#93tJ`ok`3K~jGdBwkNfB3+B!W?`;qswZO@GP>}9Vj z49iPDNB2qgKi+svxg@X6UpvRFFhGc16@!@dFn)giog%%IDY-Xy9egYPIepr-yRV+b z+^;%r7Wut!&e?-9=T_=GYqi<;?wYsdv}Vg$@|$*?D}KX$bH01j`#Wl{t@;A(&Yrfc zd-?J4=hu1lTI-)Z{T)XYb#W`8F zpBPG|j=xWqdn0`PhdU*QKGo^l`geWyzqh%S7Ug39>z@_*zn*)iWbUzzM$cAD zT(e?*d+K#%!2$UE?j)HMEh#4%;dfQ zGQIP%_A)bH$dsA9Uot1+w9f4pCVa~rWv1-vUHn#C{r81j8J~5RE&kk@(dPF!LF$O( z%G(xmBGj&D%3Oko?CL#yzVBqIH2Y*>_N9K03xZ|>6;3#AQUVqMhW;y)zQXHkH;BCs z<9h$>M8xXc|J&yL-n@MF^J_;pE}JTIYN7V8Q+F#@&9<1$Mk3F1~Tr~HX zVs9qGEmu32E*FkkzJ1f@oAZu_K3)Ih*y)`8w%>i9vXxktmzV6nlqs|QS+mYsDwi#Qmd+=0qbGqL0;!pGKdER93XPASgue|l%JNFld4cs zS&*ubSx}P9z)&&g@h2XR!Y~buQ~syVcs>ncU{>bVOXe0<7WSSj!Yr)d(qM8pg;{xX rh{EX`S56!`b42C{`{@Rc1zvg#ufzpQJ~^3A1^Ly})z4*}Q$iB}jWu-) literal 0 HcmV?d00001 diff --git a/apps/site/public/safari-pinned-tab.svg b/apps/site/public/safari-pinned-tab.svg new file mode 100644 index 00000000..66c95cd8 --- /dev/null +++ b/apps/site/public/safari-pinned-tab.svg @@ -0,0 +1,15 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/apps/site/public/site.webmanifest b/apps/site/public/site.webmanifest new file mode 100644 index 00000000..b20abb7c --- /dev/null +++ b/apps/site/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/apps/site/public/uploads/.gitkeep b/apps/site/public/uploads/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/site/scripts/blog-to-underlay.ts b/apps/site/scripts/blog-to-underlay.ts new file mode 100644 index 00000000..75d3b994 --- /dev/null +++ b/apps/site/scripts/blog-to-underlay.ts @@ -0,0 +1,250 @@ +/* + * Copies the blog from Strapi to an Underlay collection, so the site can read + * it from there (BLOG_SOURCE=underlay) and the blog has a versioned public + * archive like the journal. + * + * node --env-file=.env scripts/blog-to-underlay.ts # dry run, writes ./underlay-export + * node --env-file=.env scripts/blog-to-underlay.ts --push # publishes a new version + * + * --push needs UNDERLAY_TOKEN (a write key) and UNDERLAY_BLOG_COLLECTION + * (owner/slug, e.g. centeroftrialanderror/blog; the collection must exist). + * Images are uploaded as Underlay files. Images inside post bodies keep + * pointing at Strapi. + */ + +import { createHash } from "node:crypto"; +import { mkdir, writeFile } from "node:fs/promises"; +import { join } from "node:path"; + +const STRAPI_URL = process.env.STRAPI_URL ?? "https://cms.trialanderror.org"; +const STRAPI_TOKEN = process.env.STRAPI_TOKEN; +const UNDERLAY_URL = process.env.UNDERLAY_URL ?? "https://www.underlay.org"; +const UNDERLAY_TOKEN = process.env.UNDERLAY_TOKEN; +const COLLECTION = process.env.UNDERLAY_BLOG_COLLECTION; +const push = process.argv.includes("--push"); +const outDir = "underlay-export"; + +type Rec = { id: string; type: string; data: Record }; + +const fileRef = { type: "object", required: ["$file"], properties: { $file: { type: "string" }, fileName: { type: "string" }, mimeType: { type: "string" }, originalUrl: { type: "string" }, width: { type: "number" }, height: { type: "number" }, alt: { type: "string" } } }; +const str = { type: "string" }; +const strs = { type: "array", items: str }; + +export const schemas = { + BlogPost: { + type: "object", + required: ["slug", "title", "publishedAt"], + properties: { + slug: str, + title: str, + excerpt: str, + description: str, + body: { type: "string", description: "HTML" }, + publishedAt: { type: "string", format: "date-time" }, + updatedAt: { type: "string", format: "date-time" }, + doi: str, + license: str, + image: fileRef, + categoryId: { type: "string", "x-ref-type": "Category" }, + tagIds: { type: "array", items: { type: "string", "x-ref-type": "Tag" } }, + authorIds: { type: "array", items: { type: "string", "x-ref-type": "Person" } }, + relatedIds: { type: "array", items: { type: "string", "x-ref-type": "BlogPost" } }, + }, + }, + Person: { + type: "object", + required: ["name", "kind"], + properties: { + slug: str, + name: str, + firstName: str, + lastName: str, + kind: { type: "string", enum: ["team", "guest"] }, + position: str, + summary: { type: "string", description: "HTML" }, + orcid: str, + email: str, + image: fileRef, + links: { type: "array", items: { type: "object", properties: { icon: str, url: str } } }, + }, + }, + Category: { type: "object", required: ["slug", "title"], properties: { slug: str, title: str } }, + Tag: { type: "object", required: ["slug", "title"], properties: { slug: str, title: str } }, +}; + +async function strapiAll(path: string, params: Record) { + const out: any[] = []; + for (let page = 1; ; page++) { + const url = new URL(`/api/${path}`, STRAPI_URL); + for (const [k, v] of Object.entries({ ...params, "pagination[page]": String(page), "pagination[pageSize]": "100" })) url.searchParams.set(k, v); + const res = await fetch(url, { headers: STRAPI_TOKEN ? { Authorization: `Bearer ${STRAPI_TOKEN}` } : {} }); + if (!res.ok) throw new Error(`Strapi ${res.status} for ${url}`); + const json = await res.json(); + out.push(...json.data.map(flatten)); + if (page >= json.meta.pagination.pageCount) return out; + } +} + +function flatten(value: any): any { + if (Array.isArray(value)) return value.map(flatten); + if (value === null || typeof value !== "object") return value; + if ("data" in value && Object.keys(value).length <= 2) return flatten(value.data); + if ("attributes" in value && "id" in value) return flatten({ id: value.id, ...value.attributes }); + return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, flatten(v)])); +} + +const slugify = (t: string) => t.toLowerCase().normalize("NFKD").replace(/[^\w\s-]/g, "").trim().replace(/[\s_]+/g, "-"); +const clean = >(o: T) => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== null && v !== undefined && v !== "")) as T; + +const files = new Map(); + +async function toFile(image: any) { + if (!image?.url) return undefined; + const res = await fetch(image.url); + if (!res.ok) throw new Error(`Image ${res.status} for ${image.url}`); + const bytes = Buffer.from(await res.arrayBuffer()); + const hash = createHash("sha256").update(bytes).digest("hex"); + const mimeType = res.headers.get("content-type") ?? image.mime ?? "application/octet-stream"; + files.set(hash, { bytes, mimeType }); + return clean({ $file: `sha256:${hash}`, fileName: image.name, mimeType, originalUrl: image.url, width: image.width, height: image.height, alt: image.alternativeText }); +} + +const linkKeys: Record = { bluesky: "bluesky", mastodon: "mastodon", github: "github", linkedin: "linkedin", linkedIn: "linkedin", personalWebsite: "website", twitter: "twitter" }; + +async function toPerson(raw: any, kind: "team" | "guest"): Promise { + return { + id: `${kind}-${raw.id}`, + type: "Person", + data: clean({ + slug: raw.slug, + name: [raw.firstName, raw.lastName].filter(Boolean).join(" "), + firstName: raw.firstName, + lastName: raw.lastName, + kind, + position: raw.position, + summary: raw.summary || raw.bio, + orcid: raw.orcid, + email: kind === "team" ? raw.email : undefined, + image: await toFile(raw.image), + links: Object.entries(linkKeys).filter(([k]) => raw[k]).map(([k, icon]) => ({ icon, url: raw[k] })), + }), + }; +} + +async function main() { + const posts = await strapiAll("blog-posts", { "populate[image]": "*", "populate[category]": "*", "populate[blog_tags]": "*", "populate[related]": "*", "populate[seo]": "*", "populate[team_members][populate][image]": "*", "populate[blog_authors][populate][image]": "*" }); + const team = await strapiAll("team-members", { "populate[image]": "*" }); + const guests = await strapiAll("blog-authors", { "populate[image]": "*" }); + const categories = await strapiAll("categories", {}); + const tags = await strapiAll("tags", {}); + + const records: Rec[] = []; + for (const c of categories) records.push({ id: String(c.id), type: "Category", data: { slug: c.slug ?? slugify(c.title), title: c.title } }); + for (const t of tags) records.push({ id: String(t.id), type: "Tag", data: { slug: t.slug ?? slugify(t.title), title: t.title } }); + for (const p of team) records.push(await toPerson(p, "team")); + for (const p of guests) records.push(await toPerson(p, "guest")); + for (const p of posts) { + records.push({ + id: String(p.id), + type: "BlogPost", + data: clean({ + slug: p.slug, + title: p.title, + excerpt: p.excerpt?.trim(), + description: p.seo?.metaDescription, + body: p.body, + publishedAt: p.publishDate ?? p.publishedAt, + updatedAt: p.updatedAt, + doi: p.doi, + license: "CC-BY-4.0", + image: await toFile(p.image), + categoryId: p.category ? String(p.category.id) : undefined, + tagIds: (p.blog_tags ?? []).map((t: any) => String(t.id)), + authorIds: [...(p.team_members ?? []).map((a: any) => `team-${a.id}`), ...(p.blog_authors ?? []).map((a: any) => `guest-${a.id}`)], + relatedIds: (p.related ?? []).map((r: any) => String(r.id)), + }), + }); + } + + await mkdir(join(outDir, "files"), { recursive: true }); + await writeFile(join(outDir, "schemas.json"), JSON.stringify(schemas, null, 2)); + await writeFile(join(outDir, "records.ndjson"), records.map((r) => JSON.stringify(r)).join("\n") + "\n"); + for (const [hash, { bytes }] of files) await writeFile(join(outDir, "files", hash), bytes); + console.log(`${records.length} records and ${files.size} files written to ${outDir}/`); + + if (!push) { + console.log("Dry run. Pass --push to publish."); + return; + } + if (!UNDERLAY_TOKEN || !COLLECTION) throw new Error("--push needs UNDERLAY_TOKEN and UNDERLAY_BLOG_COLLECTION"); + + const api = (path: string) => new URL(`/api/collections/${COLLECTION}${path}`, UNDERLAY_URL); + const auth = { Authorization: `Bearer ${UNDERLAY_TOKEN}` }; + + const head = await fetch(api("/versions/latest"), { headers: auth }); + const base = head.status === 404 ? null : (await head.json()).semver; + + // The site's export is the whole blog, so anything not in it is deleted + const deletes: { type: string; id: string }[] = []; + if (base) { + const current = new Set(records.map((r) => `${r.type}\u0000${r.id}`)); + let cursor: string | undefined; + do { + const url = api(`/versions/${base}/manifest`); + if (cursor) url.searchParams.set("cursor", cursor); + const manifest = await (await fetch(url, { headers: auth })).json(); + for (const r of manifest.records) if (!current.has(`${r.type}\u0000${r.id}`)) deletes.push({ type: r.type, id: r.id }); + cursor = manifest.pagination.hasMore ? manifest.pagination.nextCursor : undefined; + } while (cursor); + } + + const open = await fetch(api("/push"), { + method: "POST", + headers: { ...auth, "Content-Type": "application/json" }, + body: JSON.stringify({ base, message: `Blog export ${new Date().toISOString().slice(0, 10)}`, app_id: "trialanderror-site", schemas }), + }); + if (!open.ok) throw new Error(`Opening push: ${open.status} ${await open.text()}`); + const session = await open.json(); + + for (const hash of session.needed_files ?? []) { + const file = files.get(hash); + if (!file) continue; + const res = await fetch(api(`/files/${hash}`), { method: "PUT", headers: { ...auth, "Content-Type": "application/octet-stream" }, body: new Uint8Array(file.bytes) }); + if (!res.ok) throw new Error(`Uploading ${hash}: ${res.status}`); + } + for (const hash of files.keys()) { + const has = await fetch(api(`/files/${hash}`), { method: "HEAD", headers: auth }); + if (has.ok) continue; + const file = files.get(hash)!; + const res = await fetch(api(`/files/${hash}`), { method: "PUT", headers: { ...auth, "Content-Type": "application/octet-stream" }, body: new Uint8Array(file.bytes) }); + if (!res.ok) throw new Error(`Uploading ${hash}: ${res.status}`); + } + + const batch = 500; + for (let i = 0; i < records.length; i += batch) { + const res = await fetch(api(`/push/${session.session_id}/records`), { + method: "POST", + headers: { ...auth, "Content-Type": "application/x-ndjson" }, + body: records.slice(i, i + batch).map((r) => JSON.stringify(r)).join("\n"), + }); + if (!res.ok) throw new Error(`Uploading records: ${res.status} ${await res.text()}`); + } + if (deletes.length) { + const res = await fetch(api(`/push/${session.session_id}/deletes`), { + method: "POST", + headers: { ...auth, "Content-Type": "application/x-ndjson" }, + body: deletes.map((d) => JSON.stringify(d)).join("\n"), + }); + if (!res.ok) throw new Error(`Uploading deletes: ${res.status} ${await res.text()}`); + } + + const commit = await fetch(api(`/push/${session.session_id}/commit`), { method: "POST", headers: auth }); + if (commit.status === 409) { + console.log("No changes since the last version."); + return; + } + if (!commit.ok) throw new Error(`Commit: ${commit.status} ${await commit.text()}`); + console.log("Published", await commit.json()); +} + +await main(); diff --git a/apps/site/src/admin/config.yml b/apps/site/src/admin/config.yml new file mode 100644 index 00000000..8bc9e754 --- /dev/null +++ b/apps/site/src/admin/config.yml @@ -0,0 +1,231 @@ +# Editing interface for the site, served at /admin (through src/pages/admin/config.yml.ts, +# which points sign-in at Microsoft when ADMIN_AUTH=microsoft). Editors can only change the +# folders named here (src/lib/admin.ts). +# Every save is a commit to the repository, which triggers a rebuild. +# Field definitions here mirror src/content.config.ts and src/lib/settings.ts. + +backend: + name: github + repo: TrialAndErrorOrg/trialanderror + branch: main + # Who made a change. With Microsoft sign-in every commit is made by the GitHub App, so the + # editor's name is only in the message. + commit_messages: + create: "Create {{collection}} “{{slug}}” (by {{author-name}})" + update: "Update {{collection}} “{{slug}}” (by {{author-name}})" + delete: "Delete {{collection}} “{{slug}}” (by {{author-name}})" + uploadMedia: "Upload “{{path}}” (by {{author-name}})" + deleteMedia: "Delete “{{path}}” (by {{author-name}})" + +site_url: https://trialanderror.org +display_url: https://trialanderror.org +logo_url: /favicon.svg + +media_folder: apps/site/public/uploads +public_folder: /uploads + +collections: + - name: pages + label: Pages + label_singular: Page + description: Pages built from sections. "index" is the homepage. Free-text pages (donate, events) still live in Strapi. + folder: apps/site/src/content/pages + extension: yaml + format: yaml + create: true + slug: "{{slug}}" + identifier_field: title + fields: + - { name: title, label: Title, widget: string } + - { name: description, label: Description (for search engines and link previews), widget: text, required: false } + - { name: showTitle, label: Show the title as a big heading, widget: boolean, default: false } + - name: sections + label: Sections + label_singular: Section + widget: list + typeKey: type + types: + - name: hero + label: Big intro + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title (each line gets its own box), widget: text } + - { name: subtitle, label: Subtitle, widget: string, required: false } + - { name: text, label: Text, widget: markdown, required: false } + - &buttons + name: buttons + label: Buttons + widget: list + required: false + fields: + - { name: label, label: Label, widget: string } + - { name: url, label: Link, widget: string } + - { name: style, label: Style, widget: select, options: [accent, plain], default: accent } + - name: text + label: Text + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string, required: false } + - { name: id, label: Anchor (for links like /about#mission), widget: string, required: false } + - { name: body, label: Text, widget: markdown } + - { name: background, label: Background, widget: select, options: [paper, accent, accent-soft, journal, journal-soft], default: paper } + - name: features + label: Columns + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string, required: false } + - { name: id, label: Anchor, widget: string, required: false } + - name: items + label: Columns + widget: list + fields: + - { name: title, label: Title, widget: string } + - { name: body, label: Text, widget: markdown } + - name: link + label: Link + widget: object + required: false + fields: + - { name: label, label: Label, widget: string } + - { name: url, label: Link, widget: string } + - name: latest-posts + label: Latest blog posts + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string, default: From the Blog } + - { name: count, label: How many, widget: number, value_type: int, default: 4, min: 1 } + - name: latest-articles + label: Latest journal articles + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string, default: From the Journal } + - { name: count, label: How many, widget: number, value_type: int, default: 4, min: 1 } + - name: team + label: Team + widget: object + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string, default: Meet the Team } + - { name: id, label: Anchor, widget: string, required: false } + - name: newsletter + label: Newsletter sign-up + widget: object + fields: [] + - name: buttons + label: Buttons + widget: object + fields: + - *buttons + + - name: settings + label: Settings + editor: + preview: false + files: + - name: site + label: Site + file: apps/site/src/config/site.yaml + fields: + - { name: name, label: Site name, widget: string } + - { name: description, label: Description, widget: text } + - { name: url, label: Address, widget: string } + - { name: email, label: Contact email, widget: string } + - name: blog + label: Blog + widget: object + fields: + - { name: title, label: Title, widget: string } + - { name: description, label: Description, widget: text } + - { name: postsPerPage, label: Posts per page, widget: number, value_type: int } + - { name: pitchEmail, label: Email for blog pitches, widget: string, required: false } + - name: journal + label: Journal + widget: object + fields: + - { name: title, label: Title, widget: string } + - { name: description, label: Description, widget: text } + - { name: url, label: Address, widget: string } + - name: newsletter + label: Newsletter + widget: object + fields: + - { name: title, label: Title, widget: string } + - { name: text, label: Text, widget: text } + - { name: action, label: Mailchimp form address, widget: string } + - name: analytics + label: Analytics + widget: object + required: false + fields: + - { name: script, label: Script address, widget: string } + - { name: websiteId, label: Website ID, widget: string } + - name: adTracking + label: Google Ads conversion tracking + widget: object + required: false + fields: + - { name: id, label: Google Ads ID, widget: string } + - { name: pages, label: Pages (slugs) that track, widget: list } + - name: navigation + label: Menus + file: apps/site/src/config/navigation.yaml + fields: + - name: header + label: Header menu + widget: list + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string } + - { name: url, label: Link (leave empty for a dropdown), widget: string, required: false } + - { name: description, label: Description, widget: string, required: false } + - { name: color, label: Tab colour, widget: select, options: [{ label: Orange, value: accent }, { label: Light orange, value: accent-soft }, { label: Journal blue, value: journal }], required: false } + - name: children + label: Dropdown links + widget: list + required: false + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string } + - { name: url, label: Link, widget: string } + - { name: description, label: Description, widget: string, required: false } + - name: journal + label: Journal menu + widget: list + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string } + - { name: url, label: Link (leave empty for a dropdown), widget: string, required: false } + - { name: button, label: Show as a button, widget: boolean, required: false } + - name: children + label: Dropdown links + widget: list + required: false + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string } + - { name: url, label: Link, widget: string } + - name: footer + label: Footer columns + widget: list + summary: "{{title}}" + fields: + - { name: title, label: Column title, widget: string } + - name: children + label: Links + widget: list + summary: "{{title}}" + fields: + - { name: title, label: Title, widget: string } + - { name: url, label: Link, widget: string } + - name: socials + label: Social links + widget: list + summary: "{{icon}}" + fields: + - { name: icon, label: Icon, widget: select, options: [bluesky, github, mastodon, linkedin, instagram, facebook, email, rss, substack, twitter] } + - { name: url, label: Link, widget: string } diff --git a/apps/site/src/assets/fonts/OpenSans-Italic.ttf b/apps/site/src/assets/fonts/OpenSans-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b0884744c5be3e7f5ecbf9299474a00772a283e9 GIT binary patch literal 135380 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 z°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°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 G@Baau^V-P( literal 0 HcmV?d00001 diff --git a/apps/site/src/assets/fonts/Overpass-Black.ttf b/apps/site/src/assets/fonts/Overpass-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bd4eb7d0a7dcfab83abf57ad027db07124957c5e GIT binary patch literal 168932 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 z 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 z za$C|OlW4AIOP%XrGppAv_MYR%N!Ib>w1p{Xp~QVVS}66h=E+_q&K5FGeCxJRRLGuj zeCx3xiOP_W5!BDH3<%TXCO*}|(N@MTm<$0fSSvXYc+e>cQ;}#VBF#}Bq zuzEljO=G2`LDE$&tCclF4%;i+CVNBnj_d>3$B;d^$bWrZu37LShg{gtCEY1IhFHvb zN%erqV`QP}u6h3MYe^dIn%xxwSIE9F1qYi|<0W$1WJ(VR4;Rmx zOcrBMXy~6ErEGA#%jZTIXnBSRkuw1vz+~!YW#C2(p%B5Ll^ipfg3K8vlNdpPrXP#* zf|tR93jYE_>`nM#C2(S>KPn6I548`lRt1=Xxh)KUAfrXJnM@hxAVi-y%35Ud4}~=X zpbRjC?{XG~Sr<)m`8Xj#(xqm*$Tz8A(?CjR5 z+0B`m%_MixdreL6Et0->W;A8s|CFZ8%*7d~1ONCs&~bXQplk(*HLTPng8+x9l&=#@ zSd8E~EM72^4?Yns7`hZ-tjnwvb}|nwCu}6{gJh3{X+|XmOfO5}7cSfT9V?ElGP>%P z9bK~I=(1(UmM+DiPY?Q@S}R-W)1Nmt|9ly8Qfk`(58eI|4_!`Ve!{z)F1S<+>3j|? z$09d{Gl#v2REUSfgN~etu~0!1&>!%c7iz&G49y@pj-xtkwA$NfK z-k`q6PXHl(My-$WT=LgpxtNCzZELgqj9g8}Y!x95++pr;v#{@Bjnof5a+SP^J=2f| zVV{q@%3dKo8F_0F#J*a4xx5CivA!F5XAzv;R1a(L8cvs>z3{j$IckF~wp8D6A*U7Z zvs&Scb6L{!I!mEBHEujAA1)`C#TW*HcpnBg?oXBoNT>{&0b?&G?)I-yCOY%!5&;>n zaRB!n%B1iOmmuuxeY60fo%q}QZQ5!`oICk;(#O?_R0ejN^a<6{lWanS>fvqlA%bSc zP-+(;>kc8$)7caVR_r18NqF~Q>}T{XpL2byN) z&0oHuC3{-(BwJFz_^Mfu1`Z1Cf=v1UGIt*ERTOQwpSI_aLI@#1Xor&?T1YPtN-Cix z5K16~5(qs6NJ5p~dlL{55fy17A|fIpf*?&)R76BNsMs4IMaX^Loef6iE4TgbjsAId z_iUNocIMsswjhJ@nqA#zi+B-^ho~YsqulX(rK8Q`I3LHmmYr|7usA*m=TE`$4dsp- zOz;gjUZAEJGi)buKG*jbUff3?S0lVUc!Ceo?d7DvNJQg`Je6mrYh>QHrJ698k*$DUE7D! z*jCk7j>YUOsuAgWM2D_te9LW%Gx*?OdP;8YgRr!moV3)QJyl;*QmtJm<9vV`0(;B* z=q*M0I|;9}0eDZ^x33z4m!x@l^pX_r-l3+*Fk?66+eD;UQSHGR-j~-_Q+V71vOK*J zzc;l<*@DzP3OB=6dXdwc=^Hp+q_69Q>uzA(THgn2^kwvh<{SJz(Y)@yzK;2t;g^FF zWUa9qb|^7>2Cf|iyxNUVPaoe-|LfDRp^tB1plX*szD>KaX=!8I zwHcp&IK)BL@L)BLV>RU*x!%}L?;mkj{XVp+fBE;JI^}GS?^(}3B_J?cY z^P5n0WLl?T4XRhIqS{5a^Q~0HwOUk0VrG6uLW}BEeZBC8?q|e%jG10g3s6dJ1a*}$6C+O7p`f!Lvn`H4|R{|kgF#2$nLqPZAzo$`l@ZK zq+aBT`r?ov`$6s$p2*JTY-9Mn{?L)UVNg=LBjV7F>aEjw#I5YjDeaSR#fb;*vNq;G z;*GtTqIHrUv}Wj(c;4{p1NR#>VskQTJI-O0mlr)~DR!1l`$t~&PRq?rqnzHdXKJhN z-CL#hG)svG0r+~(fd5oVpkSbj9yChs*)thM#)E*eo0KV@TyTGl*j>8a3=_nuUcq3s zZEsL`gm=u%Xw_rL{WTOEM%%QcUKBXE(gR;9#ybpJn?))2;d(KQ6xoAgBkkq{On$fL zNXJDls6fnjMZ?S(hFhc z{V;~KRdbp{O*8AgiswE)`FQSt5I>*l!S1tajeg)cId8!7`hmUkg6sQL^X%o@2_awb zAV%&fEqrtdfyqTkSeUbj65&BjIis|M-fmKkrjZ1)fm^=7_9|JG<*q1Uc_dK6LfP=3 zW~V8swHyx<78TuO+kJt|EuB;@zdcxh{Dxnqh&bu-=ggTYVv&e5CxPL&d|0^JElulr z^nNwp)>+Tart1#DI;cD5q96z3EmU>aJZ^A0Pb)%P~v4K6$LT_}G(O%k<r|R_bt_@n?=xnU*lM1uFYly znKh1815r9eNrxH8oX^0Aay(YALgu+fj~GAxuVvh$TMhr;*G)}&H}FgJ*L71uuMq#l z0IP2Dt>RhDtec!(m8$=zx(RW|kpEqg`~Q8J^8Me+l;!JE{!ylE8}fg$Ou>98SHhn~FBU>exn$4=nkot4iwYR#ld%&kw9?JCN;*Gf z&IiYFvSx?AHIA2-mbD&{^Kcs6MfC`+T=k@q9aR(R4_fIINuxc&V|B0b4Z{5c+aw%c zHUEL<=w6`>f}1XHws`5_$IPoSRV9l5hCWkIln~TQ`14Ph`@t-O<-qdkXv}>c(2yTE>A54Z;mnbqepJdI~z9I%j&=d<`S{t-V9qY;BdiI^f@6t9be5-k%_;sI%%T^{cvT*ojU#ZZz zLemNpDy*omx5Cj1rz%`>adWBS;&f@~66ccQ(!nLyWspmW%M6z#E^Ayix$Jb=?{dQB zH&}WJa*c59;+p3=%yqu&6Ryv@zUTUd>({Qoxt6-Qx>a@ab!+Gr=hnq-p4&>dx82@z z`^@dC+fQ!y-0kjF-0Qk$x%YA(;{KfbCHL>$Z^Pn=XGLelu!=1!cBt5=VnM~R73Wl3 zUU7ZJ?G^V{JX-No#cLIBcqk8Vj{uJ_j|7i&k8U1=JW4!fcX z-oD=9-ih8Fz4N?BdQbG8>%GGJV%6GJL#jqq&8j-P>Yl1+s#U30w_1a0vDK2R&8@bj z+QDicR{Nsb*VTTjR$AS^dgJO%tGBA&tNM`YqpMG=zOeeL>g%gttNv5XT8tMK6`wQ`JD2(=<}n`of@h}r5Y`3jI1%C#z!^I)%dQ) zt(q}4H`Lrwb6?G0YW`6xw$>B14%Paw*4bKL*7~{Dz1mT=2h`qKdw=cs>bTVLu2WcN zQ=M1q{8ZFCaqwXJ0yR(ur%{kgR)%k++2j7Nxxl-sm&Uc3IV&B!iFZll8=kUw$o8&joZ>8U} zew+P%_OIgK%0J7$m;Ye@<^H?ZRA~RIgXPA@#=9n^W(JdK>D!R&Rg3_v)Rl_hr2s z^-AkktRG*0eEpgAm(+iz{@@xr(k0`!<}~a6!Xe4No`n zY*edJqegL!k{e|->fR{7(Tk0aHu|yA-B4R-<Qd`#Jxy+q*r9~$kvgaBYQ_qid+%7 zF7n05U6BVO-;X>Kc`forl#233HI+?co3?10 z*|bN~!lrYZKG*b2f@^|Tf+L}RLa&5p5{@REO1PA8J>f>P>dopl3vSl9SyHn$&9a*1 zG@I3IS+g&iU2X2(yk7I9<^!5fZN9bn?&jY$|GkB5;nt!}i+L@UwOHF?LyJ=_Yqf0O za!SjcEq_alPwbyKGI4w2?Iho%j!9#Zo=SQv>1fi)q+gQjBzH`nn*4I|>&XX`Z>5M7 zkCbXDekt`+Vp5V)+NX3+>7Oz(Wn9Y4lqD%^QZ}XROxd4uGUZIlrPPY4Ra1Ra8>O~Q zeL8h>>dw^tsqdwJl2$9NOIrW55oy!Y)~0PqyU?maE6-N7S_QT0*6Q(AFSgp%>OiZ@ zt-eopNpGH>o!&dWD1ChTwDc9}Pp5BcEn2&_Zrr+E>;A3hwqD=*SnE&Qh&CQ=(%NLS znbBrXn|IoL(B^cT3vDa6ZPB)hKPYGkEn zP0D&D>v-0uS(mcD%evJmp;LON4xM^*8rW%gr&l|D(b=_gYUlQyXLf$A^S;hUI-l(P zdFLygzw3OX^ZhPOyL9L>v&*3_m%G;Ln$vYm*Av-p+10ZBvO}|*WT$0kW%tS+l07}6yx_NX9>K589rd#uFY27lqb?w%x+kkE(yKV0F zX18y<2X=4Sy{P+!?)!37PLrJEoOU@~a(d+q%o&k0E@xWK{G8=EPv>mNc{yiy&Viic zIiKX5%lR_r$DH4LupTZwyn58?5zwPikC+}UdZhQr?lGvxxE}L*Jk?`skGFb!(Boo{ zpL2PxSFV3yJzoVy+`$)-g|!UCwp(~{c`WudmrlkS?^1|zv)w{PjsKreRlOZ z*5_QGJ9*XeqVo##Hs)RG%lg*so76YI@2tM7`)=#|Zr@Y=RKKi#yZYVDkIf&J|7!nz z0}=+jFtEbF^nptU?j3kZ{^!R69_#d2@5i2g?86D2Cprd=BvHQd!6UR-QHgV;|*Cu{4@!G^6Cf=RoJ;`rU@}!ZIW>0!?(!NQbO!{fE`{dBc zQzmbn{MO`;r-V)EJ!RmOSyNU|**)d`sg^<=~mVo89QhDoa=Kd z%xyj|dETgbtLB}WcWvJN`8DT<%#WVmW`4K%{pT0WpE7^N{LSl+1 zx3WHuI>+9*^h6oPGPncSgGzrfHn0lnSJvlI7-w;>9c-CvFO9LI^d{|V^tL?>_b`u@ z-o%jFGS>k7j#ZfdJ*6l9)46IotA}&i;L8XFbgufCbud|k?M0=9MjN>EUvb;|Z3lE8 z+_etwCAF|;VShJUAo{Rnww-JlG(q$!Jpkr`g?OLS2f9zgX5;sz*e-$=K9UMvp#&tPqhXBoy(JgXdPG+XA90C$gOF|_@6Y#*D)ylpvf4=}di{0CZT`_YsZ zRu4*j9aC@l>KIGV{-`GdKOZ)ZK?X(zIk5x zW9awKc@*W(F}F{{aXa-IIpx2=M93sg|eHjOBZRS+r>(hWmoWCB)9Y_Q1TBhl)eV{ zQygmAJ=|_63b3BEfVGrINlO=Ddx0En9$R62kFhq4x7qT|{TN$KY(HQtEf$pd#dd}@ zFWdg7mKND=l=C;@oZ|gIQ#$0|on!1p*gt}Qca8Ey{66B@c350NeCc$nHJ{R+9Kcpu z42DjT14^5hJ4V0x$lI&~A-dt*+bpwezf9FC#M2hGP6n_zlf9M(Fpsih7+l2Hk{=$A zv+ZGV2uBKEP|-h_d6tmrdipmX^r#Y^8A**PX)oguah?z4(ExB;-llABa~F&H?Z;57RaXFB6D1V;V#k?sWsWZqY6HxB`?R?t*`!#Yb+`b<7p|;^9 zl;z7%mLL8*rFV=4s6RKbhSUZsqrxV*@mqvh`L==8-mv+xhGrXr+B(!8*a}4*Y_|1K zXTsKI8evPvJ*f^tI|y;TtilbnIqKtFIv?(_e}?DoU@t?ih zPEdOXc{`>8x&LR@!FCDrrE!ftg(c9lZLX;QTuZ;l^`?7Kek`;7VG;v(F0=ir-Sw~z zybgEOW(&wofZAot$gk$U)rO|_tQihy15i8QA7N3h4Mc7&^RKD6FZqkwA!eOSVNgB{ zZ!o7lAAY2GK=_*eB|lRgOXbEH#N(lV5QsN}D^aI~l&^1WyO9^1s9XL(xl+b3rOW%2lI~h1kb4 zhkXd#g>tB@zD3E7kb6WqtF zFHpBq8ARa%f0=Cr^FDnLK4oPVDTOJyi^3A_G3zD=&ZjW*LE3(RIPZY-rXWqNg}+ZA z{~`{}xS?lLnA1MoMD;12mrwVn>j-t6O@qG{7|$U*(9T1DZY9F6rWs$9uTkCzlnGSk znE9N_8YEI*922QpK?m)bdxPvJARG1i`y(ze2hA+A@dNISbd4`7fYC{bZ0HaEf(_s>^xQK ziL%4p-h{P-9d&nmSG2D`X709K%*Pgr{Sp>x_hLTC2OhR4?0c~Kwj}%>gl$(GXV~w+ zTy1@sdxhrAov*~p=L))iUjAQO4m$2YVm%#!cwuxd-Y_wqifg=}n6X0F66P_iM4>;U z32zCK_ye@byjXKm5K-YQ+evi-fpi=K=yRNo?>p1$r$C*QJLA~gW`Z1vNg33YNTmip3kPl9>6Zl}^46~j(iL&4%${GtJ zfqUb(eC+2#b3q9hfO>1Ju?N&go()BQUd6_moMVm($Y-(*i{htH4<3bkrm!u9+KKd9 z4RtQm)|pMKa2;jwNw(Wog0?5}h`k%`Q^M|Ath3zUZOowOmws>T$LuNXt~8ue2+pC5 zAh&tjec+cMxE0eoJY@Wh%%e%XsQpW+#m%g z_tVu0?884U3FynZqp!B8^atFN86o(+3F^W^T)P$Le2cQ92`j|dNgUis<;zN=FWj|{ zdEH?M7iVW=C-LFohg$fKp6;yThCP$xM9C-Llc z509Y@uQanPrTx+6w#$AeU2Q?zeeLK2N%W7*a&J5Qc8Tp&*O5jyfV~Jyl!dlMEXM`q z{ln)4u>kz$ME;B;m3L9@>_t8Nv3WeH!gv;79y`g>asO2yrovvf%C^pAD>U7PeixWS z*V)#vqjW9Zue>4-&10l+M;2jtvl8U1P=Ihi_}@i(1c;wP>~}z4lUB=~v!Q=!6d+Fj zh2q@N;5rClj6Da+bPBc${>BjOZ$)V^0J;Ng1UJApfJzSfovtCpy*Ne@*(7ijWNGD? z_f+~bw(0jl(E8v6wu_*2Z(Pqk0M0Y-MQ)<&r+|ELi1G%)Vk<1B4S?=|HiYJY0&o-z z0ng#Mf=<%MkY0k!d#=Mh$j#(Ndae^Rq%uOH{UvI$H0*NfwkYsox?=hraQ^j7kN%Sv&F196bmK{q;ZP%6UXBA6J^)p=D#f?6U zKS96C2bk+m=T^kO6ozzVfZp~Xo6zKr0H`Zt*jE*A!_5nD&<;zB6|trzo=xJD`BXj+ z^XH%BPxEK_3w$%*$zSI;MJ-WRM2c9ED%y$8B3pD9Jw%@9CkBYYVz?+0$mSS$f6hAuJ4n+n|ycs?(zN7_gg>VXY;G%=jB(`uO{9qH}FgM z>*LqoU-*0a`}q6%hxj+}f6Mo6XpG9kFrPjEytmvSgUCQb|@eW5Ztt$wr8cXfrnUE2e6x z0M%5bC``V_JohD7{j^1GQ@hlD^`81rT`_7}v7sF94ljojR{265F<2Uu;%MXO;OOfp za7=M5Lu{;bGG`TMb*B@t(byT`jCUqju`$9~;vDas;+*GP;#}c;_F-%|&DiLG*jR$t zc-8j}-?I;6qcUQn#>3diH)Er^ztca^jExV>*yv-%#yZ5tj=)`rjlF^U5gUi`2LHpr zGiGcwc^Di0gN6i;4!+)?7Gh(S85>0#=bN#?b!^Dbk&!S>8PSKM|C)cvuaq7y-Cg<`uAK^wm!0=0eGqW-=J#D6^~;~fuEfyx)d%LkXBoRz?dmVs zUwAF`>MUqBh@{`HT)}V6t|ne>aus#y)%jO_ajXrt99J=a65GXBc3#uwm9fh?mlx9S*owNema$8Pm)cy6zOd!O{ENvK&1YXU?|-rWMa-GI=z7t(aO*=HK=c=CbV(jzAjGY?z3CeZGy1nT!+}_$2rGBOIi_Zfa1Z)V( zZ{@ENeo?S>iGK+%SVDP69m3W*bwyo64UIpvDVX|R{ivw+VCqMWxqU<3MbDFt;ywmS zZ2Zd%S6J+$TI7*`hAYlV00WFQ##&>YvBfxKd|;e3&KlQ@>&CY>R~y>I^k<8+HL?e$UgrlYOS(0;-nZJF8`+e9w<+6?_x>(7ob z#XkPE?>4s%+o^^#|Lmu66j*zx+p+(F{iOY4bL*5oUiPp3sQoy8KW;}&Mp}0KpK9NU z-vR#JXWw7`cX?BB*q?J%bDMpZLrMAdp_&T&hy{;0KVFb&gVz#O$Ps@+xXGmGq z@UGI8Ij~NqHr6K9gDt40ux*ycir8SZH40HuuVP!+Q*15U%U)2=u|4bucA0(2zUCF! zJA&~>yauLD#=yXG6l|&`VXaDM-i`O>kE5nt$QScg{2hLZzsryEulR@Rd43JGZ6#4f zR24D&d-R=aa?HQvHCZhl$%1)HR-Y%c20R689uiqNPiK+54f;9#Spx6ETJb)tJz84L zcvqIgN3m|anC0>@tOp;>`tcbs_sXfq7q^RZfM6&u0lvO(y_P2lU;WYjV* zu<3j=o5i=X8GH+y&0k{k_zt$1W5kK?WlQ)T{sw!JA7nfE1-6DCW;^&f_BQ{9y~}@Q zNBFPoF#m>~R~)M0lpyRo8ZD#nY)&@!1oZ5y7&rm?wvJJ#wx!4EJO?qoyx0`@dN!mgnm z_noN0u8V5y8&REoi_c;VVP3o*!z@v(0cyf}^C_%5FG2h0dG^dAHU8v@{iai{xPp4n(@b2AiKg! z`H$>4%q4~KaNdkx<(a%a+G}Icew&RJ!)mnOUgo>_Eq+6|3r`U&8sIxKk)j36S5M>} zc{@>2xbWfp75*x3j+VkqBisnXw<`S%f1|b$V1yWfMqSMRoF-%DQlzc;*fQvQ`V3*(WX>VVEsZ>u~!C)w`7pmCxgY?GDPf` z^~6GPODq<*#S(Ex9FX{b0e_7>&fj9o`98LkzscU>U$b5O5_^qbWS{U- zb`GO27la!-D{NeeaLz?2mm-W;6)DV{H(=FyD0Aa}tRlx-79Pkdaf}3Uf2MdXX5)33 zojX_sUY8lXHb!IeSR3Atb>xFtOWvI&@g6Lh=du*u6H5hh@WGwsY$RGSoB1c~MgA#! zh96_k^7q(t`~-WRzmGQTarP4bjJ?c1XWRK%_6q-kZR2Oy_vkhKC~C8xg@gSnoa{He zLAU|ixW9oG?zcf@8pm2dwE;_EN{r4Fbny2`HQ@RHo!NSlYCuy zt7<9`Gp~JBFnSRI$`2MzGn7sKs@_l)lncH&ctlJ>PvRN1TGdrfF%{pNTdSVLJZ2xW zKhsML6aCd_^g1T0>1wu`gW1gs)pE61jYpees(M^K21^C=)nv4Ur>GJ&6YXKlvQRVB zTs2EAP}5W~TFFCIs=Oet%4_nJ{8XNipUbnDGks2;mlx$Fd0AdT>twImhZgi9^{zUo z-coO?1L~MMsXkI4t54J^)nDbSPt|GlnL4A6sH1A9dKR;+UsIdaCN%Qya`3Sk5C-yr%?@|{u<>94bUh|u}8UNf)QMXy52;! zga&I=BWMVyhkK$0X!hajW804H1{$>vO3wh2R$4V4{ff&C=DYUrG%2umKwBHFcsf|{GMb%VUTP={!6hS zH=_M(LeEdLKpPHUEYwijF5RLJw6(=RXd8?1(6$y6q3tZDLfc!+hh|tTgl1Z-hIX*n z5A6uDz(LT-;sli3L{M9?i^U}R2^up25$u! z>SYt;!nMDKlb;4?cp;R+5%3Yv zK^jisHdw>wK!<4f8t70Be-2up;hUhtG@RPJbYH+p(Pq2prbUx13FqGkO$C~F%gZRV*&D$h=Nj@0HP)IF^#GPouE;ab||d?RU0}< zgSRP+t<&HQFJsSY6uE)?3>3NLd5u~MrMv;~riZZ?G-?HOgGN!>+^A7WPzo<#kb5?3 zR5EmnM$Ce~s8JzMauZN5K`oRgwzp~U#)q+&HAWD0yGFHwzM@fd?;YS(0u&=su174EnZ) z`k-vTMK$OF3kvghEL@=nEy&G>EGSRCYeDgN*rG1|_Qws_+3NM1v5rq*z z&xo-z78Kr}Tl@e$YjGL+g~gZ9a~5Ai&uh@DV(fwih3iEP1v9&(;f=8yhAOP@%!- zGvj5@Imj~v*%aW0MI_Xwp|%6JTeO5C?#=kG4|TCfhPrB~9l_l!QlRb{YIpF87Ku;~ z4QxW1Z!9_djh-~)o*Me*7}awoZJ=Hns*^dw#iT#fTSM&(jxaLm0A6(qsUX!U9k`1#NImS7>bw)xBt!Yeqp)b`VrQqn)lPhB`G=CsSHC83XmxP`!#)f&*;Z$ra>tj0o70FA8Ve1QhWfa-_XC%JOOQ}p}Lpyq{)0} zsD|o5^pQ2IpeT0;vwo$xA?5-~LxAdbjDl!ZLZdWPAENKASqF{Lu*uL^KxuP5h}W>` z&?Xj}p-nYx7L?+W*a|2<0HZKzZm|X0Lc?Z5TUxvXrL+auJZO@|4rsE5ErzC8?1rXl z*fMCE#a<|-8^D%8DP0nKKx>OPplvj;J;u;q)EtCT8U<7@a!O~!1(2a(YoM7HhoK!b zRIl=m7U!T@8mix@y=C$Zw6lilD~vd4euj3{P<@553(c=kN~3`4H1r=ezd$KX1FDzM zr_|hm=4z<^K_63dAKFVpbrhAYCVxQtXs8}TUsZDt+E+vM4EnDo7=>aOi!q_Pi1*iE zWXgO$iIFq2uHpl+4=`F~zHc<&Inq4`YcPUkzPB{rUH*>kp&E>8>35L@xX)E=57S_z zi%~n(Y^&ad4%Z0eC2F&p?be&nks6GMneR5u_nWt|O?exLAZUq&fKq+~qA`^665#^I zXauGGu@OhEBAo0-dB0l&&dX0gTQuYG<2m?EvU34YjTK zYz_70_#BH==v)m(^vt@@tPi8Hy+}iS8mbG;`tVce5)GsDyHrDc7mPWWU^I|X{c6^+ zlwOu=sJ_CerhYq0;jv1?ra+&x*Z_T6!|2>~8fvHVXDv=c*K4Rvhw)L(chJom>U){x z1+JrZ3dT%LFe1q?W@AF_6#lZttnasD8(_SW@mDldCu6MDgz8xSszpWUPK{^^eO*I+ zJiZ^mU4r8C9gU!PKBy5CpNBNmXQp<8*>;GB9=4$S9MNE$lu>)aY*SEN9kU?!9@k(L zm0^s>ggpU0VL{3BMqZ?_}GHn@`;ApXw>c@FjC7f z#$-b6ER6h`VDy$@jLC%BXc%8I5!IldYpA`3@h20E@-mD=nNZseBiJUw2TJir3;|Sb z0!GiJ_#^6pOBz-cdfB2O^ooYYO*rL$q6r{B0O|*0Y*;e|`jy7)V}Ffpq6Cm10QKiE zvaWd^N^S+zpTUT?hMxbuhWagpvGUGMnllvo3lJnyjHQNQ`ltP@hjw zIsnv15ft};@`Pxop?Jy5tjhvTTH#Pb?zhYHGLfZDQx(iu?^&^3e$*sP)Ul-Q!7 zx>UTVq54y7)lmCgY`35=*kLgl`nm;$!ETG0&^I&&rOiDWgVM%cjnNo-SYtS$M>K{X z^q9u*g`Uhzb=Mg5 zoJtyl&aDi*a4nr%OJg8TCBld>JfQvnVPMd8K>%TZ)g(+d0-@MOc_YPDDS;vn$OB*$#-R`<^iD%O4u$&&@g@|0CMZoSoJ0tu9~w6#D7`3zk3v|8 z*P!q}y#t{%rQjce(hj|oAjDHp_>B-xLg6<;ya0vY2uhnY2CAxHdkz$SqcL)^6bir5 zdlJess-{M)h9cY)!bq%vBAiqpwl_c#Rs`h<6|51Ppa?%2%cT6F>TATy&;}Z@4cbs6 zUVy@-17%COGD{N zb<&8N(9RlJ8`?!f=}~nB-EbcVv^&VbHsV0_&`=sxxf;qds;7qXlj^0Bh-1}TBdbFD zYN*Um{WKDBriN(5ThO5zO7E&jBlbayHIm}9L?hmYj?z%xP@^>hXx z#`g(v3%X1r7DFG`h}+QR8bQ~s(1<(Gl^TKkqn^-6N=K_S;vMLd8cAu2(kKuIp-*Wf zrLQ#_aR~afhVryprxEW$pVd%4r}1Kf%2yh@BqY)zy~87@tW_^)B&E$Q8gUf*qK3){ zdjCXFd8}U6$O!0mjW`Z{MI$4jJ2c`w=&Kq@>3x?*oPfTrp|XeGcM{@#=o=at1Kpz$ zA3)#KP&uV2o)DJeLnwtEknvD@9uOZv=@~#afzo+E#z9YN#K%xN56Gra+6UqjsD(_x z_9=}Z{Zu2HK~HN09s5ipn?uiNsJ>F4Yh(-PS&g7`ztG5*&~qB9)6{v5OoU$0Q2nMZ zYGe}hiiYYsbyXviq1QB2=cz9>G6njThU!4|wMM2wuWP72RNrVMl`G$B1U>&djifT> zdyOEs{GgFk-u$Q$m!LmsB+4N5vxe$e^@~Qff&QwYx>o(Bk!_(jG*tJhn;O{;dP_rX zBK5mQklxk^^7kE$Y>zsurbZwP=)D>tGoZCK0^vdLO$nKaS%hvHDx*CRPXv|C)e(+_ z3TIf-reXe2Lqp@64tEX1`HqSj4!<}&Gz@9jQAtB%hYl|di-1~UzShQ9?x`XJbHDAELh`7_LccqQ0UDES}oH=&3>g3+~z8-n`hjt&~O3))e`FF~_3 z^d8dDNkiiWj=matZ|3Nyp+2soK*P>KhiRxk>L}E(3s4FpAl#rMH1w{_F;YYQTE`R( zy+?6O)d-6BX&TO<(>2r&bIj0i38gRv)DLqk)6hE%2ZbG=zLaCFhMj`0(=c!7vl<%j zcRZ(I)uGR8XpG;nUc<=!FKD>Ec1AH))(j{Omp>Jzw?A)jJilN6eG@j}>u3?n! z-qXaFM2O4_+@Ayzd<93dd8ukqIBMpr&IzHAgN>g+_pz%cqr8&T! zgVObY#u^=`HSBrlXBrxFbf6w0*g7cc9)gqGDbD~#Y2*tHjTbs7?*T?>p>SRSk_nI<9Hh_s}mjG&bY-N<;5~9aN?OQ5$+) z!+wT-qY;!2ztyl`q2FnQ6H505>^JBS8sQ72`vP_Y`jbZZLFvAL-Yq*UXdK8v_XYI6 z)Is+Gq6w6)2lP(WaZ@AWp|>>L1Nys0BtUO#=sl|Ajz%;$hx-_u%Ou?BKf{wIekD491nydUI~Tpch=HS zKg@}Eb=JXge<2gB0)(JGjgzhc)Q@q}Z-Dxm&L9nff;k&&B;v^#rlIzxGXg~7 z{B&qMK)g{u&x!bOHp4cB4aEVVKB_ZCBR_&>X{cTA?5&YVr_K=?c?3FALt{nG5-<+o z^B#1(hT68y$21E0+Brc(eE{b~fa?^}m~*m5OodJXb8(+nq4PA8X8w~t^jNB+%eE+!E?ChXz24AMebd% zQPZI>fDJfjHguy#k$X336uE1&hWby=EgH2L`l3crIBnG^3Y(WSio#)=hWcU7mo;1*HFLExm!bhK_{glpb)-J ziUXi#Kq+26Et4ni}X)W|I9a3L;ZYTx(3J#(2gJr+gG8TKxb^9f_4Ep*gga80gx`_ zMJW73$WNdM3xfJ!zDP@if?s_RE`);rd>_}S{m|tAX-FM{uGFZ5P~;y%A#8kCX%xc4 z7ipKE{+=(=451D~Uj>K*bsUPYC)6=0!k(ahp6^+JaHKw-FZmOw{!sD*Q2EeH0RE=F zo$od9CAN`geZSSv_=KO(Q2*7>rlCHrUnLFoas4W5u&SK-d1=(M(5f2h>-*Kv(0G7f zO^tdD>d;W%+OL6z`qqBw8tRMt_0dp&-4E_2)MhCBLnwrcKio;s_=>-$hQfrt-+`n7?GGlKfTfyloE^>G7{MhNQ51|q!@)ISb{+X?FX2JY8TUperA zhWf#Qhcwjp4Ll5v;C!T~z~dTq8TuYLf#XPnf$%#);{kzZ0F?Urf#fDYV*o);jf#dg z0SP!B18u2M@z5lVqTl;yR8uJ8iBPyE2x%c`0JfV!hk&8jj=&W1(O?q7b3PRQ2}an+ zyO=g!OGD#%4QgxDNN9kD#{3!}?GmaG`lLn;gRa)7;n1fvssOr1L*s%Cp4O;r=vobp z5jJ>6L*t7Lk(LRDFl&hW608QaNW%?iu|~iz8{r3nA$@IJprQAr8y9LA{J(LFh9Nv| z9n=`O_8tcUZL>C*j`xQ~h2izqeGSGi_-~#jG>*xC+iXH(nfyku3C1*c^U|5ysp`TY z0jF=HaT?2J$g|cqXSK1Xj|=q0PFUL#egCu8wkmgyfi-IG)^QuF&4a9MI~%~0tnCW0 z$*{@VcEQ@T!`8MdUniW_wi|49?6l}Oq#}3PV^89aCSd7 z)V$X~+@JP~FxnFef6#wT(JM@4?O0cA{r!%O%3a^p^kXreKAaW8kAL3b-(B_h-<-If zLMRUu;g00*V)%~2kNoPyb`gHf$KEj0r9*LSIDGE3Lc?i=M?)NG4VUzTPf~Dpff)-< zmS(!I#C%FS_$&D@zh>ik6wVZ*g?M_2c{bfE1y7@Rq%h0FuLam1hgnNHo+&;kcAe!Y;uK#zw8({jVzj+5rMg7fCE5_BM@Jm1QNyD&5K858s+?npELt=z^Z3&)Of}=XT zbr_J_$&KkaPAPH>&KZaORyd1(qx3;xIL>_H0Q^c%3dOO`)|LNsbJ^KWgmNDINq(n$ z(!I&Y{Y=-8TXYQdHGlnAVV(zHP&^jH1>|z_aar8zD|M{}uFxH;e!?#`bFMLC{H}Avq zSYxb(@5l3be?EW@O!nh9>GWQB3{f((3Tj5`u8Ls&BtJE z`B**w?a?#i?LITp*Grgr(loeCA_2fl)sD>^xLtXdIwfi?_{U>Ygm2#I^WITz-sw7`Ck4O z-^bsE<(32d9jrw^$PZx#W)psxAHk~sV;G@q$`aUj81a0QpWyHF5BP`tB<4jn;~%rH z_$ROq@F`|Grm(^MGk%7D&d>5M_&I(aE7&jai~JJ5%&%Z(QUSjPt07A&zS3%3L7K8@f#?S9&mfCz;Bnqbyegot{u*g&h(8=;)}jFpH` z(U^@EVQh>D7ZDpd5veRwq={A{ zU9=W$U>B#IXfHBgV;~c@20LJ0S4WX0I>B~P7ud_m7TsVoCr9*PV?{1n7vn@vj2b;A zdW$|HPxKZ2L_V7!`op@>K+L)t4;x2A#86RyRl z0<2A6gth5Q%(e2gu6_mU28(#+nt6Pa?@2ZlE9ajQYsAx-H#J#2Bi6yD&vW8=*jakP zTv5LXYwBr5{Z`f;E9%MG*vsZ>{2f@GzmxS~xma!e8rx&8(%)^aw|^6}5qgTZ*wEm*Ok&wYV<65#NgM#P{L{@uT=j{QPi@|4ppK{~asw z@0hFov6de*N1kSDtyTX5>;9EAV4KJ;D@YgVD&1f;sv_3)lQn?Kum?ca0II?kKy}yz zpmqPXU;u5IR3Pjb1;fHrJy~BikPTtmC{#9>S0w@>HCR z$6EfTGC?+z&1DPOQYOkInJiOes!WruWV&oE+sL-Eoop{NWTxyOJIXBCNp_Z9WLKFj zyUFe{NA{4p_&!!I*<1FJd9ttUC-Y^0IY17SgXCa2L=Ke&a+oZX!{rD$QWnW#St3Wt z(Q=F&E62(4@-aCvmCNMg za=Ba~SIQ^kD*2>bEuWHW|ZSrNg zUA`iB$XDe~`I_7%UzfY(8*-0)6ZW^>lKbS_a=$zv-;oF9A^EO6ERV>eWEVxgCr`-t z)TJu&;GK;{X*F)cXI{&m+~uGnUD4P-(sBqDXiW90W0`_!utJR zV7KQtd4pA9-k3dIja6qp=q!Whp9ErNL@Ux@rvzGi_mOpgpV&WU3CTqsmg9u>QUa*4$^SZmPS=Q9Ur8B~?$X z+3$^&`*|2~s*Jaob(jP1#uR&=`QhExK{lIJ#LE7BX2S@d7i)p>El-R)?O?B}K^SLB zGOY^~FgNCox9ojbbJh~;`wQ72_Ac9r_szT5>lnq@%(k$7>}_T+SGEE60!G4GK{2cq zj4~}7jD@A1@vvhs0X7aMVf@&ixv)8G7MsuJnbu#YtEm{p?Ty*<)6{hKj+y~02eTB} zLYNC{2=ig(U?D6XEQaNSrLcYQIIJVAfNg>&)GF9fSPi=bYhbZ$Ei5dogUy2H)bp_X z^8#%DY=q^4&1?p2hrNjR=ytUgR(H0s-_^@%yLv_KfPJ@}uy3#nmUni;R>L0HXxIz8 z2>W0eVZS=SX2N2^K}FVQ-&KcAiwMWmao8U_q25;?U|ixSyeHd@Hrrz6%j&WfY&qWf zZ$$fSJzBlX*c#X=JIPkFC)o>Z6-H4ju)~&}g)$oppPTj)&Z+b20xZm3QkT^gbyZ!1 zU4^gI*RZJY4QwlX2fGSCz<$(E>Sy%}zIFGTx}k2WTk3br;dn#cflZWq>JN2aJ%Cjd z21_ZzkcKktrP%THcNf@`ax>hGim)nG$?!BP8(u~g!`rB8R5Pj@K1L0rrcnzvSLzrJ zqpsmJd=0X}5?}-xK}Im_u+%f^8x4$xMk6ECXbc-I;cOA+3na6J>>@jZ5uwYN;eDQc zj!~Hl?2-{_L>bXWj1gtZ(WxdXYD7N=SPH@_X!J6G4CH15m9!Ybv)I2PNMmou!t~IBa&lM z?1{tj`V|c?v?mT9IJ~g`P}jtw!G#0!`i&~-Z%<6sYC0*^a$=a}#JF(%=%`4yBCFiy6@AldSJvgLtf?SY7} zDA&}#I5s>rsq7YI!5U*vwSp&A2ak40ycMi*I=I6VMyPd3y+V~ca12E#3+^CH?PP%KO#KUE&Z?e2v3bLeU=!TXgWVJ zHZDc9ZewfxF#RE2rRl4~ERRN%g_RZF$>wpSk3@TG%j2#8;&C%f;j~y=>yp6*`TgA} zZGv(QzNa=i%e4O5ER<;WtVD~ z;Up_alM`(j`W6}GZV{y;E<7q)UmazJNO)?L<$yHH0r6)3LU<&})WU(b%yL1LV#ZZ? zYKoO?Qp`)RZzZ1;>y|0{mJwExjfk+)j1JPUh{&>JXJy^wR3mfH@FFYSr&s}Ama9^% zvvdXyPfZQ0m^o+^GGfuFVFh`k%)mgjq}nsBXfbn7wB@GgvJ_%@Kh+A!xEQz0;)1;5 zK@amWf3&cw@!bH z{D^QX;9@LC##=ELm!>)+8QVISdtBK$v1O05f+wcTk*0>H##r~z1re*IX1$r`=2N2q>i$s`@>UkTdVL$vm!FmiiNZ|TaNh{*POo; zH{q%A5tYn>J~An^V0gcR_KE3wKPtLx-bQvrv&za8tEh@7JI^|vYCR{>it8{-qxJ6*$P;;1JmgtbTHc>k z8u>5+*(I<4!_z0YhZvFlYX4igy2{2Srakl)2X*fJJyzDNzY>Ciy zH=bsBAk6ZRm9@gt%ATS%JUPbJ-wa<{|A%))tyWgGSizla-7VP)hGgrh$(Gy0qFwv{ z#hr+mvRjmeaIC$*6+->XrPPRM>-RY8mPuA2nPPb;TIZsOc%5RALCo9~p<^&CJk4@K zOr&j~=>xZce}u!tBd%g5_H8xe2aCCbVdiB`PorVA=LYd=P7cxtp7 z^k=P@<~HcB&%^~~&a!esOtfwA!*q-?!Fqm}6-p6lE`!Yk-#M$T&RNN3xP+%BTmBDA z5`%}>2U|fnxO@=CSf|9q*#?{0U58L)tga_x5~-flL6H{bHsr5PMN-irioB@LiHvn0 zIlV79 z5Eh~H9?r93G$zefsLP_lyb;5TONxe%7}VcZ_&?Zt7x*fQ^N)LX_9P?_k^m79LmCkg zQ81Scgp0~eywpHI_uDuRxPE}TBX){q10BIQi~X=_j-vo zYP6_S5MqoJP?P2C`<-WI&p8RfTebFm-=6dN&CJfu&d$y}GxM8gW@l4w;~QBiHXSRy ziexgjxl{23dxv3GR>qC<=FkQ%O3irNA|*OpxrC0^ieJ=7+eW;k$ckZ!71I)%*iy+* zibu|4Pe@yoY|KrQPlp=CYD1ak1^?o%iwXa#qlWdyG{4R?Q z=xC$#8oSsufb>~o)0dcXTaw67I$T>s#a6tBnW8EwE=^mKV8A8AhNmx0G+cDM(~El*p4i%oqiHpGbvW=V;mI2_C6dZPOG|>q~79JTB^SZ4W#&I`-zC zKQ|4WKTk{<7nKwZFUp*`blKuLOXe+Fl6k?rs=3yc@SBzJo0agJo$#9-`RT_Yw&Kh= zkx%B_M5wt5zY7z77bg7XCH&?mTwhL{T^PCS9ZE76MLwB}6Rxi$uKY^EkHWK0vn2Af zarj-A&bsL0$BzT57C|jdh8!E)`414h@PLLet$8oBkVrD_CR2zoaOtlo2g7bO(Q13C)0^sKgF2 zOH8}Qv8kNCCG5U!M|?}%eZx+Q7^q2ld^?2oEkE>ar|#Qs*tZngx3$@~8V28XUp{nK zKbNm-p4id-O~dco*4i&NwcoeHB;PbPTxXcQUu+s3zu2^QezAE@-wt|x+ui#mCja~r zn|_8ua$hs%E%I$I?;E z<1ez$Z${KyXBrpZ4g-DLOZi6QQskSF4z`Woc98xs(|Y>DY`nuG+ve+V8-BP=_ZTBb zzSZdXmTmgBOZV*v$v1LUfuhEhe`BpA{LwbsQOOJdr{N>oD(++=q z+sga4mG^Bc?^{ijZ{^iDL#-nJB>P-eHQ<}U75?_QtjfeUgRdfgf-Uz6_P%xmUuNa1 ztazNXk;tpGkz-GuVvoz)9S?7NTr|Gzaj_ZoB(5)M7vJy_6aEY{D)NWh_@m=7W7?j# z$Ky^p)5xh&2Nd~+tzg^dGQC5QZ^s^ z@h#=^OKmxqTKO-t@>^=lz0Br&sg+x+gz+tp^sTYPe3K9+nPk7rtG+E^Sw@%i7iJQd=(*_itCvOWTK^(Dr_QyY&0*((AWNpWiP1 ze!KMg?b7QTu9tXTzg>F$liH?dxXr()-5GAC+Omdp92^Dfcnmon2- zr5$tTU3gKo4p22uBFM7w$-|p$m|eAKVTO)g9Qp>@(b?QWJ2T}b#-(o~;q;9poVk@a z&CMjB+)lepQI%U(YbJ|Iipot!6d4s0$0j3+%59OB+afiyMx3`rT0Y#QxoX+MC6Z=w z=rn7GO|y2IG#i&rvxL)WmT)G`;xuWNfRbkIGHJFt=px$^7g^?1WLj#NxJ|R^8926S zw!%|ng{R00PjR^sqGHp-mlT(o>x;|GGh0?4;qDb1s>+VCKTv7uX@L zp(7A40~Qx`T~;-F&XT3G77;dztlWk& z(|44hJsx&a*RL#Fq@!KVC39v=oI_3GCXAmTnNmD#{MarFmo1$)YvzI~!e*zq?G1{o z9<5|(Nm1s~h4U87nLBgVoUD0O%M%CQ(q&cYbJ4;sm=n`R+S0`{XU~bvTCnVbw2S7< zTvFX>_Pm)37gb3TN{Wlh(ihIFVoElB>6}>!-{MjR>ec8Wt4&f%ip`*`#JA-#cDN~r zv1X7|GS+m?C1cGX0^77(V~3AVUxq%qxG23EP2bFFeZ)wr2WpvlUtLsHJ#)d*Su?8^ z(3A{MyJ*p}rE?^AnFA2J)Qq`GO3hdb+ti3s!(BKwVo++vXeGslgJ7H6mztTPl2S8O zP*gI0XxidM7tb;EvDl0RnSnBm=~&yGkG0MGSljH6watC08Ikg^R*0i|JJt&2*s`v( z7NHs=d*@WoTym+Alrbf-*{I9x!GzdJ%WNl66phSHJ5W+&^gB$ETB#X(Qf$GzB{R*H zW;jJ4+bEbBVFFu$G`cg+k4;}ZXDRo$mzifPGAeh1+lph_AdXE=7a5kw<@UT8<#FCr zs1l?6D=D&dol0-wFSmIyY+UDg)El%_3ofWmII9y~cK%w$m%NBkEGC zAt*8vJhag^ZFG_|mn>Oy@v_BoJ#)mJ<#>tiimX?8rg+U>bg|5Sk>26PhdL648ESkk zSX6zHaV=XsyDG~@J-h0Hg!I{V)G*kRVw+cX=8I!L8>Q!xc{4AhLRT*{Gp~4?k}0-X zS!}bi*p{4CS0bF|@r%uXmSa=gtVuA>VihyYFW6(#MwX46kggSk3rrm;8#k`=qQ!Hn zE?Bl;!JO($+JL01O)!(HvT?&Y&z(om*-Pfksz&>!ofj;+L~c>W*rHlLkImsS9z~94 zo6IaTV|eCqY*OqamRYGPV{9+sX-A;%4wxj@7QKPd)mk#uayQ0y_8qWaY_*{gkfwO+IkrC1g)biHWNqA$<9V9|0K z*+gh*HHu2DKCRU1(@O0)r?jLv3oY&ia~3SRIC+s(O4)|6$TpDJ_Mxp3snjZoO080$ z)DG%P?I6C?4C0yj5ZNm#88Z;$xh^v9NKf^QVvRrVl_ha4w({+%ZhVm&sj>3OHZmFa@M76Nx&wdAuH)zN57%wDBk8{ z{iXf0uPw-^b(|?3kec#~!`yPr zk?u&$aY-PGUX2%eV5*z+_!LChO@jtK2Hg#qMIvCGHZ;OI)6d z@9FVGteC$FbESJV=8xSUWB!zN@Gjrky9IMCZ|}K$Z|`2r-@Er=*19|$-yYkB`KG%I zldte$?qPMg>%Pn0u)N%$6lQ1Ei@SV@EDJMRWn&)2>Tg$ns}Hk8m0^x#Ww)zFv!>f+ zO*DDSmt=3mTt&&ctaQE=^LF;LbNOo6J(#~$zs2O+VVHkbf5zOSxUY(P zzw*|zl9R=Km}l^2smn@1o}D#-A)DN}X@_F=;f;5f6@7zwn=qS|nEhDY+FRsL=flbB ziwWpq*GR%9qNK_Sw9-a*5-OpK$tAXTq#Ymn?85un?q*bFo>A zmo9eB`|_M6yv?+5=8`Wv^A~=3;g@-HM#tmwc2P|1+19>@dZwQw1FVY0c^=+66+h!b z&aB^JLYUNOQ^&?@1@gQeai!^;ICUSkUbX6;y5ZFOF>6mn%1)bqI_qJ-IDcg`Z_$MI zzWPe{)P_@cbAHKb8JGi4>yBA-+V}9k;nW{s-h3+V>!#={)ZmHgjhbOK1@PB1pWnI-%6;qP`cGo2C8{PlI?26fyw@jK=F+JsfUPa1( za=Q6Xn^G}9`kxt_a((;%^bHkve(-<#2L0DzqOjA4P9J*KrYS8`TFzXeO>IxQMEjn( zB>C6J+DDr@M8*2EMwqzH8gb@U{jcn8V%G6SuCq2(PDsYl)^*k<{WpF|w@%Aho6cQN zPORsj$dQRz6&ouyYI9;1|Le}5GV!{J*PS(D@>P?sGNyKExBgFiSi8S8Rhwr|oY*J& zpSksa##SuWe{CE0M0Hi=&z3|vJn`X*Ek;s)G=A|3rd($fR@NC;W%Z;rmA6b?HF>no z`H59$#wM-#pN*5&RBV~FX5xx-^Cqs)|BCabuA;=XBw=bF!cCi;PN>?7Eoa6m>ngTP zPM^9;$HCpWcG4Ohla_jYZ!Ikx*V-6FnoLO>A0$Ao(N|2GhRll8&#Sv|!<;)W*nGwo z^Pj%qj2Y+Mtjp`l6Xx%(zFp_V73EWge&x=kgO(1ubV>E?%Ln{#;q1FtOsQDBe87yR z>f7h8ufF}VE6*A+>)x+DGqY}T{p9+ISyNgret7zZv$yHeo?JhL(joR4Q;W`+F=gnK zp=ZoEW6P8l%o%5mn6!qoBSf;06J4@XhU$A7HxeWHZc1okA1z5|jhHfYYLO{DeeLuO zy6h;`O&4umkXNys|JQC>vT*K~_ElU_v9jW+il-(Htax$a(28p+uCLfu(KK=V#3>VR zoj7CS?V#Xu?>Q^O*TR+II{gK3`bK`?POj^l zEI%omY2h9E9I_*63{R6IC%h{>J^WobBYcG898;S5TjU3(Jduw1_R8&1dc%E*{C7xs zOSs*H&?YhS9OB9s38EzMy}`K>6IbF+l5z>C!maqqQ-}M+2i{Kq|LOhGi7gQyQu#)> zE!;zn_T;{DM{=yIz8yyrPWvL=`<&AWc|-WHNQ0IGYADaw!-SS&q$c_$BD0%n)DIU+UBR* zkOP0xviwWWaA2I=o4WLoew`g<nz)vB7eF!vMrsoYdmSA2_^FOaaun1K}!4>)g+MnXG$Nw_*3LjDdRHM;hZX3BdNey`F# z4xxRX5q>A!sxKhd)^T39-}-25xH-Hsd?fs*oXZOTN$V&-{O9wxEk^jL#6jyDe&0D; z;(s!nA=lXYqGd7>I$cYewC4kjU-)`5Pjw3A$|fg+yzH+_)#m4A;bwboK9WP5r>_1@CsTqlnzgJb#j~w5>Sfyc zqP_VK`H@>YC6}?IB!xBMo!YH))A$i)pK%jDU^L54MC3msV{-8ja<;b(m%?zkCb~N4 zQ0mPk2bhthBu`NC-I7Pzg#^5YT(73JDCbB^%_veBIG2ReX%~*5_1GL<7OvvSv^4KV zLcga|9gYQ>TP+D6Mz5e_It^J`h22b;&BU@qAIb6kTz{Exj+>nl%b#E%_ICtfrlrV5 zf8mn)`Aba86uzq^PyYy)!aR&$!d%6k5axGD!cRLow>kP84`BY3BXZt3tc%JqtPD3w zlIUSL*9gD89b2OTKK*$3ck#_Zk~mLJcQFqT)|%RU@W-KCsn^M0xP_R4z)zNYI zlntE?)9Gz$cr-SlT!{%upcOKqC}HUfINmJrG!TZq0(YXf3ZKMpWpqV!pN?(f*6ovR z5yV~JHuZAdKy$T`6`PVa&zKrJ`4^fNOxHAGZwmAEs6gD)bna3AnlP^umudO*?r9A$ z^4Dzn^tKY%Y-83fUvADeqmRXx_9Z#4(!TZ=z7)B{?!(oe>5p+~2X|mh06#kTjj6BfIca_(-L!6Ulx$P- z46|XBmijACJ@^;hzUWHZMS^tKMPBfRh)+m8MTT|z@gitsEJLjo*G@(<;*PFsZ<{A< z>)Vl^2@##K>=Dlo%1KUlW%QNNHul7k)&|EIWko;JlA96Q6_F>J1s%@(j*T3jrmb6C zJw{CV#bEs^4lB_Ui`iX578})^f!cf&FK@q z9mOx#*CwCF9uq6q(sN1ucnVvO__g29wOhN4+qiHyOPZ{nj9z<}IYa-jF$!aSYz^cZ z(rf+Ru=bY3eRkS9qWcluBf$sS|Jw6hYAwCghy4<%mvlu(2fIq=hx}w*pk0x+2-gfb zqx~A?>30gB)1K$@&uf$BdkLl6oP2W)HDH9+BSgoz`iJ%L9p)@^PyE8??2&d~AGxEp zLo? zTv|e&HQ{hYc@=rIv(5STYz!@d$P=aahP1*fbq^tF&}E*(q25C|_M?GzLmo z?V0?U`h*4;hS?BS!|;(=os;BrCm8t+)XspTT3ij}zt$?;0E-tF@a(shlA3Y`^)%FT4yZY`jdTP-*MSfmDI4vns%A`q;%^S4MSSY3=jyF;| zwNCeTtwWRwxz=i3&>3lIOr#-2Ds)T-`I$UTEsKC^I8=XzH!&g#| zcse_lY2*889_X=5yC1cMoFO;YX;Yshucw+ohQsOBf}Ga1klx3hxq`k(OL0@=^8t3Q z$aPc>QX8X^KIl~@baagkMw!`?3O7dWT-z9;S|z1hV_Ig?UK8;_9a_sx>Q&J-axT%j zBtszcCDDD8z6W&;?BGn4>KaLx){BU4n%Xx*a{=*Pf=z3oTSTdi4YVsZol;{zAg75( z+E#sMTOzuyQljEx#v3Ven+$D2=&%R+rIb-F=Z$R0=zzS>MHWt%*l*|RfR@v=HM3*GTg_`=iK_F7XfhwRs91fASu7WUgZ{?8(NJ62kf%V6}-gaW++M5}u#P zk&K@7|_Ds7FZNqhbP`|K$8fcpqb z36fH4C8b3IW+#HH575vi0{u&lJo@Jpxu&Gohj(KpRx_A+7JZMXr3s(M{W5#xC4Zxm zPR?yjJ^H-e37+`TSi?u|$ zO~xH^58+Zek2Oq493S#a#+Vv#00*`fTOD%>=j(vMj%x2mndwxp@&txjOWNwfa@xPA zv=@EZqwI>>lN{1_@5#uLc~a3b6yV!m&v}LYoLIcY$>-|l?7E!pQO{`fBq{kKb9mD4 zGJ|ELMc=dIpR8HvY~r$#)h97CSesh5`g-ZXC8AW`-*L?UiM}a)aB8dE^I$!ZeFjr@ z|F#E0<592Y{>g7GD>4FcqmtCTQqD!mv8AR%uLhNozqK{z;@U(>QXe_~P{!Y3hy(H= zAy*mZZppNy+#@S$`E)vLs@hox^KTPO*N#v5m$+}@$&iq!rZaAopFXzjit(_z+LW=O z@$b<53{oB4Cz1PlL~2{4Hk>GWsz?iC?8rBYrUSdf((fSLNAgO{Ynjl=RDZzL(p%{B zmZ2n$Kj51Gpi|*oNzCV%Y8hqKv{{j6CDFEZJ#~*HJ+)4%X>Ig)O^vLoB2g@9UUj_MDL#T`V?HY4VfRwFEbp}xNsYIIEo&o@;l=;q2RSO(Yb%09q~7v z55k$?P4NI81tW@|>kL32wGP)eBt?VKR-G8maLOMD{1To7Us=`>;4Hk51m=gEh{{aR1pZG-CEg9kV<_>Z;9a z^F}~QUYi-S56dm$jM}Cs{uH|%?@T%KU*~^V4s`HF$gxopk&{Sb(2}LrPS{9M6e`s| zAhtwYsi6+;J{Zdpeb~V-`|p{5dk%b7J@&u-LH>KgPa_AqMv)*Fkv`Ybg>kEeaU_eX@j;E^{_zmM;q4f!+S94uX74FV-%h zaZX)v$LgX66G?Ioj1ZzBV?|<9>J8c*Y2EdIe;wz5TlF2iuTvU(Z0S9?^t(D$D;!q? zU%lg#C%aM&(r<=UF^^Yu3Ajx5fO7eoxx=@Ro84Y~6?dttugOe&Co|gjO7D8*u^(1< z$KlJFJ)Jb!2`j_tTs6JQuNqM`y6U{D300?8P2u=F9k$I5S$c1*9{3)7-z?>%$=+U$ z?CsTAuI?iHd3BeaypG{Zscf7DvK(h&i?ORnP2^X_Tn*=XF5JEFy@m0rSXJk$+^U{c z`TS3>>Q^JGU0`kR9>yF;<@4M{tcLV$T>D~SG-hO&#zem~8ug-an9sORGz5HHd55K_K@5G%@L_gi_ z#4di_*u9UP`}Dqj?AmucyY;bCAN%x8Vt+pU&3ks{V_&|-?8j%mXn#5T@UaIUJMjIK zo%hzt_vY`FugTZyz4q*P-QRMX+_%|jk6rfk9((Mtm&ML{M@8RK*I!PT@1~DbquEXG zNAfN4RqUd7yWTyIz4O>Nk6rWjsJMJ}+heD^UhI&^?s)8tSHhlnXRsIE4EDhLhPQ^j z?zZV&?YygKrP-s9x2Uwcp4xsZ^@=_6v>Tsw+JvWRlbwvbyLe|oo0*vF#C)3G!1bPH zcF2vLhGs{bPvUbGT3;1AhHoB^VJ`utV8$3FEjuz`9r@ObsDdgOBPE7qMtW!U8vehl%R@NPApIvIT(?$Iv z{4GBJ6d_3Fy?GK++1H#Uv z_(|_uEHS={_eeUqtKD0Xk6Ya}V3T{RSLoiFmJN<|Z`Eg=SJ}DoRd)^8 zgJW3>sn2fX>^9DBF>3&*d3{q)P3l*ksv^AZo& z(+B(#`=4Rl>kPVpfOSuuxzl^Q=4tjjveogap~Z4T{jpF?UL=eF~%Q5H{EPN;3<<2Ga`58264zu;+2 ze(YeE%Umxbtn+w-)(cp1#uZKhGUckDA#JyWedZarxvGV$TDj^FuIfg;>cW+WAX&BEH^XZ0Tj4Kwj>ovyE1dmAR}#zqusU`) z=*N2RJj%31?E&ok;_3_A><;SXguA^Sxbr|y&!RSTkR&V{uu_`Entt%L%HMY+$rEr0e1?xQ^1{G=S~543b@nj zlvOwG^g4G4xI@4l0`3qH`#VkDTu8b=pbY1Xh97;S1`g z*lWPe;OF2Ml>MzvA4)Ax{fgr|z^}nw;BIh_Q$Pt`N;=;`LjD=F6SB7lv?7P0lMTsBr$ExVQy-7rxV%n)T|&J~?9QMI?yT@F?(`ma_&aw9ydL;V zZejNVy*b~Px5oSMEHUmNyi&3M7dc+k=M|)dJGhg}om}pe!JS<0^)@;9zLm9>_R`FqR#GNcBfZ}N-v!r&`=y1u5%*2FSAo^k*`H#s z0Y3vbgP((22=fah;8x^wE$&~2Th*_y@8I08vG2mZ8{EUn!oy%A{b++rXoE{=gG*>X zdU59#?%cwiTex!zve#AJh`kD|20sOBz|UyWZ^r&PxCQqw$d5a4{~Fu{?gsZz3Z26S z-GVrWNe(9KdqB=@mt50zo?Y-#a!kuzRPO`it`oWTmX*8Lk%$9w4VjBkhu+g|K&-3t zLnoiR?W4T*BIzNL9#U4@kc{58hKAfREv1%j=Z+z14Jo5-NJSU!wjHVHZR8IbOxD(r zyLIJmyLc|mLk80uWjTFy?RDP^*Si6ThwDGnntWKeUTSjz?6T6S2QPq^oJz`}l6h|zidgM3NZ#lOC`;TBFxS!*Puph>LoG?#-r$Gb9FN0UW>m0w0-Avzb756DL zQbijB7eT7xwEK!Sr$4e>uXy{5=Z2Vx)% zbmCkF$ON517mx+If^3ija=~h6FJqRy?i#Sk(c_MF)cSSQ_;u9yb=3HE)b@4i5%~C{ z;0;>tLT4}Xw2raOUdA?i9d?{&grWdF5_G!bn^_g>RGT0v>WNf)^p83o^b}xID==L z!86YI-0ESWGs8=%i{#%7@^6Nuu#yy3lEO+-Sot}ou(DkWD@kD`yXU)T`W5g%45Wc{ z&6c$Obte7jy%8peN`BdV@aTFpv-Wf&%b7qgcIr*$d#Mun{isEHc@M zOg18ujmTspGTDesHmYYh_bk{IK8rjyQrgct$ErbLgVf(L?BQS}7zKpad=5R(0BX!2 zK%3$X2V=k)AnKV)-QM9!_ZTn)6ou7pDRwy+4o>8FESLaJ0jGgUUb z$Tf?xR{-=PZY}mh;92k-cplV)7s0Dw8+a4E1)9QYa%m+!K{Y*JH7$HKeN45N4~_!I zhbukO0|H@oSy@_LM|wN5v{`#TzI-^RJM zjKB3b?Dp^-xL7*eqejNx8^X<${ANmiv-%U~@5lcE?9IgW5PlDH{20fNbKMi*DcnzE z*JHmx81`_0o7BKfYSdQzUInj#*9p_a`M2?J2JOfB!zqt?%AlSysHY6-DT8{-pq?_Q zrwr;TgL=xKo-(MX4C*O^dh)-X{I4hP>&g3i^1hzDuP5*8$@_ZpzMj0VC-3XY`+D-e zp1iOB%*M$1NE_p1%CMgDtEc?xDZhHkub%R&cSiD*ah@{HQ^tA9I8PbpDdRk4oTrTQ zlyROi&Qr#D$~aFM=PBbnWt^vs^OSL(GR{-RdCE9X8RseEJY}4xjPsOno-)o;YR>W5 z=o#|iBj_5uBg4CS(zrJSn`h!_<2-Ggr;YQpac7iUN%8(@taoH3Mp zGxfTedfiODZl+#0Q?Hw;*Ui-HX6kh_^}3mQ-Aui1rd~HwubZjY&D85=>UA^qx|w?2 zOucTVUN=*(o2l2$)az#Ibu;z4nR?xgPH0kRMv3jwkaAPWJq5FiTyvJfB(0kRMv3jwkaAPWJq z5FiTyvJfB(0kRMv3jwkaAPWJq5FiTyvJfB(0kRMv3jw)MPcGDx3-#neJ-J}UoJn2E zr?17zXVj-PSw~^>oXA0d90bTgfE)yR1S}e^@o-s66?h;9(m*=s1TsJ-=nT4mEYKBX zgB*|xx`8~<6Z8VTK_74!$OnBv0g&;TQ{cKl0T0AL8c25rf7CG=9Jm(dG#D+lqi)0g zCHNC~07T=m$8bLdo+0eBpdR;D@G4+GH}wYWYZv|pj*x1dlmE@Ku@l+YiEQjdHg+N# zJOAyv86zwE4lXMxdYe=J?X9Sf4*H|Fq`N<%7G2Ll9H=wWE$IL>H@Y<)giTr)wd|Ib zbqscD>v{&qx`ky80IRJO@IVZtfppLbWPnW28FT?zpex7*IUpBw19_k)=mmO%KHxBr z5Bh=v0E1>+QO~%do^eGzHLR9pF$b$*1E^uOXhCYxg4Ch~sYMG?ix#97El90PjYbPn zix#Ao_NtK_Z$u^=k;z76Qja_zF>|EO06X7Yuk;-0Z5;m++(VnT0sIkc1b@Qs0RZEt zR@R~|sbx$ufLb|#TKNdI@)2s~0BYp`YUKcGRpjvTEcN9)MZI&!p*9IYcq>&VeMaRp zjvTEcN9)MZI&!p*9ObKtv{Uuq1@MxzS(W5y4sBKrZB`C#Rt{}e4sBKrZB_v}T1k#p zlB1R6XeBvXNsd;Mqm|@nB{^D2j#f&J@(!XJ0*(VkpcovO%XTK3_Q}lZ*V^ouL$7gy3R z>Jj!z`bAcgglpZ~z`fu;un{~6YB~21cosYdo(J{dMer)v2Hpfa3EK$X!rcVk#=RTt z0sF$WA7x&e7JV%m^|fj*(AT^RS{bQ3;ac>!YrPmq2c19${+ZaFK^NRPfE5#750D2A z0X;!4&Aug3is343EAcN1;REE?q%=_*oq&FTfGKeC+v3ahdiq$!oAJ; zX25)|cRa8wH)uubobzG6=`i1Pm~T4FHy!4i4)aZi`KH5s(_y~pFyC~TZ#v939p;-3 z^G$bG0Om81?G|La1=(&vwp)+c9sQMZ;{+rpLpDH@ZA4sL?~PP@LHc6~eT`gYp&?X>ILY1g;Yu5YJZ z-%h)}opyaY?fQ1w_3a0jea<}uo(0c==RrMq5xfevfj2=S_i;CYk1hMu=#FLu50HIk z028?{D@{IlX0SuqXTClm`?wFtef-EjBm3CoT~hXOcO?54(W`!PjpEhh*lplma39zR z9t0m%)3}qcjlgOg$^GrLJlkn`w$t)#R~^mn?Zsc8dlxWwb*pg~xt(jic*6JOC-4n>lHeHu+C+ZUJBUs-!AbiD^)GOYx_zecf0hkf> z=@m-p6XXLEcGkottZ97r$E%8&iwPIRq1(Y5Z>GxRa?*IB@9UchW# zz-(SX$u%*X7ciR_Fq^0KZ%y<^P4q`i^hZtfM@{rcP4q`i^hZtfM@{rcP4q`i^hZtZ zgPHMeh6ZNf$l5C>BHBpjH)VC(; zTNCxIiI%a6l5C>BHPJFQ(GoUMVzjNFoGCcHsb9URU%jbcz1RoT@U2p1LZ^NKdSp+NcT%dplVn9~* zV0Qu;nn_@H24>A_2TX!j)o6_0t zjl&)fgi&Bm#7`In?sLEbj;pbk1H-2Cz5Pyp>~PQzkjKu_ghqcfBeyX?Yxc)sj|W=A ze=_#LwESmsZW@>l&H}t86;=Mi)V87Sb{|P@095W+A0nNNE<* zQa8|2H@G`+zlr@8;9D^CuZ`66j@OF@P9Y^&$STH9f8A(4tB>`lfL#x$%MG-=jkL6l zw6u-h3A~*{c~Po`w6=|uY$5fzfs!qxJ~vRG8)$JGsml#sw5INI`o-P!i@WI;cT?i^ z^ozUc7kASy?xytX-O*u z4`u+pLgNB#y-H&?_8c%5_l4Yl9&WvAV=4ABupC?rQde>C)dKe~fVC#>Bj8c+7~pFP z?i1ii@K?Y$bKGZuUiDFj9j*NM8*aV&;{|NJ0^}uZ)}^?tOX2;U8YIB12-$(V&8m>_ zHTvY&&`rOFZu&Jf3UstaJ7E3Fe(*`wYMVC_cwc}%wEcQ*vwCC~Qc&-e!Lf&e5#V@m z0`JA>6(y9NcM_nyJjx3xNUSdLzJWVh>wRTADcIFc3U(m{El5ENQm_jtXh8~Ekb+%E zK?_o_i#A{vZNM(tfL*i!yJ!P;xo2{28ki2w0_X;if)=Ep1u1Aj3R;kY7NnpBDcFS+ zv>*k$kb)MZpam(|Wu>46DcFS+v>*j7NI?ry(1H}~q8->pJFv^$!tr0g!{8C{D0mD! z4xRu{g1>^N04o!bf?Y^K3sSI)c3_wLH{A8uFJQlj{StNqcp1C`Ud3-4*n#^^?6*J@ zI=?}bddE_rS3O26^>?WN?b&{Ca4FDh$)gp`tR<(8n^pUIEqQM^_PgGJYst;Z{e0G& z>(%>5a?MfLL$J#TKNO4rMk3IbagK6CB3h7$T}Xr;`Rt-y*hQPrcJ=>FPCveVG#DHQ ziotL&0*nNs!13TjFdB>jW5GBu9-IUwfRn)~;8buL_#!wRRDj7~DwqLgfeXP!U>=wc zz6=(Cg`f&7244Y7z*0~RmVxEqQt)+f8TbZR0WJqufNz2;!Bybf;A-$)@O^L%xEA~X zTnBChH-R66O<*&q1rLEO;4k1|@Cc{_2Wql6inf}2sP6#oqrL~Ym*QTE`^elC_fr1{ zt_S+PN$#t-uj0PEm-4>)3DC1HKgC`HZU#RGzes4iH>zLqPT=j~-+3G6ecn@fpZ8SW zS9gNDz}-M=z<-1NJMep;HQ;~1PHMq7q5kAlR9XwpGb)}DP54GM;eSUH{&)2x z$A1M+;rBGh&*84e{UY{DU@Pud0pAKl3;uVt4Zj`WO|TQZ#k)b}Aku*M4d0Jdl6Tkh z=@j1ecATQEMQ=Dx@p^gh(0HSJ%# zL(C>I_lU`R`1%tvV%{qz@2}&-8|;|f#q2F6?~a>$VfGg{Z?xm)opwy#YR4QU=2$Ta zUox>|uDGX)$@}&A%@EW0FW`7d$t5M1VP9GD9n2rd*&D=ME#@uSEaQndyGhL3#k^Zg zlja)jZWCsUoPAu(6nB}q?=!?zU-F8a-6m$jU9z*JS$y`18ECUqm1baOi#t!uRCgco zDHL;nn8%7K+3Ndk-KFI|l0a-HXfx?99bbBy_$=4vf$q{u?O!I(;y0B}Bh0xH@&Yk0 z60=IoYHgZd=~uN~x)$9oyTy!)`CiiP$F$q;408RR;=WnTd@=iJvrJ0O zpDsQF2{}Zk!5>k!$sdi~;7`CjUCvI?X4xifnqQl1&(nVXd@*OIxTTDIDGQTV*8MdJ zbA^~GZWF)1Qv9zG^LjB?iFq^kSnIDB_nl%M=-xn>`~6z~QS7Ju=c6?H4LW>O?sDyG zV(vJ=e~v zm=ja{r>3~ij@)H4OuaM5WeXyIVyI7XFG+Dmq^Ni8_; zZtYXHI_Y0_OXM!Qy{I~J6GlRsbE${GDGr19&^=C@>Hl4F-W@z%(!&oCVGX=YVs;`QRr&?;!nC zum=1L+zfsWZUMX*?BhS5U}qlX$s z4Tlp5;0>;C#NLhF3hX%3%V3<>1>}Hya1=1(!J3ru zV2vFQ)_9Xxbwi#r0;oZ=H$OHmTo)Tpxhv=E?0(V>S z*Ma);mhb@Q7~WtV%)dW7;ubqcI;H%N;=6cd>^nWeIo>(iInk-${AB*4Sd}&vzZv{b zaAxs8(V4@4v~wZFT2@1;auVT)p>?k>-ewa-Q(w-t9kqQ1!8}R|Mz&KJaE46vT=)ZjhpUfIsfNo zySdIP_P817{M0>$H7j?!gWcntd)yLtsI%TJXVuDm?0YlP`2#!OjCYW4G@hH-`{oR1 zvwJ3bu?O9=(0dsdAkcer;rFS+-k-EMI2L$Cd^yAjRytL$I0$$8D)jJE4__Zc*n zyWIw~So_>p(MrD0ZaV*PTHGD(PG`T{=)T2Mz3uLEmHVFizT4Stb>nW9(i`05vcHaU zyQ!E;bGxffs*{_?UOUkf>_TL%d4pyVo z39io`SJ%43)DP9~-4oe+=g;mO^?-W9U7-Hz^>r`x4)+GS4|{{WV)rS}_lCOlUb#2M zeaRc=O?Us{o$a0Dwt5S^1@3;Y+FS0%y%pXH<$70mE0yx@@P4B*y+3(dR5$Nw?`d^d zjD)KE7(dlFmKE!&3Sx)E4pD`%Lt}@k!(#=p0@W`zE;e2r5&K%~>*~nZ`q;hdsMvk6 z`_!PcZfV`rF=+*91?pJmG331$8PJOzbb9gi;a=>>!yFdq1TsJ-=nT4mEWq2|?9kJT zJ%D;Sxu6@!13iKM_Xd5yVIUv$1qGlVtDpvh<3KSO4n}~HU=%nWoCrpPF<>kh2gZYw zzyxqII0c*vP6J;Ar-KSG8B7H;z$|bfxCqPx^TC(F0dR1z6-t&t^wDAAAsw?jo>EmW1!zf+l0Lt)Pje=7VsCq zN-W0Lt&Fc(DMoJBgBQR{PG?p+vcrq)>Cnpfx|Q*DE92`{#@DTkuUi>kw=%xYQ{0d7 zbt~iRR#s?ds~gbPa(~9yt&Fi-8DqCH#%^W*hy9GPTNz`wvZAbxads=?Y`wBf?={nz zmEGyAE6rBs{kLq!+j|*rw=&*tWxUm2r40 zD=M=YhwoL-kPp1G$#}e#m6h4NPuIwpyp=I|t3rRtDz)gnx@=ZlX0zfloALQx#^{XjduwbxGW-f_2FqCsTh3Zo zR_lQ@kPbS543G&rgDxNobOqTU2jqfoAP@8ey+Ci!2OI|SL0?b+9;bdi0sab}0#Acy z!1K-#NXHRK#}P=!5lBZ4>j($Ctoe6Y^Y60e-(}6e%bI`p3!o4j4*G#3K!0!~7yym} z1Hmy|Pp`~6L|S$1B6g%I!7k<4$1VdyK{?06!HJw73nqY5z-eF-m;%lKQ^8Cy3(N%< za?N7w72s;t?cN6N1^0oC;6cEf53J-%W9BK1Hav}$d}+)$r7_!-MmwIyO1?B^meOd) z3z(NIU?pD~EBVsgw{i1D8s;Jk+w1H15hhxaJ{NxFD$ z=2{DwYb{`|wSbk1X&$T4J>KtNUbVnuowU~pWZ<8P-5GR|og?bKY_#DyxVz)m1LT22 z0AH$NF13Jp)B^7?=0Nia(+~Gi*vDd%Kg^>Rc;t;Y5+*eY9M4+{$OW@%Y2K;C%X_Kb z7eNJKCgL{<8~O0gbjn!AP{90Z0jm|$m|rbmezm~+2G_USpDMOKEN70Deu}l=uR33V zSrvl+PmL$y4>|SV1@IDJJw8u5zm!@E&LZtssb>#tw!97{5$r{4$yG%VfqclNrBEX8bbQ?G!)F%>bF8Gw1@c zKv$3razHNlPZ;M^F;}&ivBiP&Wi{+`H3MawdZmSq$z z%P2)nQPdRmi}*w89w1{N>_38y;34ox{516_sB;Fk8xKuRjECMMjt?3W6}lrod|c#= zN{)--4@Ki5_68iu-hd;KGna3mE5J@{^nZKk|5#-O*pZF?Zx8+79{RsM^nZKk|Mt-T z?VJ$L0{Vc%KtAXT3P3-;!!sBh2Z{kJmSBqkY%zc> z2C&5dwiv(`1K45!TMS@}0c2C&5dwiv(`1K45!TMS@}0cB6QQkt@Piy^wGKW(Yf@|x%APw^wGKW(Yf@|x%APw z^wGKW(Yf@|x%APw^v}8U&$;x&x%9)i^uxLI!@2asx%9)i^uxLI!@2asx%9)i^uM|E zzq#~xdlb(EGYw#-0n9XjnFcV^0A?D%OtWC70n9XjnFh@KyrFJ@Ve+gn(*R}~z)S;} zX~67H7R)q&nFcV^0A?D%Oaqu{fQBGcx3bdfws5Oj%ew}@#J-)`o?mh94)AMmC%6mT z4elZQI^z2c?%x9aKE&^^e-Acr?hn|1#NG)0L|pfC`~dc5()J*3@*M3$2r~^}rUA?} zV1{Tb%ycKrbSKO-fSCr&5N(B-?xe5YLtniIW*RV4w3YWJ(qX0n%rtV5XcH;!mZk&jAVj3Ea>CU-mG-fz6oe84pI7Kuar=sVma!wN+#}qUiUw6(zyKyBt z3$53fjsD@g&Rnz_KR_3vH5v<@8_{S~iALix(P&&D8jWv>M&l~cXk6`VMx*gP(P&&R z8jTx7qp=E({JirMSn>-F`+4$TL%;f}^D}zYCgcTBG4+X^jRN6usYXj{9BrT6PQmp?j0t)BOqkQh|Fj|9)E2;U1wi9d3X3 zc61#B+&lRnt@R!5Ag%8peds&fnpvF_?}(R6$>c3A8%b!DtC`i^hK4v!5`-;NE84OZWeofsRf{!cU@KZ;exD%Fjm z2e}D7$a=L(^dLWBxAAPXTJ#`4Ww-HT*@;uR)lx$|(f@hqG}t{2ZAJm+7hs=hq6O?G zTEK4bsAJHCXf2@Y9LN7i(FMAq3v{KnxYU;6RwI}ubtX;fOq$f0W2DaHOP$H5#>}MV zT*SYR^Ht|-m|6>X81-ZY=H>kRqPb%iOVJ4Sm73F+nsYU2{SN=W&Nck|P;+j?XBG9w zmHOjK{c)xKxKe*y>JNK#JAdY%hHh{ZY2D0!C_2Ii@vo&`6-d46CH1P8)T>@nuX3bb zQyJHSDmO=t!R$42C<815Whg}NOR7kcBDIn)DHH{bGy1-dDl_v6uVFt z@|+{7f$Wjz9*TZ3-PQWV4C>(!%;Q|vMEVuX$54i2(Lwg0u1?^pliic?IfZ&#PQ9JN{#IHmndMHU2P_iZWR^RP`dmbPp6(Qj zo>IBzvreyAw3S)z1+3F6MrS#Tt7fxSPq}mGF|*j$`$F!bwU|n@n5Ck{jOqH%c$fN* zsWqAzqS4Ht{;woGTCd42(eAbMpFec}51;GZAK|{iy}`+IZ**_OeUp0={y%Ylf_t^Q z27lTJ+_VwS;i3&aoHpWDgwZqV?>MFIZg(H<_guyx=w07;d|IMb z%)kxs+3)Vh9d{X#Xk9EO3RKs)fhDn{!I(WJC9eXZ^PYJqM7s5)$H@zjUCvpVQhY_ zy4E>{mhp#-@vl?Y^LFNs(8e9c-t0FJW|jI0?w_#}w5xuuevZE37THbw7wQ*Wd#k#Q z^)GATH(ye}L{m_xe#I`php1n(2k;^4E_MMvf_>e8gSj64K`(ZA|1J8hd*L>&x=-E5 zuCsqof581mqftPoP^j)#)O2=%|1QU13n0g%lr_e|gs%Ox?d8$sKp;6DPzY%ji+KEE-0(_^NYEXa22X4bv z|4{$H{f2tO`GVRG!#PClLgVJCM%9S_Tk0)xsR@SDO}(v}xz{^rG%^(XG3&iZ(QFK1 z-}?7hJN~|UAAkK8CVMlp!ZeHB?BkSO$XekcdfRta@VcI2k6M1t;a&`_M^7&eokz^e z@G{tQoj-2&u*Ka4{?xh(Y` z67%xVj2!A6f^H<{^+Y=|h<)_Ym3zI>kPPw;^A2+cc=<509_+5)mv{=i0(L?Ag7*b@ zSfN+QZjOh0hqE6_KeQ;B?7n{l*Y@}N<8!2UBry!|25{e_;B%Sm%s-H{4PsBoL%n0X zV|d16(YYMz4fci*<~Z~&hk8Y5UV3}QUNLtp@k*W1%qNuLKhzsa%){A7vZpt~8-aVI zH;Q*ejz>F_<(>GwTg>!EvtCwtW7uu7Cq49da_=PXBzz{oBQw2|J=Uvxr+Qx` zXHNG{=WGSsGUiP}i__n$^eQeaH7{}k^b?;&S`x5eAyOw^piIbCxOXBwPizjLe?_d;iwW**MT znt3>rHS=)B!922@Gh4 z`a37aj*K0Ndq8Xe?t!s^&hXgLv7?<4u|csxxQ~e)gZtRnVCQ)F%8AbS*yz}3XRKx| zOuoTdoT0FmuQ}PVugAXb9HY4l-#uXthmV-RU7S44U7U2yUFh+Z`@i(v-I%-4bC>DD zUDDwLgb?mBK)8!5tVN};78izJ%$1tgyTVai;V7{C@u{DySO#ScZK7-@RT3pUd2BLzP^^2Z)fgO2~$zR zR1`er&-iTO?+Qn8g`+6pD6VjnLxiIoA{@mPj*=@JC095~Zi1t{2QNusC+NT8d9FcmcFjMverGh#=p4pT{k zsql3QILZvnnXcBZYhL0BFG+)!%)vbuUV^qg!Am^hCA?1{+IP)MJmDptyFzsFm%Epf zsw?0qM+-;E6poUa!cn@yQLZD*|G`nZ3P;Hlj?z^)N~Um>uEJ4z2}kJ)N4b^ox1r;Y z>2VD1J6*mGBJ3n4>?9`aq?@plLBdYD2|I}iJLx6tq?@pl80oGzTEw{V)?eA|V$onSUO^o89lkLiQ^Fm)K* zC7=0;>=aIuox*7j6;9JfI8B~#nnP1K&7lcSGm0KG$!2_|+03!RW(tMP6bYM2hs|6= z5B&p0Jry3)Pk4+gJSIzc%n|BFc#Nx7qp|6ye#*GX6;6|*Zidsi!fE)*1)PTOT&P=} zDe5+uO_ng5Glbb>@r|0>;T*qGcN6{|W<+w;I`lRD)NkN7uJD^fgx}-{znQ9jr+$yW zW;uP;2DO3kNv@Nt{sh;_60T!dPL{BoBVakTT&4L$`d}6pTdW_L5E`WvT0r#J)C~0)$k!^fnY*0VM1xbg!&5;Iy8j| zr3n*a?`oLPkuV{{b$ZkH_kr=mgz+3Mj3-SPPrfjoOkq4-h4J(f#&fhVo|rJ6{}IM> zv@o9j!g%t8@uUgkIYt;yo-m$#7|&qtG6crcAI4LJTXUW1!gY>;>-aFLGPur>-Y{<% z?4jJ_TSLNo@`U#sDZD2`cux=EJ)ZEMG~qp-@SZ&3J>7)&c*1+q;5{d^)4Ab26HS)I#7ARxkN4N+e!atQUVNzd^NlO~zsFU3;(Ut+|6I(Tj-$_t$pBP`5i`%Y z({9y1X^f=YchWXsHh1#zDb;S}i~DQh?j~mU^b7Fsmd3ZTxazBfua__-+H@Pz>hbR( zA$z1fjypSDx3zhlbPD}WC79i{>F)I6xVvf7Z4mcnF?)!aE&f}?-CfMQv`h3=+T_04 z%oG1567pvHWS6y5nC?O`&lK}oF)tGHCt{8g^GY!nY14_T8q7i72Cn^!^@>zi-79HZr`@cM((zm`K5N8Wq5Wee67odx z(O;H!)wyCW5uYX64eRNL|CQPY4yMCAE@!t&oLh}sLKbNsw?smkn8!=Xi^S)89mbm= z;dhIBzJ6Z!Sn*jdK0~yd7KxCsSADNKF`v{i$L{rR=IkaNr@BC{y1<+j_mkQk%hm2! zuK3?7=2LR^DRKW^+&je7>t|iHK-^yy_j>K-9@_sI@vjy4MQQ~;7iqWm0}1m3<1cPU zB>Xw`CSjh}K52zIo$7fBe}kC+PiN->oKajeIS1J=kk^f>TlE()~kPn;&*GT zJdKs77_pINUS-_}RLcE|nXj#|Rxy=|8LjEu#_A^+*8c*v6~b#Ih45j;^b0vhDD0=0eww#@ zjk`+Xnu(fE4K;n6mx1}%NInN>S!yK~J6daYK>|Avp-;+5;jGYTIwb(%S4ky z`neLzrAkgrs?b>N;byS-O@Y2Kq5fY!c{hQOtFU*)5P08S9};)%-+x zUZn3WR#<~Hl`$3NL}|1|%wWZ2N0771LX*(Y0!?|jzGZ=iuGRkEEYPM2B*!W2VbLWF zADNvOE-tyJsytj?UQ|_}{-&9s^9J5I7^Xm7fny;4o8NwV@!=NgDi zGSiGT`DQYlw~}i2`b4|2c7eUzIMZ_LNs zCyB`^TFAAMtU%I`GYw?Ll*!5`-%hsEgR6^*%4_Vp5}-L*QdB*~G?$djsA_!;|*F_}q-7<-DRGW$2_4Nq5b#p?OJ{ zH7plcHEQUjq+26txV<@JvXk!k=ciiju#;?6e-CKj(a6K5lgM$rs3Qz6Mdx|iZVMTgv@I7RLz0qaffDZFUw3j~!euy;i zX5@iC4u%H90%m@!OEh1&QN9d4+EY(_uZ7b0q`X&>`(7$(6zZrv=cxFeOPlDBg0zVa z34WXCE^Q+n-;lXzdS^=OzEx@4e?w}mYo%iw=`Lv_UFSB^@$dSJmbP{Ny0wvxFY&Y~ zJ-*h{COXl(x20FfzYSW`g?=u5Q6OhT`UCX&GybxGwS?cwX+EK^IQ=4UE&s;}{iAZG zkS|us`KRB-UrRp@{X|Ah=;0k6K9a)v)(;HAj=8w#);p%aKQ?++3B1Yp!5)o@m#^F3 z%eumN&MRh4old;voNJ!$`}^r&A4R@UY45gG_%|ar>>l8))ITpQ=;|O+Nv}u{iy98jpG;Ui8NAD~7gl z-D6CeU@UW(+Y@6l74tqAU7Lax4Ds!o)a+4v)D`Oc(qrr%BrPw?E%+#2|rj?HMw1GZ=4c#4y-=TT+ysQAP$q0GSM=gy;fLZ&7(x5PAcXmD3vc%dH^sv$8|G4jsxi(bc-E`wSr zMH>1~IPb`h)KGV(IZRG8WJclH_ktZlN} z>~{N{-C=jyU9N{qbvtN{$4Pl9Dd(6mW}F#sCYY(_c5{ch+f2|s&+!|VbF`B_V`UwBq zvMcN=R-5Z=gDY^Q$mq6`o87J)ZRE@LpncOGvB&KD_Cx!bJ>>$IKnB;1JoZAK*2njB zo5}4>rsuz^$n*`&V)>I3Aw+Y9l!&~9v`F}8;~{rhW!85ZbrJe1=-?O`-SUl z|9pn$c(H&A{iOoKI)VHr0q8u~QuTEbh_*FEcg%V7fl2gDFkVC!=8p;Iwe|LC>7PD> zd$?k-5d$M({PRu17>Nh@C*W7uf{;$IAY3ah`^Wv)b*wM+eIEzuC} zBZYeA0^=JcM&R6k-Ph7maQp_p87?ll46$tzca6}KZf|&cRH_YjtNNrys5OF zPD_>$_iUOWT>WS0HTJVlyPguu^CwtIaK1Kj{L4t&&{CwR@?K^q?2iO{gJB$EJ+?p~ z=^Avf;(tW^;YdR$nmX}sQ&>R@ibYdn(7_LMCplubz3=K%ebT4-bmGA;L)NV9FFy`@ z*lJsiE-?%``Ad8k=(_pK{N?@%TB8SXzT6sM^&dwg*MQE5K7m%~G!q$?G3bG?hS5IK1&vNOY+5d7 zZb`)!#oH$s+0S4>u^<0B#`v??QE+00eUj1MWcS#Y@ju15--b=aEBJo}2iT5f#jE(& z!wa6nzT!3fzlJO9fUh0E-vEEuiLJ%!_@9PT?84%LeXD(l5xxP={JcdE7xZEL+>Azi zB=&eS>1~zR%F)}=A2*^a-iGG)I9k|`kbxMqqJ7YD_D8olg!;OGKVgZ{)2(w)I#y_$ zf&G7_%cwd#lF&9?#5TQ>hF14=l8V43)K1_sNol>&Ci{OSH!%=U+Tuv(EE^7z^j5s z+*k0UgliV)+tY`>_U!xImxNgvX@u?Oxq&qmCq$WBWvrVlU>$aCZ~}*&IOFkiiQ`U? zN(c7^&^vlG`2Q##D=qM!3Z8T^C-#=LjX`s?3z!9N2DfnRfE9WeE=p8 z8wm-+3b&8kbs<+T;$~r~C)~7)%W_XUG{o>Cp%NJIPy7&WCS?^EU}5wZ;&fupdRyIE zdraL2Ew%vQYwa6x_`5Owuj)QvkH*i3)vdMI5kP;x{acKGE5@_7RQ%u7t+Ut_@Vv|( zQTG9hEdtL=?ICrS*ng1sPW02C!YyTl*TR#hVyA#QePMr$nLDw zb$o_gnbMf$i8R)`zEn|KYMO43xBPtRbD6qPf_%IY9m S86)D8*4FkkST@TK!v6uBQ5o_8 literal 0 HcmV?d00001 diff --git a/apps/site/src/assets/fonts/Overpass-Bold.ttf b/apps/site/src/assets/fonts/Overpass-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a3b2b46e1b016c2881a38001510c221972f5904d GIT binary patch literal 169620 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

q;T_4$ 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 ao;Hs%*61Kl#<;%Z>$SV*={s$I1pHsB>M-2^ literal 0 HcmV?d00001 diff --git a/apps/site/src/assets/fonts/Overpass-SemiBold.ttf b/apps/site/src/assets/fonts/Overpass-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..71db7c5fb94cb93d372860daf61e854c6e0c52f0 GIT binary patch literal 169332 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 O0_^H}`c&H=5&suN_cS>G literal 0 HcmV?d00001 diff --git a/apps/site/src/components/AdConsent.astro b/apps/site/src/components/AdConsent.astro new file mode 100644 index 00000000..3de9a196 --- /dev/null +++ b/apps/site/src/components/AdConsent.astro @@ -0,0 +1,58 @@ +--- +import { site } from "~/lib/settings"; + +// Asks for consent, then loads Google Ads conversion tracking. Used only on +// the pages listed under adTracking in src/config/site.yaml. +const id = site.adTracking?.id; +--- + +{ + id && ( +

+ + ) +} diff --git a/apps/site/src/components/ArticleCard.astro b/apps/site/src/components/ArticleCard.astro new file mode 100644 index 00000000..1525c213 --- /dev/null +++ b/apps/site/src/components/ArticleCard.astro @@ -0,0 +1,48 @@ +--- +import { Icon } from "astro-icon/components"; +import { formatDate, listNames } from "~/lib/format"; +import type { Article } from "~/lib/types"; +import Picture from "./Picture.astro"; + +interface Props { + article: Article; + /** Leave out the small cover image */ + compact?: boolean; +} + +/* + * A journal article, made to look like a paper rather than a blog post: a + * blue running head with its type and date, then title, authors and + * abstract. The cover is only a small thumbnail. + */ +const { article, compact = false } = Astro.props; +const external = /^https?:/.test(article.url); +--- + + diff --git a/apps/site/src/components/Downloads.astro b/apps/site/src/components/Downloads.astro new file mode 100644 index 00000000..69dc17a7 --- /dev/null +++ b/apps/site/src/components/Downloads.astro @@ -0,0 +1,46 @@ +--- +import { Icon } from "astro-icon/components"; +import type { Download } from "~/lib/journal-article"; + +interface Props { + downloads: Download[]; + /** Which edge the formats menu lines up with */ + align?: "left" | "right"; + class?: string; +} + +/* The PDF as the main button, every other format in a menu next to it */ +const { downloads, align = "left", class: className } = Astro.props; +const pdf = downloads.find((d) => d.format === "pdf"); +const others = downloads.filter((d) => d !== pdf); +--- + +{ + downloads.length > 0 && ( +
+ {pdf && ( + + + )} + {others.length > 0 && ( +
+ + {pdf ? "More formats" : "Download"} + + +
+ )} +
+ ) +} diff --git a/apps/site/src/components/Footer.astro b/apps/site/src/components/Footer.astro new file mode 100644 index 00000000..77187d5e --- /dev/null +++ b/apps/site/src/components/Footer.astro @@ -0,0 +1,52 @@ +--- +import { navigation, site } from "~/lib/settings"; +import Logo from "./Logo.astro"; +import SocialIcon from "./SocialIcon.astro"; +--- + +
+
+
+ + + Center of
Trial & Error
+
+

{site.description}

+
    + { + navigation.socials.map((social) => ( +
  • + + + +
  • + )) + } +
+
+
+ { + navigation.footer.map((column) => ( +
+

{column.title}

+ +
+ )) + } +
+
+
+

+ © {new Date().getFullYear()} Stichting Center of Trial and Error. Content is CC BY 4.0 unless noted otherwise. + Source code. +

+
+
diff --git a/apps/site/src/components/Header.astro b/apps/site/src/components/Header.astro new file mode 100644 index 00000000..68667145 --- /dev/null +++ b/apps/site/src/components/Header.astro @@ -0,0 +1,110 @@ +--- +import { Icon } from "astro-icon/components"; +import { navigation } from "~/lib/settings"; +import Logo from "./Logo.astro"; + +const path = Astro.url.pathname; +const isCurrent = (url?: string) => !!url && url.startsWith("/") && url !== "/" && path.startsWith(url.split("#")[0]); +--- + +
+
+ + + + + + Center of
Trial & Error +
+
+ + +
+
diff --git a/apps/site/src/components/IssueCard.astro b/apps/site/src/components/IssueCard.astro new file mode 100644 index 00000000..d0f0f672 --- /dev/null +++ b/apps/site/src/components/IssueCard.astro @@ -0,0 +1,43 @@ +--- +import type { Issue } from "~/lib/sources/journal"; +import Picture from "./Picture.astro"; + +interface Props { + issue: Issue; + /** Where the issue's page is */ + href: string; +} + +/* + * An issue, drawn as its cover on a small stack of printed copies, with the + * title underneath like on a shelf. Rolling issues get a plain blue cover. + */ +const { issue, href } = Astro.props; +const count = `${issue.articles.length} ${issue.articles.length === 1 ? "article" : "articles"}`; +--- + +
+
+ { + issue.image ? ( + + ) : ( +

+ {issue.rolling ? "Rolling" : issue.title} + {issue.rolling && Articles as they're ready} +

+ ) + } + {issue.rolling && Ongoing} +
+
+

+ {issue.rolling ? "Ongoing" : issue.date.slice(0, 4)} · {count} +

+

+ + {issue.title} + +

+
+
diff --git a/apps/site/src/components/JournalNav.astro b/apps/site/src/components/JournalNav.astro new file mode 100644 index 00000000..3fab7eef --- /dev/null +++ b/apps/site/src/components/JournalNav.astro @@ -0,0 +1,89 @@ +--- +import { Icon } from "astro-icon/components"; +import { type Journal, journal as defaultJournal } from "~/lib/sources/journal"; + +/* + * The journal's own menu: a blue bar under the header on every /journal + * page. Its links are set in src/config/navigation.yaml (or /admin → Menus). + * Other journals bring their own links, see src/lib/sources/journal.ts. + */ + +interface Props { + journal?: Journal; +} + +const source = Astro.props.journal ?? defaultJournal(); +const { config } = source; +// Links to the journal's PubPub pages go to this site's copy once the export has it +const localize = async (url?: string) => (url ? source.localUrl(url) : url); +const menu = await Promise.all( + config.menu.map(async (item) => ({ + ...item, + url: await localize(item.url), + children: item.children && (await Promise.all(item.children.map(async (child) => ({ ...child, url: await localize(child.url) })))), + })), +); +const base = config.path; +const path = Astro.url.pathname.replace(/\/$/, "") || "/"; +// "Articles" (/journal) is current on the article list and its filters; other links on their own pages +const isCurrent = (url?: string) => { + if (!url?.startsWith("/")) return false; + if (url === base) return path === base || path.startsWith(`${base}/kind/`); + return path === url || (url === `${base}/issues` && path.startsWith(`${base}/issue/`)); +}; +const external = (url?: string) => !!url && /^https?:/.test(url); +--- + + + + diff --git a/apps/site/src/components/Logo.astro b/apps/site/src/components/Logo.astro new file mode 100644 index 00000000..d8f045f5 --- /dev/null +++ b/apps/site/src/components/Logo.astro @@ -0,0 +1,12 @@ +--- +interface Props { + class?: string; +} +const { class: className } = Astro.props; +--- + + diff --git a/apps/site/src/components/Markdown.astro b/apps/site/src/components/Markdown.astro new file mode 100644 index 00000000..f1d2827f --- /dev/null +++ b/apps/site/src/components/Markdown.astro @@ -0,0 +1,13 @@ +--- +import { marked } from "marked"; + +interface Props { + text: string; + class?: string; +} + +const { text, class: className } = Astro.props; +const html = await marked.parse(text); +--- + +
diff --git a/apps/site/src/components/Pagination.astro b/apps/site/src/components/Pagination.astro new file mode 100644 index 00000000..b0d9e342 --- /dev/null +++ b/apps/site/src/components/Pagination.astro @@ -0,0 +1,36 @@ +--- +interface Props { + current: number; + total: number; + /** URL of page n */ + href: (page: number) => string; +} + +const { current, total, href } = Astro.props; +--- + +{ + total > 1 && ( + + ) +} diff --git a/apps/site/src/components/PersonCard.astro b/apps/site/src/components/PersonCard.astro new file mode 100644 index 00000000..149fd9d1 --- /dev/null +++ b/apps/site/src/components/PersonCard.astro @@ -0,0 +1,69 @@ +--- +import { personHref } from "~/lib/people"; +import type { Person } from "~/lib/types"; +import Picture from "./Picture.astro"; +import SocialIcon from "./SocialIcon.astro"; + +interface Props { + person: Person; + /** Show the full bio rather than a short one */ + full?: boolean; + link?: boolean; +} + +const { person, full = false, link = true } = Astro.props; +const href = link ? await personHref(person, Astro.isPrerendered) : undefined; +const initials = person.name + .split(" ") + .map((part) => part[0]) + .slice(0, 2) + .join(""); +--- + +
+
+ { + person.image ? ( + + ) : ( + {initials} + ) + } +
+
+

+ {href ? {person.name} : person.name} +

+ {person.position &&

{person.position}

} + {person.summary &&
} +
    + { + person.orcid && ( +
  • + + + +
  • + ) + } + { + person.links.map((l) => ( +
  • + + + +
  • + )) + } + { + person.email && ( +
  • + + + +
  • + ) + } +
+
+
diff --git a/apps/site/src/components/Picture.astro b/apps/site/src/components/Picture.astro new file mode 100644 index 00000000..cf046ac8 --- /dev/null +++ b/apps/site/src/components/Picture.astro @@ -0,0 +1,41 @@ +--- +import { Image, inferRemoteSize } from "astro:assets"; +import { Icon } from "astro-icon/components"; +import type { Picture } from "~/lib/types"; + +interface Props { + image?: Picture; + /** Width to render at; the file is resized to this at build time */ + width: number; + class?: string; + eager?: boolean; + alt?: string; +} + +const { image, width, class: className, eager = false, alt } = Astro.props; +// Measure the image when its source didn't say how big it is, so it keeps its proportions +const size = image && !(image.width && image.height) ? await inferRemoteSize(image.url).catch(() => undefined) : image; +const height = size?.width && size?.height ? Math.round((size.height / size.width) * width) : undefined; +--- + +{ + image ? ( + height ? ( + {alt + ) : ( + {alt + ) + ) : ( +
+
+ ) +} diff --git a/apps/site/src/components/PostCard.astro b/apps/site/src/components/PostCard.astro new file mode 100644 index 00000000..3a6c8865 --- /dev/null +++ b/apps/site/src/components/PostCard.astro @@ -0,0 +1,34 @@ +--- +import { Icon } from "astro-icon/components"; +import { formatDate, listNames } from "~/lib/format"; +import type { Post } from "~/lib/types"; +import Picture from "./Picture.astro"; + +interface Props { + post: Post; + /** Big horizontal card for the top post */ + wide?: boolean; + eager?: boolean; +} + +const { post, wide = false, eager = false } = Astro.props; +const href = `/blog/${post.slug}`; +--- + +
+
+ + {post.category && {post.category.title}} +
+
+ +

+ {post.title} +

+ {post.authors.length > 0 &&

By {listNames(post.authors.map((a) => a.name))}

} + {post.excerpt &&

{post.excerpt}

} + + Read +
+
diff --git a/apps/site/src/components/PostList.astro b/apps/site/src/components/PostList.astro new file mode 100644 index 00000000..512f8e7c --- /dev/null +++ b/apps/site/src/components/PostList.astro @@ -0,0 +1,18 @@ +--- +import type { Post } from "~/lib/types"; +import PostCard from "./PostCard.astro"; + +interface Props { + posts: Post[]; + /** Show the first post as a wide card */ + featureFirst?: boolean; +} + +const { posts, featureFirst = false } = Astro.props; +const [first, ...rest] = posts; +--- + +{featureFirst && first && } +
+ {(featureFirst ? rest : posts).map((post) => )} +
diff --git a/apps/site/src/components/Sections.astro b/apps/site/src/components/Sections.astro new file mode 100644 index 00000000..67fc96a2 --- /dev/null +++ b/apps/site/src/components/Sections.astro @@ -0,0 +1,37 @@ +--- +import type { Section } from "~/content.config"; +import Buttons from "./sections/Buttons.astro"; +import Features from "./sections/Features.astro"; +import Hero from "./sections/Hero.astro"; +import LatestArticles from "./sections/LatestArticles.astro"; +import LatestPosts from "./sections/LatestPosts.astro"; +import Newsletter from "./sections/Newsletter.astro"; +import Team from "./sections/Team.astro"; +import Text from "./sections/Text.astro"; + +interface Props { + sections: Section[]; +} + +// To add a section type: make a component in ./sections, add it here, +// and describe its fields in src/content.config.ts and src/admin/config.yml +const components = { + hero: Hero, + text: Text, + features: Features, + "latest-posts": LatestPosts, + "latest-articles": LatestArticles, + team: Team, + newsletter: Newsletter, + buttons: Buttons, +} satisfies Record; + +const { sections } = Astro.props; +--- + +{ + sections.map((section) => { + const Component = components[section.type] as any; + return ; + }) +} diff --git a/apps/site/src/components/SocialIcon.astro b/apps/site/src/components/SocialIcon.astro new file mode 100644 index 00000000..f6e223bc --- /dev/null +++ b/apps/site/src/components/SocialIcon.astro @@ -0,0 +1,28 @@ +--- +import { Icon } from "astro-icon/components"; + +interface Props { + icon: string; + class?: string; +} + +// Maps the names used in navigation.yaml and on people to icon sets +const names: Record = { + bluesky: "simple-icons:bluesky", + github: "simple-icons:github", + mastodon: "simple-icons:mastodon", + linkedin: "simple-icons:linkedin", + instagram: "simple-icons:instagram", + facebook: "simple-icons:facebook", + twitter: "simple-icons:x", + orcid: "simple-icons:orcid", + substack: "simple-icons:substack", + email: "lucide:mail", + rss: "lucide:rss", + website: "lucide:globe", +}; + +const { icon, class: className = "size-5" } = Astro.props; +--- + +