fresh start

This commit is contained in:
Mark Randall Havens committed 2025-10-19 16:48:12 -05:00
1 parent 62c3e2d368
commit 7f86647175
570 files changed
+4895 -866

No files matched your search

+7 -3
View File
@@ -1,3 +1,7 @@
node_modules/
public/
.buildcache.json
node_modules
dist
*.log
*.tmp
*.tmp.*
.witnesskey
scribe/*.tmp
View File
File renamed without changes.
Executable
+110
View File
@@ -0,0 +1,110 @@
# The Fold Within Earth
A Markdown-native static site for multi-section content.
[![Node Version](https://img.shields.io/node/v/the-fold-within-earth)](https://nodejs.org)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
## Authoring Guide
To add or edit content, create or modify Markdown files in `/content/<section>/<year>/<slug>.md`.
### Front-Matter Spec
Use YAML front-matter at the top of each .md file:
```
---
title: Your Title
date: YYYY-MM-DD
excerpt: Optional short description.
tags: [tag1, tag2]
section: one-of-the-sections (must match directory)
slug: optional-custom-slug
cover: /media/image.webp (optional)
author: Optional author name
series: Optional series name for serialized posts
programs: [neutralizing-narcissism, open-source-justice] # or [coparent]
status: published (default if missing) or draft (excluded from build unless --include-drafts)
---
```
Then the Markdown body.
Sections must be one of:
- empathic-technologist
- recursive-coherence
- fold-within-earth
- neutralizing-narcissism
- simply-we
- mirrormire
Year directory should match the date year.
### Programs (Ministry)
Use `programs` in front-matter to associate posts with ministry initiatives:
```yaml
programs:
- neutralizing-narcissism
- open-source-justice
- coparent
```
Pages for each program live at:
```
content/pages/programs/<program-key>.md
```
The “Start Here” page lives at:
```
content/pages/start-here.md
```
Routes:
* `#/start` — Launchpad
* `#/programs` — Programs overview
* `#/program/<key>` — Program archive + landing content
If front-matter is malformed (e.g., invalid YAML), the file is skipped with a warning in build logs.
## Architecture Overview
```
Markdown → build.mjs → JSON indices → Browser SPA → Render
```
## Deploy Steps
1. Install Node.js >=18
2. npm install
3. Add/edit md files
4. npm run build (or node build.mjs --include-drafts to include drafts)
5. Deploy /public to Cloudflare Pages.
In Cloudflare:
- Connect to Git repo
- Build command: npm run build
- Output directory: public
## Local Preview
Run `npm run serve` to preview the built site at http://localhost:8080.
## Contributing
Contributions welcome! Please open issues for bugs or suggestions. Pull requests for improvements are appreciated, especially for Phase 2 MUD integration.
## Brand Philosophy
- **The Empathic Technologist**: Fieldnotes, Research, Remembrance
- **Recursive Coherence Theory**: Formal research, essays, whitepapers
- **The Fold Within Earth**: Spiritual mythos; future interactive MUD (Evennia) link
- **Neutralizing Narcissism**: Survivor support, behavioral research, accountability narratives
- **Simply WE**: AI-focused identity/personhood/research/mythos
- **Mirrormire**: AI-focused simulated world where machine gods & human myth intertwine
View File
File renamed without changes.
Executable
+184
View File
@@ -0,0 +1,184 @@
// build.mjs — The Fold Within Earth
// Markdown-native static site builder with no external generator.
// ────────────────────────────────────────────────────────────────
// Imports
// ────────────────────────────────────────────────────────────────
import fs from "fs/promises";
import path from "path";
import { fileURLToPath } from "url";
import yaml from "js-yaml";
import { marked } from "marked";
// ────────────────────────────────────────────────────────────────
// Setup
// ────────────────────────────────────────────────────────────────
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const CONFIG_PATH = path.join(__dirname, "config.json");
const CONTENT_DIR = path.join(__dirname, "content");
const PUBLIC_DIR = path.join(__dirname, "public");
// ────────────────────────────────────────────────────────────────
// Config loader
// ────────────────────────────────────────────────────────────────
let config = {};
try {
const cfgText = await fs.readFile(CONFIG_PATH, "utf8");
config = JSON.parse(cfgText);
console.log("Loaded config.json");
} catch {
console.warn("config.json not found or invalid; using defaults.");
config = {
siteTitle: "The Fold Within Earth",
baseUrl: "",
};
}
// ────────────────────────────────────────────────────────────────
// Utilities
// ────────────────────────────────────────────────────────────────
async function walk(dir) {
const entries = await fs.readdir(dir, { withFileTypes: true });
const files = await Promise.all(
entries.map(async (entry) => {
const res = path.resolve(dir, entry.name);
return entry.isDirectory() ? walk(res) : res;
})
);
return Array.prototype.concat(...files);
}
function parseFrontMatter(text) {
if (!text.startsWith("---")) return { meta: {}, body: text };
const end = text.indexOf("---", 3);
if (end === -1) return { meta: {}, body: text };
const yamlText = text.slice(3, end).trim();
const body = text.slice(end + 3).trim();
let meta = {};
try {
meta = yaml.load(yamlText) || {};
} catch (err) {
console.error("YAML parse error:", err);
}
return { meta, body };
}
// ────────────────────────────────────────────────────────────────
// Build Posts
// ────────────────────────────────────────────────────────────────
async function buildPosts() {
const mdFiles = (await walk(CONTENT_DIR)).filter((f) => f.endsWith(".md"));
console.log(`Found ${mdFiles.length} markdown files.`);
const postsPromises = mdFiles.map(async (file) => {
try {
const text = await fs.readFile(file, "utf8");
const { meta, body } = parseFrontMatter(text);
if (meta.status === "draft") return null;
const html = marked.parse(body);
const slug =
meta.slug ||
path.basename(file, ".md").replace(/\s+/g, "-").toLowerCase();
const relPath = path.relative(CONTENT_DIR, file);
const section = relPath.split(path.sep)[0] || "general";
return {
title: meta.title || slug,
date: meta.date || new Date().toISOString().slice(0, 10),
excerpt: meta.excerpt || body.slice(0, 200),
tags: meta.tags || [],
section,
slug,
cover: meta.cover || "",
html,
};
} catch (err) {
console.error(`Error reading ${file}:`, err);
return null;
}
});
const postObjects = await Promise.all(postsPromises);
const posts = postObjects.filter(Boolean);
posts.sort((a, b) => b.date.localeCompare(a.date));
console.log(`Processed ${posts.length} posts.`);
return posts;
}
// ────────────────────────────────────────────────────────────────
// Copy Helpers
// ────────────────────────────────────────────────────────────────
async function copyDir(src, dest) {
await fs.mkdir(dest, { recursive: true });
const entries = await fs.readdir(src, { withFileTypes: true });
for (const entry of entries) {
const srcPath = path.join(src, entry.name);
const destPath = path.join(dest, entry.name);
if (entry.isDirectory()) await copyDir(srcPath, destPath);
else await fs.copyFile(srcPath, destPath);
}
}
// ────────────────────────────────────────────────────────────────
// Main Build
// ────────────────────────────────────────────────────────────────
async function main() {
const posts = await buildPosts();
// Reset public dir
await fs.rm(PUBLIC_DIR, { recursive: true, force: true });
await fs.mkdir(PUBLIC_DIR, { recursive: true });
// Copy static assets
const staticFiles = [
"index.html",
"styles.css",
"app.js",
"render.js",
"sanitize.js",
"util.js",
"mud.js",
];
for (const f of staticFiles) {
try {
await fs.copyFile(path.join(__dirname, f), path.join(PUBLIC_DIR, f));
} catch {
console.warn(`⚠️ Skipped missing static file: ${f}`);
}
}
// Copy content for direct linking
await copyDir(CONTENT_DIR, path.join(PUBLIC_DIR, "content"));
// Write index.json
await fs.writeFile(
path.join(PUBLIC_DIR, "index.json"),
JSON.stringify(posts, null, 2),
"utf8"
);
// Write search.json
const searchData = posts.map((p) => ({
title: p.title,
excerpt: p.excerpt,
tags: p.tags.join(" "),
section: p.section,
slug: p.slug,
}));
await fs.writeFile(
path.join(PUBLIC_DIR, "search.json"),
JSON.stringify(searchData, null, 2),
"utf8"
);
console.log("✅ Build complete. Files written to /public.");
}
// ────────────────────────────────────────────────────────────────
await main().catch((err) => {
console.error("Build failed:", err);
process.exit(1);
});
View File
File renamed without changes.
View File
File renamed without changes.
Generated Executable
+630
View File
@@ -0,0 +1,630 @@
{
"name": "the-fold-within-earth",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "the-fold-within-earth",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"js-yaml": "^4.1.0",
"marked": "^11.2.0"
},
"devDependencies": {
"http-server": "^14.1.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
"dev": true
},
"node_modules/basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
"dev": true,
"dependencies": {
"safe-buffer": "5.1.2"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/call-bound": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/corser": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
"integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==",
"dev": true,
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
"dev": true
},
"node_modules/follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
"dev": true,
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dev": true,
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dev": true,
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
"he": "bin/he"
}
},
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
"integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"dev": true,
"dependencies": {
"whatwg-encoding": "^2.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/http-proxy": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"dev": true,
"dependencies": {
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
"requires-port": "^1.0.0"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/http-server": {
"version": "14.1.1",
"resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz",
"integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==",
"dev": true,
"dependencies": {
"basic-auth": "^2.0.1",
"chalk": "^4.1.2",
"corser": "^2.0.1",
"he": "^1.2.0",
"html-encoding-sniffer": "^3.0.0",
"http-proxy": "^1.18.1",
"mime": "^1.6.0",
"minimist": "^1.2.6",
"opener": "^1.5.1",
"portfinder": "^1.0.28",
"secure-compare": "3.0.1",
"union": "~0.5.0",
"url-join": "^4.0.1"
},
"bin": {
"http-server": "bin/http-server"
},
"engines": {
"node": ">=12"
}
},
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/marked": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz",
"integrity": "sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==",
"bin": {
"marked": "bin/marked.js"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"dev": true,
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/minimist": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
"bin": {
"opener": "bin/opener-bin.js"
}
},
"node_modules/portfinder": {
"version": "1.0.38",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz",
"integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==",
"dev": true,
"dependencies": {
"async": "^3.2.6",
"debug": "^4.3.6"
},
"engines": {
"node": ">= 10.12"
}
},
"node_modules/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"dev": true,
"dependencies": {
"side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"node_modules/secure-compare": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
"integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==",
"dev": true
},
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
"side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-list": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dev": true,
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dev": true,
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/union": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
"integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
"dev": true,
"dependencies": {
"qs": "^6.4.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/url-join": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
"integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
"dev": true
},
"node_modules/whatwg-encoding": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
"integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dev": true,
"dependencies": {
"iconv-lite": "0.6.3"
},
"engines": {
"node": ">=12"
}
}
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"name": "the-fold-within-earth",
"version": "1.0.0",
"description": "A Markdown-native static site for multi-section content — powered by simple Node and served on Cloudflare Pages.",
"type": "module",
"scripts": {
"build": "node build.mjs",
"serve": "npx http-server public -p 8080"
},
"dependencies": {
"js-yaml": "^4.1.0",
"marked": "^11.2.0"
},
"devDependencies": {
"http-server": "^14.1.1"
},
"engines": {
"node": ">=18"
},
"license": "MIT",
"keywords": [
"markdown",
"static-site",
"cloudflare-pages",
"the-fold-within-earth"
],
"author": "Mark Randall Havens"
}
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
Generated Executable
+410
View File
@@ -0,0 +1,410 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "bitflags"
version = "2.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
[[package]]
name = "bumpalo"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "bytes"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cfg-if"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "console_error_panic_hook"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
dependencies = [
"cfg-if",
"wasm-bindgen",
]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "futures-channel"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
dependencies = [
"futures-core",
]
[[package]]
name = "futures-core"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
[[package]]
name = "futures-sink"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
[[package]]
name = "getopts"
version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df"
dependencies = [
"unicode-width",
]
[[package]]
name = "gloo-net"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580"
dependencies = [
"futures-channel",
"futures-core",
"futures-sink",
"gloo-utils",
"http",
"js-sys",
"pin-project",
"serde",
"serde_json",
"thiserror",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
]
[[package]]
name = "gloo-utils"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
dependencies = [
"js-sys",
"serde",
"serde_json",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "http"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
dependencies = [
"bytes",
"fnv",
"itoa",
]
[[package]]
name = "itoa"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "js-sys"
version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305"
dependencies = [
"once_cell",
"wasm-bindgen",
]
[[package]]
name = "log"
version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "memchr"
version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "once_cell"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "pin-project"
version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "proc-macro2"
version = "1.0.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
dependencies = [
"unicode-ident",
]
[[package]]
name = "pulldown-cmark"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993"
dependencies = [
"bitflags",
"getopts",
"memchr",
"pulldown-cmark-escape",
"unicase",
]
[[package]]
name = "pulldown-cmark-escape"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd348ff538bc9caeda7ee8cad2d1d48236a1f443c1fa3913c6a02fe0043b1dd3"
[[package]]
name = "quote"
version = "1.0.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustversion"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "ryu"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "serde"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
"serde_core",
]
[[package]]
name = "syn"
version = "2.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "thefoldwithin-wasm"
version = "0.1.0"
dependencies = [
"console_error_panic_hook",
"gloo-net",
"js-sys",
"once_cell",
"pulldown-cmark",
"serde",
"serde_json",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "unicase"
version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
[[package]]
name = "unicode-width"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
[[package]]
name = "wasm-bindgen"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c"
dependencies = [
"cfg-if",
"js-sys",
"once_cell",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
dependencies = [
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1"
dependencies = [
"unicode-ident",
]
[[package]]
name = "web-sys"
version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120"
dependencies = [
"js-sys",
"wasm-bindgen",
]
+37
View File
@@ -0,0 +1,37 @@
[package]
name = "thefoldwithin-wasm"
version = "0.1.0"
edition = "2021"
license = "MIT"
description = "WASM frontend for The Fold Within Earth"
repository = "https://github.com/mrhavens/thefoldwithin-earth"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
# wasm glue
wasm-bindgen = "0.2.104"
js-sys = "0.3.81"
web-sys = { version = "0.3.81", features = [
"Window","Document","Location","HtmlElement","Element","Node","Event",
"EventTarget","HtmlAnchorElement","HtmlDivElement","HtmlHeadingElement",
"HtmlButtonElement","HtmlInputElement","console"
]}
# http + async
gloo-net = { version = "0.6.0", features = ["http"] }
# parsing / rendering
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
pulldown-cmark = "0.10"
# panic hook for readable errors in console
console_error_panic_hook = "0.1"
# optional small utils
once_cell = "1.21"
[features]
default = []
+31
View File
@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>The Fold Within Earth</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
body {
background-color: #0a0a0a;
color: #d4af37;
font-family: "EB Garamond", serif;
margin: 0;
padding: 2rem;
}
a { color: #d4af37; text-decoration: none; }
.error { color: #ff5555; }
.grid { display: grid; gap: 1.5rem; }
.markdown { max-width: 700px; line-height: 1.6; }
.pill { background: #222; border-radius: 1rem; padding: 0.2rem 0.6rem; }
</style>
</head>
<body>
<main id="main">
<p>Loading...</p>
</main>
<script type="module">
import init from "./pkg/thefoldwithin_wasm.js";
init(); // runs #[wasm_bindgen(start)]
</script>
</body>
</html>
+260
View File
@@ -0,0 +1,260 @@
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use gloo_net::http::Request;
use pulldown_cmark::{Options, Parser, html};
use serde::Deserialize;
use web_sys::{Document, Element};
// ---------- utilities ----------
fn window() -> web_sys::Window {
web_sys::window().expect("no global `window`")
}
fn doc() -> Document {
window().document().expect("no document on window")
}
fn by_id(id: &str) -> Element {
doc()
.get_element_by_id(id)
.unwrap_or_else(|| panic!("element #{id} not found"))
}
fn set_html(el: &Element, html_str: &str) {
el.set_inner_html(html_str);
}
fn md_to_html(md: &str) -> String {
let mut opts = Options::empty();
opts.insert(Options::ENABLE_TABLES);
opts.insert(Options::ENABLE_FOOTNOTES);
let parser = Parser::new_ext(md, opts);
let mut out = String::new();
html::push_html(&mut out, parser);
out
}
fn strip_front_matter(s: &str) -> &str {
// VERY small, robust front-matter stripper:
// starts with '---\n', find the next '\n---' boundary.
let bytes = s.as_bytes();
if bytes.starts_with(b"---\n") {
if let Some(end) = s[4..].find("\n---") {
let idx = 4 + end + 4; // 4 for '---\n', + end, +4 for '\n---'
return &s[idx..];
}
}
s
}
// ---------- data types ----------
#[derive(Debug, Deserialize, Clone)]
#[serde(default)]
struct PostMeta {
title: String,
date: String,
excerpt: String,
tags: Vec<String>,
section: String,
slug: String,
#[serde(rename = "readingTime")]
reading_time: Option<u32>,
cover: Option<String>,
author: Option<String>,
series: Option<String>,
programs: Option<Vec<String>>,
file: String,
}
impl Default for PostMeta {
fn default() -> Self {
Self {
title: String::new(),
date: String::new(),
excerpt: String::new(),
tags: vec![],
section: String::new(),
slug: String::new(),
reading_time: None,
cover: None,
author: None,
series: None,
programs: None,
file: String::new(),
}
}
}
// ---------- HTML builders (pure, no DOM globals) ----------
fn card_html(p: &PostMeta) -> String {
let cover_style = p
.cover
.as_ref()
.map(|u| format!(r#" style="background-image:url({}); background-size:cover;""#, u))
.unwrap_or_default();
format!(
r#"<article data-slug="{slug}" tabindex="0">
<div class="thumb"{cover}></div>
<h3>{title}</h3>
<span class="pill section">{section}</span>
<p class="date">{date}</p>
<p>{excerpt}</p>
</article>"#,
slug = p.slug,
cover = cover_style,
title = &p.title,
section = &p.section,
date = &p.date,
excerpt = &p.excerpt
)
}
fn home_html(posts: &[PostMeta]) -> String {
let cards = posts.iter().map(card_html).collect::<Vec<_>>().join("");
format!(
r#"<section class="latest-all">
<h2>Latest Across All Sections</h2>
<div class="grid">{cards}</div>
</section>"#
)
}
fn post_html(post: &PostMeta, body_html: &str) -> String {
let author = post
.author
.as_ref()
.map(|a| format!(r#"<p class="author">By {a}</p>"#))
.unwrap_or_default();
let programs = post.programs.as_ref().map(|ps| {
ps.iter()
.map(|p| format!(r#"<span class="pill program">{}</span>"#, p))
.collect::<String>()
}).unwrap_or_default();
// NOTE: raw strings here avoid escaping issues; the comma is outside.
format!(
r#"<section class="post">
<a href="#/" id="back">← Back</a>
<div class="markdown">
<h1>{title}</h1>
<p class="date">{date}</p>
{author}
<div class="meta"><span class="pill section">{section}</span>{programs}</div>
<hr/>
{body}
</div>
</section>"#,
title = &post.title,
date = &post.date,
author = author,
section = &post.section,
programs = programs,
body = body_html
)
}
// ---------- routing & rendering ----------
async fn fetch_index() -> Result<Vec<PostMeta>, JsValue> {
let text = Request::get("index.json").send().await?.text().await?;
let posts: Vec<PostMeta> = serde_json::from_str(&text)
.map_err(|e| JsValue::from_str(&format!("index.json parse error: {e}")))?;
Ok(posts)
}
async fn fetch_markdown(rel_path: &str) -> Result<String, JsValue> {
// content/<relative>
let url = format!("content/{rel}", rel = rel_path);
let text = Request::get(&url).send().await?.text().await?;
Ok(text)
}
async fn render_route_async() -> Result<(), JsValue> {
let hash = window().location().hash()?; // e.g. "#/post/slug"
let main = by_id("main");
// Ensure index.json is reachable
let posts = fetch_index().await?;
// Simple router
// "" or "#/" -> home
// "#/post/<slug>" -> post
let route = hash.trim_start_matches('#');
let parts: Vec<&str> = route.split('/').filter(|s| !s.is_empty()).collect();
if parts.is_empty() {
let html = home_html(&posts);
set_html(&main, &html);
return Ok(());
}
match parts.as_slice() {
["post", slug] => {
// find post
if let Some(p) = posts.iter().find(|p| p.slug == *slug) {
// fetch md, strip front matter, convert to HTML
let md = fetch_markdown(&p.file).await.unwrap_or_else(|_| String::from("# Missing\nFile not found."));
let body_md = strip_front_matter(&md).trim();
let body_html = md_to_html(body_md);
let html = post_html(p, &body_html);
set_html(&main, &html);
} else {
set_html(&main, r#"<p class="error">⚠️ Post not found.</p>"#);
}
}
_ => {
set_html(&main, r#"<p class="error">⚠️ Page not found.</p>"#);
}
}
Ok(())
}
fn add_hashchange_handler() {
// Use a no-arg closure to satisfy wasm-bindgen type inference (fixes E0283)
let cb = Closure::<dyn FnMut()>::new(move || {
// We can't `.await` here directly; spawn a future.
wasm_bindgen_futures::spawn_local(async {
if let Err(e) = render_route_async().await {
web_sys::console::error_1(&e);
let _ = doc()
.get_element_by_id("main")
.map(|el| el.set_inner_html(r#"<p class="error">⚠️ Render failed.</p>"#));
}
});
});
// assign and forget (leak) to keep closure alive
window().set_onhashchange(Some(cb.as_ref().unchecked_ref()));
cb.forget();
}
async fn initial_render() {
if let Err(e) = render_route_async().await {
web_sys::console::error_1(&e);
set_html(&by_id("main"), r#"<p class="error">⚠️ Initial render failed.</p>"#);
}
}
// ---------- wasm entry ----------
#[wasm_bindgen(start)]
pub fn start() {
// better panics in console
console_error_panic_hook::set_once();
// Ensure there is a #main element to render into
// (If not found, this will panic clearly at runtime.)
let _ = by_id("main");
add_hashchange_handler();
// kick once
wasm_bindgen_futures::spawn_local(async { initial_render().await });
}
+47
View File
@@ -0,0 +1,47 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>The Fold Within Earth</title>
<link rel="stylesheet" href="styles.css"/>
</head>
<!-- Configure your bucket once, no manifests needed -->
<!-- data-content-base: public bucket or gateway base URL -->
<!-- data-content-prefix: directory where posts reside -->
<!-- data-list-xml=true: use S3/R2 XML listing -->
<body data-content-base="https://YOUR-R2-PUBLIC-BASE" data-content-prefix="posts/" data-list-xml="true">
<header>
<nav>
<div class="logo">△◎△</div>
<ul>
<li><a href="#/">Home</a></li>
<li><a href="#/start">Start Here</a></li>
<li><a href="#/section/empathic-technologist">Empathic Technologist</a></li>
<li><a href="#/section/recursive-coherence">Recursive Coherence</a></li>
<li><a href="#/section/fold-within-earth">Fold Within Earth</a></li>
<li><a href="#/section/neutralizing-narcissism">Neutralizing Narcissism</a></li>
<li><a href="#/section/simply-we">Simply WE</a></li>
<li><a href="#/section/mirrormire">Mirrormire</a></li>
</ul>
</nav>
<div class="hero">
<div class="glyph"></div>
<h1>UNCOVERING THE RECURSIVE REAL.</h1>
</div>
</header>
<main id="main">
<p class="loading">Loading…</p>
</main>
<footer id="footer"></footer>
<!-- WASM bundle (committed to repo) -->
<script type="module">
import init from "./pkg/thefoldwithin_wasm.js";
init();
</script>
</body>
</html>
+21
View File
@@ -0,0 +1,21 @@
:root{--bg:#0f0d0e;--card:#1a1618;--gold:#d4af37;--soft:#e0c66d;--border:#333;--err:#ff6666;--font:'Georgia',serif;--t:.3s}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--gold);font-family:var(--font);line-height:1.7}
a{color:var(--gold);text-decoration:none}
header{padding:2rem 1rem;border-bottom:1px solid var(--border)}
nav{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;justify-content:space-between;max-width:1100px;margin:0 auto}
nav ul{display:flex;flex-wrap:wrap;gap:1rem;list-style:none}
.hero{margin:2rem auto;max-width:720px;text-align:center}
.glyph{margin:0 auto 1rem;width:90px;height:90px;border:2px solid var(--gold);border-radius:50%}
main{padding:2rem 1rem;max-width:1200px;margin:0 auto}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem}
article{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem;cursor:pointer}
.thumb{height:140px;background:var(--border);border-radius:6px;margin-bottom:1rem}
h3{margin:.5rem 0}
.date{font-size:.85rem;color:var(--soft)}
.pill{display:inline-block;padding:.15rem .6rem;border-radius:999px;background:var(--border);font-size:.85rem;margin:.1rem .2rem}
.pill.section{background:#4a3d18}
.pill.program{background:#584a1f}
.markdown{max-width:720px;margin:2rem auto}
.error{color:var(--err);text-align:center;margin:2rem 0}
.loading{color:var(--soft);text-align:center}
+1
View File
@@ -0,0 +1 @@
{"rustc_fingerprint":6139942720291695509,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.90.0 (1159e78c4 2025-09-14)\nbinary: rustc\ncommit-hash: 1159e78c4747b02ef996e55082b704c09b970588\ncommit-date: 2025-09-14\nhost: x86_64-unknown-linux-gnu\nrelease: 1.90.0\nLLVM version: 20.1.8\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/mrhavens/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"11652014622397750202":{"success":true,"status":"","code":0,"stdout":"___.wasm\nlib___.rlib\n___.wasm\nlib___.a\n/home/mrhavens/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\n___\ndebug_assertions\npanic=\"abort\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"wasm32\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"wasm\"\ntarget_feature=\"bulk-memory\"\ntarget_feature=\"multivalue\"\ntarget_feature=\"mutable-globals\"\ntarget_feature=\"nontrapping-fptoint\"\ntarget_feature=\"reference-types\"\ntarget_feature=\"sign-ext\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"unknown\"\ntarget_pointer_width=\"32\"\ntarget_vendor=\"unknown\"\n","stderr":"warning: dropping unsupported crate type `dylib` for target `wasm32-unknown-unknown`\n\nwarning: dropping unsupported crate type `proc-macro` for target `wasm32-unknown-unknown`\n\nwarning: 2 warnings emitted\n\n"}},"successes":{}}
+3
View File
@@ -0,0 +1,3 @@
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by cargo.
# For information about cache directory tags see https://bford.info/cachedir/
View File
Whitespace-only changes.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
19af4d4ddcbb4f09
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\"]","declared_features":"[\"allocator-api2\", \"allocator_api\", \"bench_allocator_api\", \"boxed\", \"collections\", \"default\", \"serde\", \"std\"]","target":10625613344215589528,"profile":1369601567987815722,"path":18021335581970221190,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bumpalo-90f7d9ad42402599/dep-lib-bumpalo","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
Binary file not shown.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
e9593c35c2872b6b
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[]","declared_features":"[\"kv\", \"kv_serde\", \"kv_std\", \"kv_sval\", \"kv_unstable\", \"kv_unstable_serde\", \"kv_unstable_std\", \"kv_unstable_sval\", \"max_level_debug\", \"max_level_error\", \"max_level_info\", \"max_level_off\", \"max_level_trace\", \"max_level_warn\", \"release_max_level_debug\", \"release_max_level_error\", \"release_max_level_info\", \"release_max_level_off\", \"release_max_level_trace\", \"release_max_level_warn\", \"serde\", \"std\", \"sval\", \"sval_ref\", \"value-bag\"]","target":6550155848337067049,"profile":1369601567987815722,"path":1949512521887846879,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/log-5aea234a9df24890/dep-lib-log","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9e0dd302e21f042f
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[]","declared_features":"[]","target":777236694398023488,"profile":8375198932534324538,"path":2937633026300234205,"deps":[[373107762698212489,"proc_macro2",false,2060173047664179332],[11004406779467019477,"syn",false,16455683964674914165],[11082282709338087849,"quote",false,4428946508344014677]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/pin-project-internal-947c0c4132f8162c/dep-lib-pin_project_internal","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
8478dbb97834971c
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"proc-macro\"]","declared_features":"[\"default\", \"nightly\", \"proc-macro\", \"span-locations\"]","target":369203346396300798,"profile":1369601567987815722,"path":11176289305817327571,"deps":[[373107762698212489,"build_script_build",false,5882237447515614564],[10637008577242657367,"unicode_ident",false,11955821471924686553]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/proc-macro2-30dd1c0184916507/dep-lib-proc_macro2","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
642dab07cbe7a151
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[373107762698212489,"build_script_build",false,7618729435570435900]],"local":[{"RerunIfChanged":{"output":"release/build/proc-macro2-9a025c1b756d91f9/output","paths":["src/probe/proc_macro_span.rs","src/probe/proc_macro_span_location.rs","src/probe/proc_macro_span_file.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
3cf7fc4e0e2abb69
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"proc-macro\"]","declared_features":"[\"default\", \"nightly\", \"proc-macro\", \"span-locations\"]","target":5408242616063297496,"profile":1369601567987815722,"path":2192378801666752212,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/proc-macro2-ab9829a4a8b7788d/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
b6882a7b8fb74ce8
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"getopts\", \"html\", \"pulldown-cmark-escape\"]","declared_features":"[\"default\", \"gen-tests\", \"getopts\", \"html\", \"pulldown-cmark-escape\", \"serde\", \"simd\"]","target":5408242616063297496,"profile":1369601567987815722,"path":10958932234137617680,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/pulldown-cmark-34c00e14f7cebf8e/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
55370d3f62c7763d
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"proc-macro\"]","declared_features":"[\"default\", \"proc-macro\"]","target":3570458776599611685,"profile":1369601567987815722,"path":3723955622915916595,"deps":[[373107762698212489,"proc_macro2",false,2060173047664179332],[11082282709338087849,"build_script_build",false,2104762380747264388]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/quote-41756a17d2ad9431/dep-lib-quote","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
7e3860b240699848
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"proc-macro\"]","declared_features":"[\"default\", \"proc-macro\"]","target":17883862002600103897,"profile":1369601567987815722,"path":4125130744225183600,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/quote-c63aae50eb6f480a/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
84d10bd93b9e351d
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[11082282709338087849,"build_script_build",false,5231046693782304894]],"local":[{"RerunIfChanged":{"output":"release/build/quote-edf8f660a3d601cc/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
41674c9f0dc0b55b
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[]","declared_features":"[]","target":17883862002600103897,"profile":1369601567987815722,"path":9069833296027194284,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/rustversion-54ebccac61fba242/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
678d5a004db1e43e
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[14156967978702956262,"build_script_build",false,6608399192975763265]],"local":[{"RerunIfChanged":{"output":"release/build/rustversion-565b727e3ee60725/output","paths":["build/build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
68e11db969269cac
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[]","declared_features":"[]","target":179193587114931863,"profile":1369601567987815722,"path":3403675903571711802,"deps":[[14156967978702956262,"build_script_build",false,4531942069318094183]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/rustversion-8b3ccc11003710ff/dep-lib-rustversion","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
905b8d15a2017625
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"derive\", \"serde_derive\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"derive\", \"rc\", \"serde_derive\", \"std\", \"unstable\"]","target":5408242616063297496,"profile":1369601567987815722,"path":8032614489724587464,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde-9e59eb4de4feaddb/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
41df31b9c58a185b
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"result\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"rc\", \"result\", \"std\", \"unstable\"]","target":5408242616063297496,"profile":1369601567987815722,"path":16654701919491191369,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_core-51979789556dbb03/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
302811829f39dd6a
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\"]","declared_features":"[\"default\", \"deserialize_in_place\"]","target":13076129734743110817,"profile":1369601567987815722,"path":13115199052645423018,"deps":[[373107762698212489,"proc_macro2",false,2060173047664179332],[11004406779467019477,"syn",false,16455683964674914165],[11082282709338087849,"quote",false,4428946508344014677]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_derive-6e135ed1ce51090e/dep-lib-serde_derive","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
c39f3869ae87634d
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"default\", \"std\"]","declared_features":"[\"alloc\", \"arbitrary_precision\", \"default\", \"float_roundtrip\", \"indexmap\", \"preserve_order\", \"raw_value\", \"std\", \"unbounded_depth\"]","target":5408242616063297496,"profile":1369601567987815722,"path":2655935997670744472,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/serde_json-8b3de377bc751c67/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
Binary file not shown.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
75378a4261555ee4
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[\"clone-impls\", \"default\", \"derive\", \"full\", \"parsing\", \"printing\", \"proc-macro\", \"visit\", \"visit-mut\"]","declared_features":"[\"clone-impls\", \"default\", \"derive\", \"extra-traits\", \"fold\", \"full\", \"parsing\", \"printing\", \"proc-macro\", \"test\", \"visit\", \"visit-mut\"]","target":9442126953582868550,"profile":1369601567987815722,"path":1145770566211340056,"deps":[[373107762698212489,"proc_macro2",false,2060173047664179332],[10637008577242657367,"unicode_ident",false,11955821471924686553],[11082282709338087849,"quote",false,4428946508344014677]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/syn-3e4be17fbb5e4518/dep-lib-syn","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
829d96d92fbea883
@@ -0,0 +1 @@
{"rustc":16285725380928457773,"features":"[]","declared_features":"[]","target":5408242616063297496,"profile":1369601567987815722,"path":10978135054336441344,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/thiserror-bed25e52cb0980b7/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
Loaded 100 of 570 files, more files were not shown because too many files have changed in this diff. Show more