authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-09-01 13:22:06-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-10-14 02:40:46-07:00
logb0e85067049af72206d83b1abf8763a8cd510d18
tree437ac8d369575347ace711f3ba262a5bf6b8d60f
parent631b7fa34235a123ba395d09d626fd5d4333cf6b
signature Commit is signed but in an unrecognized format.

chore: run formatter


10 files changed, 54 insertions(+), 45 deletions(-)

flake.nix+29-26
......@@ -3,31 +3,34 @@
33 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
44 utils.url = "github:numtide/flake-utils";
55 };
6 outputs = inputs: inputs.utils.lib.eachDefaultSystem (system:
7 with inputs.nixpkgs.legacyPackages.${system}; {
8 devShells.default = pkgs.mkShell {
9 buildInputs = [
10 # clover sitegen v3
11 pkgs.nodejs_24 # runtime
12 pkgs.deno # formatter
13 pkgs.python3 # for font subsetting
6 outputs =
7 inputs:
8 inputs.utils.lib.eachDefaultSystem (
9 system: with inputs.nixpkgs.legacyPackages.${system}; {
10 devShells.default = pkgs.mkShell {
11 buildInputs = [
12 # clover sitegen v3
13 pkgs.nodejs_24 # runtime
14 pkgs.deno # formatter
15 pkgs.python3 # for font subsetting
1416
15 # paperclover.net
16 (pkgs.ffmpeg.override {
17 withOpus = true;
18 withSvtav1 = true;
19 withJxl = true;
20 withWebp = true;
21 })
22 pkgs.rsync
23 ];
24 };
25 devShells.min = pkgs.mkShell {
26 buildInputs = [
27 pkgs.nodejs_24 # runtime
28 pkgs.deno # formatter
29 pkgs.rsync
30 ];
31 };
32 });
17 # paperclover.net
18 (pkgs.ffmpeg.override {
19 withOpus = true;
20 withSvtav1 = true;
21 withJxl = true;
22 withWebp = true;
23 })
24 pkgs.rsync
25 ];
26 };
27 devShells.min = pkgs.mkShell {
28 buildInputs = [
29 pkgs.nodejs_24 # runtime
30 pkgs.deno # formatter
31 pkgs.rsync
32 ];
33 };
34 }
35 );
3336}
framework/bundle.ts+1-1
......@@ -178,7 +178,7 @@ export async function bundleServerJavaScript({
178178 `export const metaTemplate = {`,
179179 ` base: new URL(${JSON.stringify(metaTemplate.base)}),`,
180180 ...Object.entries(metaTemplate)
181 .filter(([k]) => k !== 'base')
181 .filter(([k]) => k !== "base")
182182 .map(([k, v]) => ` ${JSON.stringify(k)}: ${JSON.stringify(v)},`),
183183 `};`,
184184 ].join("\n"),
framework/generate.ts+6-4
......@@ -237,10 +237,12 @@ export async function preparePage(
237237 // -- metadata --
238238 const renderedMetaPromise = Promise.resolve(
239239 typeof metadata === "function" ? metadata({ ssr: true }) : metadata,
240 ).then((m) => meta.render({
241 canonical: item.id,
242 ...m,
243 }, metaTemplate));
240 ).then((m) =>
241 meta.render({
242 canonical: item.id,
243 ...m,
244 }, metaTemplate)
245 );
244246
245247 // -- html --
246248 let page = render.element(Page);
framework/lib/assets.ts+5-5
......@@ -82,7 +82,7 @@ export async function serveAsset(
8282 c: Context,
8383 id: Key,
8484 status: StatusCode = 200,
85 cache: CacheMode = 'auto',
85 cache: CacheMode = "auto",
8686) {
8787 return assetInner(
8888 c,
......@@ -177,11 +177,11 @@ function respondWithBufferAndViews(
177177 if (!Object.keys(headers).some((x) => x.toLowerCase() === "cache-control")) {
178178 if (cache === "auto") {
179179 if (status < 200 || status >= 300) {
180 cache = 'no-cache';
181 } else if (headers['content-type']?.includes('text/html')) {
182 cache = 'temporary';
180 cache = "no-cache";
181 } else if (headers["content-type"]?.includes("text/html")) {
182 cache = "temporary";
183183 } else {
184 cache = 'long-term';
184 cache = "long-term";
185185 }
186186 }
187187 if (cache === "no-cache") {
framework/lib/sitegen.ts+1-1
......@@ -48,7 +48,7 @@ export interface Font {
4848}
4949export type FontVars = Record<string, FontVariableAxis>;
5050export type FontVariableAxis = number | [min: number, max: number];
51export type FontRange = string | number | { start: number, end: number };
51export type FontRange = string | number | { start: number; end: number };
5252
5353export const userData = render.userData<SitegenRender>(() => {
5454 throw new Error("This function can only be used in a page (static or view)");
framework/lib/subprocess.ts+2-2
......@@ -11,5 +11,5 @@ export const exec: typeof execFileRaw = ((
1111 throw e;
1212 })) as any;
1313
14import * as util from 'node:util';
15import * as child_process from 'node:child_process';
14import * as util from "node:util";
15import * as child_process from "node:child_process";
framework/watch.ts+1-1
......@@ -25,7 +25,7 @@ function serve() {
2525 "--development",
2626 ], {
2727 stdio: "inherit",
28 execArgv: ['--no-warnings'],
28 execArgv: ["--no-warnings"],
2929 });
3030 subprocess.on("close", onSubprocessClose);
3131}
readme.md+2-1
......@@ -12,7 +12,8 @@ that assist building websites. these tools power <https://paperclover.net>.
1212 components, `<Suspense />`, and custom extensions.
1313- **Incremental static site generator and build system.**
1414 - Build both development and production sites on startup start. Incremental
15 generator rebuilds changed pages; Build system state survives coding sessions.
15 generator rebuilds changed pages; Build system state survives coding
16 sessions.
1617 - Multiple backend support.
1718 - (TODO) Tests, Lints, and Type-checking is run alongside, and only re-runs
1819 checks when the files change. For example, changing a component re-tests
run.js+3-3
......@@ -27,8 +27,8 @@ try {
2727 const brand = process.versions.bun
2828 ? `bun ${process.versions.bun}`
2929 : process.versions.deno
30 ? `deno ${process.versions.deno}`
31 : null;
30 ? `deno ${process.versions.deno}`
31 : null;
3232 const brandText = brand ? ` (${brand})` : "";
3333 globalThis.console.error(
3434 `sitegen depends on a node.js v24. your runtime is missing features.\n` +
......@@ -91,7 +91,7 @@ if (process.argv[1].startsWith(import.meta.filename.slice(0, -".js".length))) {
9191 );
9292 } else {
9393 console.warn(
94 hot.load("path").relative('.', found),
94 hot.load("path").relative(".", found),
9595 'does not export a "main" function',
9696 );
9797 }
src/site.ts+4-1
......@@ -92,7 +92,10 @@ export const fonts: sg.Font[] = [
9292 name: "AT Name Sans Display Hairline",
9393 sources: [
9494 "ATNameSansDisplay-Hairline.woff2",
95 path.join(fontRoot, "/ArrowType/AT Name Sans Display/ATNameSansDisplay-Hairline.woff2"),
95 path.join(
96 fontRoot,
97 "/ArrowType/AT Name Sans Display/ATNameSansDisplay-Hairline.woff2",
98 ),
9699 ],
97100 subsets: [
98101 {