From 396f37ee3b7a764afa4362b4f832a2ac40529afd Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 14:46:19 +0200 Subject: [PATCH 01/20] chore(docs): add markdownlint-cli --- .markdownlint.yaml | 2 + package-lock.json | 716 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 9 +- 3 files changed, 722 insertions(+), 5 deletions(-) create mode 100644 .markdownlint.yaml diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 00000000..816a7188 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,2 @@ +default: true +MD013: false # Don't wrap lines by default diff --git a/package-lock.json b/package-lock.json index 731d4b09..fe79db87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,13 +6,442 @@ "": { "name": "tildefriends", "license": "MIT", + "devDependencies": { + "markdownlint-cli": "0.40.0", + "prettier": "3.2.5" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { - "prettier": "^3.2.5" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "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==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.3.14", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.14.tgz", + "integrity": "sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdownlint": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.34.0.tgz", + "integrity": "sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==", + "dev": true, + "dependencies": { + "markdown-it": "14.1.0", + "markdownlint-micromark": "0.1.9" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.40.0.tgz", + "integrity": "sha512-JXhI3dRQcaqwiFYpPz6VJ7aKYheD53GmTz9y4D/d0F1MbZDGOp9pqKlbOfUX/pHP/iAoeiE4wYRmk8/kjLakxA==", + "dev": true, + "dependencies": { + "commander": "~12.0.0", + "get-stdin": "~9.0.0", + "glob": "~10.3.12", + "ignore": "~5.3.1", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.2.1", + "jsonpointer": "5.0.1", + "markdownlint": "~0.34.0", + "minimatch": "~9.0.4", + "run-con": "~1.3.2", + "toml": "~3.0.0" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-micromark": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.9.tgz", + "integrity": "sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.0.tgz", + "integrity": "sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/prettier": { "version": "3.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -22,6 +451,289 @@ "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } } } } diff --git a/package.json b/package.json index 6808eff0..433f20ee 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "tildefriends", "scripts": { - "prettier": "prettier . --check --cache --write" + "lint": "npm run prettier && npm run markdown", + "prettier": "prettier --cache --write --check .", + "markdown": "npx markdownlint-cli 'docs/**/*.md' -f" }, "author": "Cory McWilliams", "license": "MIT", - "dependencies": { - "prettier": "^3.2.5" + "devDependencies": { + "markdownlint-cli": "0.40.0", + "prettier": "3.2.5" } } -- 2.39.5 From 34c7fa8312f125ffd44d270a1dc42fbcd888f760 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 19:47:14 +0200 Subject: [PATCH 02/20] docs: new documentation --- README.md | 29 +------- docs/building.md | 75 +++++++++++++++++++++ docs/contributing.md | 33 +++++++++ docs/documentation.md | 17 +++++ docs/faq.md | 9 +++ docs/guide.md | 4 +- docs/guidelines/documentation-guidelines.md | 33 +++++++++ docs/running.md | 20 ++++++ 8 files changed, 191 insertions(+), 29 deletions(-) create mode 100644 docs/building.md create mode 100644 docs/contributing.md create mode 100644 docs/documentation.md create mode 100644 docs/faq.md create mode 100644 docs/guidelines/documentation-guidelines.md create mode 100644 docs/running.md diff --git a/README.md b/README.md index 2ba21b85..53eddba0 100644 --- a/README.md +++ b/README.md @@ -14,36 +14,11 @@ Scuttlebutt, as well as a platform for writing and running web applications. 3. Make creating and sharing web applications accessible to anyone with a browser. -## Building - -Builds on Linux (x86_64 and aarch64), MacOS, OpenBSD, and Haiku. Builds for -all of those host platforms plus mingw64, iOS, and android. - -1. Requires openssl (`libssl-dev`, in debian-speak). All other dependencies - are kept up to date in the tree. -2. To build, run `make debug` or `make release`. An executable will be - generated in a subdirectory of `out/`. -3. It's possible to build for Android, iOS, and Windows on Linux, if you have - the right dependencies in the right places. `make windebug winrelease -iosdebug-ipa iosrelease-ipa release-apk`. -4. To build in docker, `docker build .`. -5. `make format` will normalize formatting to the coding standard. - -## Running - -By default, running the built `tildefriends` executable will start a web server -at . `tildefriends -h` lists further options. - -The first user to create an account and log in will be granted administrative -privileges. Further administration can be done at -. - ## Documentation -Docs are a work in progress: -. +Docs are a work in progress in the `docs` folder and in Tilde Friends: . ## License All code unless otherwise noted in is provided under the -[MIT](https://opensource.org/licenses/MIT) license. +[MIT](https://opensource.org/licenses/MIT/) license. diff --git a/docs/building.md b/docs/building.md new file mode 100644 index 00000000..a2d4a62c --- /dev/null +++ b/docs/building.md @@ -0,0 +1,75 @@ +# How to build Tilde Friends + +> Disclaimer: this documentation has been written by a Linux user and has not been reviewed by other people on other platforms. The procedure may vary slightly depending on your operating system. + +Builds **on** Linux (`x86_64` and `aarch64`), MacOS, OpenBSD, and Haiku. + +Builds **for** all of those host platforms plus `mingw64`, iOS, and android. + +Dependencies: + +- `openssl` (`libssl-dev`, in debian-speak) + +Dependencies for Android: + +- TODO + +Dependencies for iOS: + +- TODO + +Dependencies for Windows: + +- TODO + +> All other dependencies are kept up to date as git submodules. + +1. Clone the repository with the submodules: `git clone --recursive https://dev.tildefriends.net/cory/tildefriends.git` + +2. Run `make -j $(nproc) debug` or `make -j $(nproc) release` + +> If you're unsure whether you should choose `debug` or `release`, stick to `release`. + +> `-j $(nproc)` will start a compiler for every CPU thread, which will dramatically reduce the time needed to compile Tilde Friends. + +An executable will be generated in a subdirectory of `out/` + +It's possible to build for Android, iOS, and Windows on Linux, if you have the right dependencies in the right places. Run `make -j $(nproc) windebug winrelease iosdebug-ipa iosrelease-ipa release-apk` + +To build in docker, `docker build .` + +On NixOS: TODO + +Now that you have a binary, head over to . + +## Troubleshooting + +### The compiler throws an error and I can't build the binary. + +Open `GNUMakefile` and edit the CFLAGS environment variable around line 50. + +For example given this error: + +``` +src/http.c: In function ‘tf_http_get_cookie’: +src/http.c:1089:128: error: check of ‘name’ for NULL after already dereferencing it [-Werror=analyzer-deref-before-check] +``` + +Add: + +```diff +CFLAGS += \ + -std=gnu11 \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ ++ -Wno-analyzer-deref-before-check \ + -MMD \ + -MP \ + -ffunction-sections \ + -fdata-sections \ + -fno-exceptions \ + -g +``` + +Now the compiler will ignore this error and *should* continue building anyways. diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 00000000..554c1436 --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1,33 @@ +# How to contribute + +- Fork this repository + +- Clone your repository + +Alternatively, you can change the `origin` remote on your existing clone: + +`git remote set-url origin https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` + +- Make your changes + + - I want to edit C code ! + + - I want to edit JavaScript code ! + + - I want to write documentation ! + + Great! Before you do, have a look at the [documentation guidelines](guidelines/documentation-guidelines.md) to learn how to write consistent documentation. + +- Format your changes: + +If you've edited C code: run `make format` + +If you've edited JavaScript code or the documentation: run `npm run format` + +- Open a pull request + +TODO + +- Get your changes reviewed and merged + +TODO diff --git a/docs/documentation.md b/docs/documentation.md new file mode 100644 index 00000000..2fc7a476 --- /dev/null +++ b/docs/documentation.md @@ -0,0 +1,17 @@ +# Tilde Friends documentation + +## Building + +See . + +## Contibuting + +See . + +## FAQ / Troubleshooting + +See . + +## Guide + +See . diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 00000000..67d2f29a --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,9 @@ +# Troubleshooting + +## I started tildefriends. Now what ? + +See . + +### The compiler throws an error and I can't build the binary. + +See . diff --git a/docs/guide.md b/docs/guide.md index f4aaa57c..f815f911 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -18,7 +18,7 @@ Above the terminal, an "Edit" link brings a visitor to the source code for the current Tilde Friends application, which they can then edit, save as their own, and run. -# Architecture +## Architecture Tilde Friends is a C++ application with a JavaScript runtime that provides restricted access to filesystem, network, and other system resources. The core @@ -66,7 +66,7 @@ performance reasons to minimize the data size transferred between processes. // Receive the above message and call the function. core.register("onMessage", function(sender, message) { - message.add(3, 4).then(x => terminal.print(x.toString())); + message.add(3, 4).then(x => terminal.print(x.toString())); }); Finally, there is a core web interface that runs on the client's browser that diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md new file mode 100644 index 00000000..1be46d20 --- /dev/null +++ b/docs/guidelines/documentation-guidelines.md @@ -0,0 +1,33 @@ +# Documentation guidelines + +This document defines the rules used to write documentation in order to make it more consistent. + +This documentation is a living document and so are it's rules; you are free to propose changes but in the meantime, please stick to them. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119/). + +## File naming + +Files SHOULD be named using [kebab-case](https://www.freecodecamp.org/news/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-whats-the-difference/#kebab-case). + +Their names should be meaningful and SHOULD not conflict with other files in other directories: + +> Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. + +## Documentation + +When writing documentation, the author should have in mind it's target audience: people with varying technical skills and backgrounds, fluency in peer-to-peer-specific terms and mental ability. The documentation should therefore be acessible and usefule to most people interested in building, using and contributing to Tilde Friends. + +### Terminology + +`Tilde Friends` refers to the projectas a whole. This can be abbreviated to `TF`. + +`tildefriends` refers to the program. + +### Style guide + +TODO + +## License + +As per the rest of the code in this repository, the documentation is shared under the [MIT](https://opensource.org/licenses/MIT/) license. diff --git a/docs/running.md b/docs/running.md new file mode 100644 index 00000000..ed790d57 --- /dev/null +++ b/docs/running.md @@ -0,0 +1,20 @@ +# Running Tilde Friends + +> Disclaimer: this documentation has been written by a Linux user and has not been reviewed by other people on other platforms. The procedure may vary slightly depending on your operating system. + +The binaries should appear at `out/debug/tildefriends` and `out/release/tildefriends`. + +For Android, iOS and Windows: TODO + +You can start the server by running `./out/debug/tildefriends` or `./out/release/tildefriends`. + +By default, running the built `tildefriends` executable will start a web server +at . `tildefriends -h` lists further options. + +The first user to create an account and log in will be granted administrative +privileges. Further administration can be done at +. + +## How to use TF + +TODO -- 2.39.5 From 69b2e2a955c20449075ce9593a7ba57fe7293d30 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 19:48:47 +0200 Subject: [PATCH 03/20] chore: rename `lint` script to `format`, tell prettier to ignore markdown files --- .prettierignore | 3 +++ package.json | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index 595b4cc1..2575e132 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,3 +12,6 @@ deps apps/ssb/tribute.esm.js apps/api/app.js **/emojis.json + +# only markdownlint should deal with the documentation +docs/**/*.md diff --git a/package.json b/package.json index 433f20ee..e54d10b0 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "tildefriends", "scripts": { - "lint": "npm run prettier && npm run markdown", - "prettier": "prettier --cache --write --check .", + "format": "npm run prettier && npm run markdown", + "prettier": "npx prettier --cache --write --check .", "markdown": "npx markdownlint-cli 'docs/**/*.md' -f" }, "author": "Cory McWilliams", -- 2.39.5 From 5551fd2dea6b392048dbd39fd43fbfeeca991e1a Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 19:49:34 +0200 Subject: [PATCH 04/20] chore: small changes in README and LICENSE --- LICENSE | 2 +- README.md | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/LICENSE b/LICENSE index b4b1d6d2..6684c2a0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2014 Cory McWilliams +Copyright 2014-2024 Cory McWilliams 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 diff --git a/README.md b/README.md index 53eddba0..6948bedd 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,13 @@ Tilde Friends is a tool for making and sharing. A public instance lives at https://www.tildefriends.net/. -It is both a peer-to-peer social network client, participating in Secure -Scuttlebutt, as well as a platform for writing and running web applications. +It is both a peer-to-peer social network client, participating in Secure Scuttlebutt, as well as a platform for writing and running web applications. ## Goals 1. Make it easy and fun to run all sorts of web applications. 2. Provide security that is easy to understand and protects your data. -3. Make creating and sharing web applications accessible to anyone with a - browser. +3. Make creating and sharing web applications accessible to anyone with a browser. ## Documentation @@ -20,5 +18,5 @@ Docs are a work in progress in the `docs` folder and in Tilde Friends: Date: Sat, 11 May 2024 21:22:25 +0200 Subject: [PATCH 05/20] docs: more docs guidelines --- docs/contributing.md | 10 ++++++- docs/guidelines/documentation-guidelines.md | 32 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 554c1436..4804ee11 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -12,12 +12,20 @@ Alternatively, you can change the `origin` remote on your existing clone: - I want to edit C code ! + TODO + - I want to edit JavaScript code ! + TODO + - I want to write documentation ! Great! Before you do, have a look at the [documentation guidelines](guidelines/documentation-guidelines.md) to learn how to write consistent documentation. - + + In all cases: + + - Make sure that your commit messages are descriptive. + - Format your changes: If you've edited C code: run `make format` diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 1be46d20..039434dc 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -26,7 +26,37 @@ When writing documentation, the author should have in mind it's target audience: ### Style guide -TODO +1. Lines SHOULD NOT be wrapped, to allow clients to dynamically wrap them however they want: + +``` +This is not very pleasant to read because +the text +is manually wrapped, but the size of the +screen is +smaller than the size the text is wrapped +at. I +need to write even more useless text here +so I get +my point across. Also hi! If you're here +that +means you're either going to contribute to +Tilde +Friends, or that you're reviewing my +stupid +changes. Either way, you're awesome! +``` + +You MAY use one line per sentence. + +2. Lines ending with an `inline code block` SHOULD NOT end with a period. + +> Example: To build in docker, `docker build .` + +NB: this does not apply to file names or other text that are not meant to be copy-pasted. + +> Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. + +More TODO ## License -- 2.39.5 From 85ac8080f4f88517eb97f0469bcab3868ad8ae74 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 21:47:47 +0200 Subject: [PATCH 06/20] chore(doc): run and modify formatting rules --- .markdownlint.yaml | 3 ++ docs/{guide.md => .guide.md} | 22 +++++++------ docs/building.md | 6 ++-- docs/contributing.md | 7 ++-- docs/documentation.md | 4 ++- docs/faq.md | 2 +- docs/guidelines/documentation-guidelines.md | 36 ++++++++++----------- package.json | 2 +- 8 files changed, 45 insertions(+), 37 deletions(-) rename docs/{guide.md => .guide.md} (96%) diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 816a7188..aa88abf7 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,2 +1,5 @@ default: true +MD010: false # Ignore tabs in code blocks MD013: false # Don't wrap lines by default +MD046: + style: "fenced" # Force fenced code blocks diff --git a/docs/guide.md b/docs/.guide.md similarity index 96% rename from docs/guide.md rename to docs/.guide.md index f815f911..31da05ca 100644 --- a/docs/guide.md +++ b/docs/.guide.md @@ -135,16 +135,18 @@ Sets the browser window/tab title. Reconfigures the terminal layout, potentially into multiple split panes. - terminal.split([ - { - type: "horizontal", - children: [ - {name: "left", basis: "2in", grow: 0, shrink: 0}, - {name: "middle", grow: 1}, - {name: "right", basis: "2in", grow: 0, shrink: 0}, - ], - }, - ]); +```javascript +terminal.split( + [{ + type: "horizontal", + children: [ + {name: "left", basis: "2in", grow: 0, shrink: 0}, + {name: "middle", grow: 1}, + {name: "right", basis: "2in", grow: 0, shrink: 0}, + ], + }] +); +``` #### terminal.select(name) diff --git a/docs/building.md b/docs/building.md index a2d4a62c..73b5b987 100644 --- a/docs/building.md +++ b/docs/building.md @@ -28,7 +28,7 @@ Dependencies for Windows: 2. Run `make -j $(nproc) debug` or `make -j $(nproc) release` -> If you're unsure whether you should choose `debug` or `release`, stick to `release`. +If you're unsure whether you should choose `debug` or `release`, stick to `release`. > `-j $(nproc)` will start a compiler for every CPU thread, which will dramatically reduce the time needed to compile Tilde Friends. @@ -44,13 +44,13 @@ Now that you have a binary, head over to . ## Troubleshooting -### The compiler throws an error and I can't build the binary. +### The compiler throws an error and I can't build the binary Open `GNUMakefile` and edit the CFLAGS environment variable around line 50. For example given this error: -``` +```text src/http.c: In function ‘tf_http_get_cookie’: src/http.c:1089:128: error: check of ‘name’ for NULL after already dereferencing it [-Werror=analyzer-deref-before-check] ``` diff --git a/docs/contributing.md b/docs/contributing.md index 4804ee11..378240fb 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -10,21 +10,22 @@ Alternatively, you can change the `origin` remote on your existing clone: - Make your changes - - I want to edit C code ! + - I want to edit C code ! TODO - - I want to edit JavaScript code ! + - I want to edit JavaScript code ! TODO - - I want to write documentation ! + - I want to write documentation ! Great! Before you do, have a look at the [documentation guidelines](guidelines/documentation-guidelines.md) to learn how to write consistent documentation. In all cases: - Make sure that your commit messages are descriptive. + - Format your changes: diff --git a/docs/documentation.md b/docs/documentation.md index 2fc7a476..21b042ce 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -14,4 +14,6 @@ See . ## Guide -See . +This document will be phased out and integrated into the new documentation. + +See <.guide.md>. diff --git a/docs/faq.md b/docs/faq.md index 67d2f29a..27ca2a45 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -4,6 +4,6 @@ See . -### The compiler throws an error and I can't build the binary. +### The compiler throws an error and I can't build the binary See . diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 039434dc..7c5acf42 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -28,25 +28,25 @@ When writing documentation, the author should have in mind it's target audience: 1. Lines SHOULD NOT be wrapped, to allow clients to dynamically wrap them however they want: -``` -This is not very pleasant to read because -the text -is manually wrapped, but the size of the -screen is -smaller than the size the text is wrapped -at. I -need to write even more useless text here -so I get -my point across. Also hi! If you're here -that -means you're either going to contribute to -Tilde -Friends, or that you're reviewing my -stupid -changes. Either way, you're awesome! -``` + ```text + This is not very pleasant to read because + the text + is manually wrapped, but the size of the + screen is + smaller than the size the text is wrapped + at. I + need to write even more useless text here + so I get + my point across. Also hi! If you're here + that + means you're either going to contribute to + Tilde + Friends, or that you're reviewing my + stupid + changes. Either way, you're awesome! + ``` -You MAY use one line per sentence. + You MAY use one line per sentence. 2. Lines ending with an `inline code block` SHOULD NOT end with a period. diff --git a/package.json b/package.json index e54d10b0..04c95411 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "scripts": { "format": "npm run prettier && npm run markdown", "prettier": "npx prettier --cache --write --check .", - "markdown": "npx markdownlint-cli 'docs/**/*.md' -f" + "markdown": "npx markdownlint-cli --fix 'docs/**/*.md'" }, "author": "Cory McWilliams", "license": "MIT", -- 2.39.5 From 5c8c6e876001e9051de274dd0ed651608c97148b Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 21:54:55 +0200 Subject: [PATCH 07/20] docs: remove unicode chars --- docs/building.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/building.md b/docs/building.md index 73b5b987..4430ac1a 100644 --- a/docs/building.md +++ b/docs/building.md @@ -51,8 +51,8 @@ Open `GNUMakefile` and edit the CFLAGS environment variable around line 50. For example given this error: ```text -src/http.c: In function ‘tf_http_get_cookie’: -src/http.c:1089:128: error: check of ‘name’ for NULL after already dereferencing it [-Werror=analyzer-deref-before-check] +src/http.c: In function 'tf_http_get_cookie': +src/http.c:1089:128: error: check of 'name' for NULL after already dereferencing it [-Werror=analyzer-deref-before-check] ``` Add: -- 2.39.5 From 2bb6d681225be80966da44aebef182889d52c51d Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 23:02:58 +0200 Subject: [PATCH 08/20] docs: running.md --- docs/running.md | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/docs/running.md b/docs/running.md index ed790d57..69e11447 100644 --- a/docs/running.md +++ b/docs/running.md @@ -6,15 +6,45 @@ The binaries should appear at `out/debug/tildefriends` and `out/release/tildefri For Android, iOS and Windows: TODO -You can start the server by running `./out/debug/tildefriends` or `./out/release/tildefriends`. +You can now start the server by running `./out/debug/tildefriends` or `./out/release/tildefriends`. By default, running the built `tildefriends` executable will start a web server at . `tildefriends -h` lists further options. -The first user to create an account and log in will be granted administrative -privileges. Further administration can be done at -. - ## How to use TF -TODO +### Initial setup + +Now you have a Tilde Friends instance running. The first thing you'll want to do is create your account. Click "login" in the top right corner, then "Register". +Enter your username and password. + +> The first user to create an account and log in will be granted administrative privileges. +> Further administration can be done at + +Next, create a Scuttlebutt identity by pressing the "Create an identity" button. +This will create a pair of keys that are used to sign your messages with. + +Because of the way Scuttlebutt is designed, you cannot log into your account without your keys. +Tilde Friends locks your keys behind a password, but if you were to destroy your database, the keys would be gone forever, and with it your possibility to send messages using this account. Click on the `identity` app and under "Identities", export your newly created identity. + +You'll be prompted with a dialog box saying "This app is requesting the following permission:ssb_id_export". +This is because applications are not trusted to have access to your keys by default. +Click on "Allow" and you'll see a list of 12 words. You need to write those down in a password manager or on a piece of paperand keep it private and secure. + +> Warning: Nobody needs to know these 12 words. Anybody that has access to those keys can post messages as you, see your private messages and documents and much more. + +Now that your keys are safe, we can start connecting to the outside world. + +### Replication + +You've probably noticed asdtring of random characters by now. This is your public key, a unique identifier for your account you can share to anyone. If you go back to the home menu and into the `ssb` app, you can click on your public key. This will lead you to your profile, which is empty at the time. Edit it and enter your name. + +TODO: joining a room + +TODO: initial sync + +TODO: send messages + +TODO: how messages spread to friends + +TODO: other apps -- 2.39.5 From fae277164501f4854175562ed762d22b93b2d39e Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sat, 11 May 2024 23:39:34 +0200 Subject: [PATCH 09/20] docs: docs, misc changes - instruction for writing apps - add NOTES.md to .gitignore --- .dockerignore | 3 +- .gitignore | 1 + .prettierignore | 2 + README.md | 2 +- docs/.guide.md | 4 +- docs/apps/quickstart.md | 50 +++++++++++++++++++++ docs/building.md | 3 +- docs/guidelines/c-guidelines.md | 1 + docs/guidelines/documentation-guidelines.md | 3 +- docs/guidelines/javascript-guidelines.md | 1 + 10 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 docs/apps/quickstart.md create mode 100644 docs/guidelines/c-guidelines.md create mode 100644 docs/guidelines/javascript-guidelines.md diff --git a/.dockerignore b/.dockerignore index 703ad486..5fed0f99 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ .svn -db.sqlite +db.* out/**/*.o out/**/*.d +NOTES.md diff --git a/.gitignore b/.gitignore index 4dd27d0b..74b95ea7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ out *.swo *.swp .zsign_cache/ +NOTES.md diff --git a/.prettierignore b/.prettierignore index 2575e132..7055acd0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -15,3 +15,5 @@ apps/api/app.js # only markdownlint should deal with the documentation docs/**/*.md + +NOTES.md diff --git a/README.md b/README.md index 6948bedd..e17226e7 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ It is both a peer-to-peer social network client, participating in Secure Scuttle ## Documentation -Docs are a work in progress in the `docs` folder and in Tilde Friends: . +Docs are a work in progress in the `docs` folder, or alternatively in Tilde Friends: . ## License diff --git a/docs/.guide.md b/docs/.guide.md index 31da05ca..086f7b12 100644 --- a/docs/.guide.md +++ b/docs/.guide.md @@ -1,4 +1,6 @@ -# Philosophy +# Tilde Friends + +## Philosophy Tilde Friends is a platform for making, running, and sharing web applications. diff --git a/docs/apps/quickstart.md b/docs/apps/quickstart.md new file mode 100644 index 00000000..d605d515 --- /dev/null +++ b/docs/apps/quickstart.md @@ -0,0 +1,50 @@ +# Writing Tilde Friends applications7 + +TODO + +## Creating your environment + +1. Open an existing application (ie: `identity`); +2. Open the editing panel; +3. Save the app under a new name (ie `/~YOUR_USERNAME/my-app/`); +4. Go back to the main menu and open your new app; +5. You can now edit your app, save it and see changes in the real time. + +## Project structure + +An application has a `app.js` file that gets run when a user enters the app. +This file contains a function (typically called `main()`) that's considered the entry point. + +Paste this in `app.js`: + +```javascript +async function main() { + let ids = await ssb.getIdentities(); + await app.setDocument(` + +

Hello world!

+ + `); +} + +main(); +``` + +Save the app, and you should now be seeing `Hello world!` on the screen. + + +## Components + +Once your app grows to a certain size, you'll want to introduce components. +In Tilde Friends, the de facto standard is [Lit](TODO). +Althogh you an use any framework you want, you're encouraged to use Lit as you can reuse + +First, add lit-all-min.js into your project. + +TODO + + + +TODO: tfrpc + +TODO: sharing apps diff --git a/docs/building.md b/docs/building.md index 4430ac1a..0206702d 100644 --- a/docs/building.md +++ b/docs/building.md @@ -38,7 +38,8 @@ It's possible to build for Android, iOS, and Windows on Linux, if you have the r To build in docker, `docker build .` -On NixOS: TODO + + Now that you have a binary, head over to . diff --git a/docs/guidelines/c-guidelines.md b/docs/guidelines/c-guidelines.md new file mode 100644 index 00000000..1333ed77 --- /dev/null +++ b/docs/guidelines/c-guidelines.md @@ -0,0 +1 @@ +TODO diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 7c5acf42..6c84386a 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -16,7 +16,8 @@ Their names should be meaningful and SHOULD not conflict with other files in oth ## Documentation -When writing documentation, the author should have in mind it's target audience: people with varying technical skills and backgrounds, fluency in peer-to-peer-specific terms and mental ability. The documentation should therefore be acessible and usefule to most people interested in building, using and contributing to Tilde Friends. +When writing documentation, the author should have in mind it's target audience: people with varying technical skills and backgrounds, fluency in peer-to-peer-specific terms and mental ability. +The documentation should therefore be acessible and usefule to most people interested in building, using and contributing to Tilde Friends. ### Terminology diff --git a/docs/guidelines/javascript-guidelines.md b/docs/guidelines/javascript-guidelines.md new file mode 100644 index 00000000..1333ed77 --- /dev/null +++ b/docs/guidelines/javascript-guidelines.md @@ -0,0 +1 @@ +TODO -- 2.39.5 From 9f3a3808f911947d8a03e2864665e2843e0d0f19 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 09:04:52 +0200 Subject: [PATCH 10/20] docs: you can add another git remote --- .markdownlint.yaml | 4 ++-- docs/contributing.md | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.markdownlint.yaml b/.markdownlint.yaml index aa88abf7..cf695d9c 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,5 +1,5 @@ default: true MD010: false # Ignore tabs in code blocks MD013: false # Don't wrap lines by default -MD046: - style: "fenced" # Force fenced code blocks +MD046: + style: 'fenced' # Force fenced code blocks diff --git a/docs/contributing.md b/docs/contributing.md index 378240fb..93eba35b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -4,9 +4,17 @@ - Clone your repository -Alternatively, you can change the `origin` remote on your existing clone: + 1. Alternatively, you can add a remote called `fork`: -`git remote set-url origin https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` + `git remote add fork https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` + + You'll need to set your branch's upstream to `fork`: + + `git push --set-upstream fork my-branch` + + 2. or you can change the `origin` remote on your existing clone altogether: + + `git remote set-url origin https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` - Make your changes -- 2.39.5 From 7d77e398d47ca0f7052600921833b2d167062861 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 10:57:39 +0200 Subject: [PATCH 11/20] docs: guideline 3 --- docs/contributing.md | 6 +++--- docs/guidelines/documentation-guidelines.md | 7 +++++++ docs/running.md | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 93eba35b..bd4e0592 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -6,15 +6,15 @@ 1. Alternatively, you can add a remote called `fork`: - `git remote add fork https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` + `$ git remote add fork https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` You'll need to set your branch's upstream to `fork`: - `git push --set-upstream fork my-branch` + `$ git push --set-upstream fork my-branch` 2. or you can change the `origin` remote on your existing clone altogether: - `git remote set-url origin https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` + `$ git remote set-url origin https://dev.tildefriends.net/YOUR_USERNAME/tildefriends.git` - Make your changes diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 6c84386a..d2391201 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -57,6 +57,13 @@ NB: this does not apply to file names or other text that are not meant to be cop > Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. +3. Commands SHOULD start with a caret: (is that the tehnical term ?) + + - `$` if the command should be run as the current user + - `#` if the command should be run as root + + > Example: To build in docker, `$ docker build .` + More TODO ## License diff --git a/docs/running.md b/docs/running.md index 69e11447..6a0443d1 100644 --- a/docs/running.md +++ b/docs/running.md @@ -9,7 +9,7 @@ For Android, iOS and Windows: TODO You can now start the server by running `./out/debug/tildefriends` or `./out/release/tildefriends`. By default, running the built `tildefriends` executable will start a web server -at . `tildefriends -h` lists further options. +at . `$ tildefriends -h` lists further options. ## How to use TF -- 2.39.5 From ae3430bf56fdb76c4eeb411dfbc358b0e1c4a48c Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 10:58:56 +0200 Subject: [PATCH 12/20] docs: move documentation out of guide.md --- docs/.guide.md | 213 ----------------------------------------------- docs/apps/api.md | 181 ++++++++++++++++++++++++++++++++++++++++ docs/in-depth.md | 31 +++++++ 3 files changed, 212 insertions(+), 213 deletions(-) create mode 100644 docs/apps/api.md create mode 100644 docs/in-depth.md diff --git a/docs/.guide.md b/docs/.guide.md index 086f7b12..e69de29b 100644 --- a/docs/.guide.md +++ b/docs/.guide.md @@ -1,213 +0,0 @@ -# Tilde Friends - -## Philosophy - -Tilde Friends is a platform for making, running, and sharing web applications. - -When you visit Tilde Friends in a web browser, you are presented with a -terminal interface, typically with a big text output box covering most of the -page and an input box at the bottom, into which text or commands can be -entered. A script runs to produce text output and consume user input. - -The script is a Tilde Friends application, and it runs on the server, which -means that unlike client-side JavaScript, it can have the ability to read and -write files on the server or create network connections to other machines. -Unlike node.js or other server-side runtime environments, applications are -limited for security reasons to not interfere with each other or bring the -entire server down. - -Above the terminal, an "Edit" link brings a visitor to the source code for the -current Tilde Friends application, which they can then edit, save as their own, -and run. - -## Architecture - -Tilde Friends is a C++ application with a JavaScript runtime that provides -restricted access to filesystem, network, and other system resources. The core -process runs a core set of scripts that implement a web server, typically -starting a new process for each visitor's session which runs scripts for the -active application and stopping it when the visitor leaves. - -Only the core process has access to most system resources, but session -processes can be given accesss through the core process. - -Service processes are identical to session processes, but they are not tied to -a user session. - -## Communication - -In the same way that web browsers expose APIs for scripts running in the -browser to modify the document, play sounds and video, and draw, Tilde Friends -exposes APIs for scripts running on a Tilde Friends server to interact with a -visitor's web browser, read and write files on the server, and otherwise -interact with the world. - -There are several distinct classes of APIs. - -First, there are low-level functions exposed from C++ to JavaScript. Most of -these are only available to the core process. These typically only go through -a basic JavaScript to C++ transition and are relatively fast and immediate. - - // Displays some text to the server's console. - print("Hello, world!"); - -There is a mechanism for communicating between processes. Functions can be -exported and called across process boundaries. When this is done, any -arguments are serialized to a network protocol, deserialized by the other -process, the function called, and finally any return value is passed back in -the same way. Any functions referenced by the arguments or return value are -also exported and can be subsequently called across process boundaries. -Functions called across process boundaries are always asynchronous, returning a -Promise. Care must be taken for security reasons to not pass dangerous -functions ("deleteAllMydata()") to untrusted processes, and it is best for -performance reasons to minimize the data size transferred between processes. - - // Send an "add" function to any other running processes. When called, it - // will run in this process. - core.broadcast({add: function(x, y) { return x + y; }}); - - // Receive the above message and call the function. - core.register("onMessage", function(sender, message) { - message.add(3, 4).then(x => terminal.print(x.toString())); - }); - -Finally, there is a core web interface that runs on the client's browser that -extends access to a running Tilde Friends script. - - // Displays a message in the client's browser. - terminal.print("Hello, world!"); - -## API Documentation - -The Tilde Friends API is very much evolving. - -All currently registered methods can be explored in the -[documentation](https://www.tildefriends.net/~cory/documentation) app. - -All browser-facing methods are implemented in [client.js](core/client.js). -Most process-related methods are implemented in [core.js](core/core.js). - -Higher-level behaviors are often implemented within library-style apps -themselves and are beyond the scope of this document. - -### Terminal - -All interaction with a human user is through a terminal-like interface. Though -it is somewhat limiting, it makes simple things easy, and it is possible to -construct complicated interfaces by creating and interacting with an iframe. - -#### terminal.print(arguments...) - -Print to the terminal. Arguments and lists are recursively expanded. Numerous -special values are supported as implemented in client.cs. - - // Create a link. - terminal.print({href: "http://www.tildefriends.net/", value: "Tilde Friends!"}); - - // Create an iframe. - terminal.print({iframe: "<b>Hello, world!</b>", width: 640, height: 480}); - - // Use style. - terminal.print({style: "color: #f00", value: "Hello, world!"}); - - // Create a link that when clicked will act as if the user typed a command. - terminal.print({command: "exit", value: "Get out of here."}); - -#### terminal.clear() - -Clears the terminal output. - -#### terminal.readLine() - -Read a line of input from the user. - -#### terminal.setEcho(echo) - -Controls whether the terminal will automatically echo user input. Defaults to true. - -#### terminal.setPrompt(prompt) - -Sets the terminal prompt. The default is ">". - -#### terminal.setTitle(title) - -Sets the browser window/tab title. - -#### terminal.split(terminalList) - -Reconfigures the terminal layout, potentially into multiple split panes. - -```javascript -terminal.split( - [{ - type: "horizontal", - children: [ - {name: "left", basis: "2in", grow: 0, shrink: 0}, - {name: "middle", grow: 1}, - {name: "right", basis: "2in", grow: 0, shrink: 0}, - ], - }] -); -``` - -#### terminal.select(name) - -Directs subsequent output to the named terminal. - -#### terminal.postMessageToIframe(iframeName, message) - -Sends a message to the iframe that was created with the given name, using the -browser's window.postMessage. - -### Database - -Tilde Friends uses lmdb as a basic key value store. Keys and values are all -expected to be of type String. Each application gets its own isolated -database. - -#### database.get(key) - -Retrieve the database value associated with the given key. - -#### database.set(key, value) - -Sets the database value for the given key, overwriting any existing value. - -#### database.remove(key) - -Remove the database entry for the given key. - -#### database.getAlll() - -Retrieve a list of all key names. - -### Network - -Network access is generally not extended to untrusted users. - -It is necessary to grant network permissions to an app owner through the -administration app. - -Apps that require network access must declare it like this: - - //! { "permissions": ["network"] } - -#### network.newConnection() - -Creates a Connection object. - -#### connection.connect(host, port) - -Opens a TCP connection to host:port. - -#### connection.read(readCallback) - -Begins reading and calls readCallback(data) for all data received. - -#### connection.write(data) - -Writes data to the connection. - -#### connection.close() - -Closes the connection. diff --git a/docs/apps/api.md b/docs/apps/api.md new file mode 100644 index 00000000..f2cfb34c --- /dev/null +++ b/docs/apps/api.md @@ -0,0 +1,181 @@ + \ No newline at end of file diff --git a/docs/in-depth.md b/docs/in-depth.md new file mode 100644 index 00000000..6f4d3c93 --- /dev/null +++ b/docs/in-depth.md @@ -0,0 +1,31 @@ +# Tilde Friends in depth +# Tilde Friends + +## Philosophy + +Tilde Friends is a platform for making, running, and sharing web applications. + + + +## Architecture + +Tilde Friends is a C++ application with a JavaScript runtime that provides restricted access to filesystem, network, and other system resources. +The core process runs a core set of scripts that implement a web server, typically starting a new process for each visitor's session which runs scripts for the active application and stopping it when the visitor leaves. + +Only the core process has access to most system resources, but session processes can be given accesss through the core process. + +Service processes are identical to session processes, but they are not tied to a user session. -- 2.39.5 From 5b7d0f1aa1685ca962892097838272b290655ed8 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 10:59:26 +0200 Subject: [PATCH 13/20] docs: misc --- docs/apps/quickstart.md | 4 ++++ docs/apps/tfrpc.md | 8 ++++++++ docs/building.md | 2 ++ docs/faq.md | 7 +++++++ docs/guidelines/documentation-guidelines.md | 10 ++++------ docs/running.md | 2 +- 6 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 docs/apps/tfrpc.md diff --git a/docs/apps/quickstart.md b/docs/apps/quickstart.md index d605d515..fdcaef56 100644 --- a/docs/apps/quickstart.md +++ b/docs/apps/quickstart.md @@ -47,4 +47,8 @@ TODO TODO: tfrpc +Apps can interact with Tilde Friends using tfrpc. + +Read + TODO: sharing apps diff --git a/docs/apps/tfrpc.md b/docs/apps/tfrpc.md new file mode 100644 index 00000000..44edd211 --- /dev/null +++ b/docs/apps/tfrpc.md @@ -0,0 +1,8 @@ +# RPC documentation + +Quick start + +Complete documentation + + +TODO diff --git a/docs/building.md b/docs/building.md index 0206702d..799170ba 100644 --- a/docs/building.md +++ b/docs/building.md @@ -47,6 +47,7 @@ Now that you have a binary, head over to . ### The compiler throws an error and I can't build the binary +You can choose to tell the compiler to ignore warnings. Open `GNUMakefile` and edit the CFLAGS environment variable around line 50. For example given this error: @@ -74,3 +75,4 @@ CFLAGS += \ ``` Now the compiler will ignore this error and *should* continue building anyways. +This is a dirty hack to get Tilde Friends to compile and you should not propose to keep this flag on. Instead, open a bug report. diff --git a/docs/faq.md b/docs/faq.md index 27ca2a45..c8e6f4fc 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -7,3 +7,10 @@ See . ### The compiler throws an error and I can't build the binary See . + +### Where is my database located ? + +TODO + + + diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index d2391201..14394530 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -1,7 +1,6 @@ # Documentation guidelines This document defines the rules used to write documentation in order to make it more consistent. - This documentation is a living document and so are it's rules; you are free to propose changes but in the meantime, please stick to them. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119/). @@ -9,7 +8,6 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S ## File naming Files SHOULD be named using [kebab-case](https://www.freecodecamp.org/news/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-whats-the-difference/#kebab-case). - Their names should be meaningful and SHOULD not conflict with other files in other directories: > Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. @@ -49,13 +47,13 @@ The documentation should therefore be acessible and usefule to most people inter You MAY use one line per sentence. -2. Lines ending with an `inline code block` SHOULD NOT end with a period. +2. Lines ending with an `inline code block` SHOULD NOT end with a period to make copy-pasting easier. -> Example: To build in docker, `docker build .` + > Example: To build in docker, `$ docker build .` -NB: this does not apply to file names or other text that are not meant to be copy-pasted. + NB: this does not apply to file names or other text that are not meant to be copy-pasted. -> Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. + > Example: this document is named `docs/guidelines/documentation-guidelines.md` instead of `docs/guidelines/documentation.md` because it could cause confusion with `docs/documentation.md`. 3. Commands SHOULD start with a caret: (is that the tehnical term ?) diff --git a/docs/running.md b/docs/running.md index 6a0443d1..718b1c9d 100644 --- a/docs/running.md +++ b/docs/running.md @@ -6,7 +6,7 @@ The binaries should appear at `out/debug/tildefriends` and `out/release/tildefri For Android, iOS and Windows: TODO -You can now start the server by running `./out/debug/tildefriends` or `./out/release/tildefriends`. +You can now start the server by running `$ ./out/debug/tildefriends` or `$ ./out/release/tildefriends`. By default, running the built `tildefriends` executable will start a web server at . `$ tildefriends -h` lists further options. -- 2.39.5 From 12599b57233187f676c92cee53e60b13b0e57551 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 11:03:02 +0200 Subject: [PATCH 14/20] docs: delete guide.md --- docs/.guide.md | 0 docs/documentation.md | 6 ------ 2 files changed, 6 deletions(-) delete mode 100644 docs/.guide.md diff --git a/docs/.guide.md b/docs/.guide.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/documentation.md b/docs/documentation.md index 21b042ce..2907d247 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -11,9 +11,3 @@ See . ## FAQ / Troubleshooting See . - -## Guide - -This document will be phased out and integrated into the new documentation. - -See <.guide.md>. -- 2.39.5 From d7eda01c163ab599adcdee476e1dad09e69950f0 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Sun, 12 May 2024 11:20:09 +0200 Subject: [PATCH 15/20] docs: misc --- docs/building.md | 4 ++-- docs/contributing.md | 10 ++++++++++ docs/guidelines/documentation-guidelines.md | 8 +++++++- docs/in-depth.md | 8 +++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/docs/building.md b/docs/building.md index 799170ba..da7727a1 100644 --- a/docs/building.md +++ b/docs/building.md @@ -45,7 +45,7 @@ Now that you have a binary, head over to . ## Troubleshooting -### The compiler throws an error and I can't build the binary +### The compiler throws a warning and I can't build the binary You can choose to tell the compiler to ignore warnings. Open `GNUMakefile` and edit the CFLAGS environment variable around line 50. @@ -75,4 +75,4 @@ CFLAGS += \ ``` Now the compiler will ignore this error and *should* continue building anyways. -This is a dirty hack to get Tilde Friends to compile and you should not propose to keep this flag on. Instead, open a bug report. +Note this is a dirty hack to get Tilde Friends to compile and you should not propose to keep this flag on. Instead, open a bug report. diff --git a/docs/contributing.md b/docs/contributing.md index bd4e0592..d48b67ee 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,5 +1,15 @@ # How to contribute +## Philosophy + +TODO + +## Best practices + +TODO + +## How to get your changes merged + - Fork this repository - Clone your repository diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 14394530..8afdf20a 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -47,7 +47,7 @@ The documentation should therefore be acessible and usefule to most people inter You MAY use one line per sentence. -2. Lines ending with an `inline code block` SHOULD NOT end with a period to make copy-pasting easier. +2. Lines ending with an `inline code block` or hyperlinks SHOULD NOT end with a period to make copy-pasting easier. > Example: To build in docker, `$ docker build .` @@ -67,3 +67,9 @@ More TODO ## License As per the rest of the code in this repository, the documentation is shared under the [MIT](https://opensource.org/licenses/MIT/) license. + +## Changelog + +### v1 (2024-05-12) + +First version; 3 new guidelines. diff --git a/docs/in-depth.md b/docs/in-depth.md index 6f4d3c93..102e3e70 100644 --- a/docs/in-depth.md +++ b/docs/in-depth.md @@ -1,5 +1,4 @@ # Tilde Friends in depth -# Tilde Friends ## Philosophy @@ -29,3 +28,10 @@ The core process runs a core set of scripts that implement a web server, typical Only the core process has access to most system resources, but session processes can be given accesss through the core process. Service processes are identical to session processes, but they are not tied to a user session. + +```text +/-------\ /-------------\ /--------------\ +| C app | <-----> | Server-side | <-----> | Client-side | +| | tfrpc | JS runtime | | JS (Browser) | +\-------/ \-------------/ \--------------/ +``` -- 2.39.5 From f2a3c790ddb569d2f2a7c0c4902d9e891cc7e742 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Fri, 17 May 2024 08:12:46 +0200 Subject: [PATCH 16/20] docs: issue & pr templates draft --- .gitea/ISSUE_TEMPLATE/bug-report.md | 3 +++ .gitea/ISSUE_TEMPLATE/config.yaml | 5 +++++ .gitea/ISSUE_TEMPLATE/feature-rquest.md | 3 +++ .gitea/PULL_REQUEST_TEMPLATE.md | 9 +++++++++ 4 files changed, 20 insertions(+) create mode 100644 .gitea/ISSUE_TEMPLATE/bug-report.md create mode 100644 .gitea/ISSUE_TEMPLATE/config.yaml create mode 100644 .gitea/ISSUE_TEMPLATE/feature-rquest.md create mode 100644 .gitea/PULL_REQUEST_TEMPLATE.md diff --git a/.gitea/ISSUE_TEMPLATE/bug-report.md b/.gitea/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 00000000..8840eac0 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,3 @@ +--- +name: 'Bug Report' +--- diff --git a/.gitea/ISSUE_TEMPLATE/config.yaml b/.gitea/ISSUE_TEMPLATE/config.yaml new file mode 100644 index 00000000..dfe7f40f --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/config.yaml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Documentation + url: https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/index.md + about: Read the documentation diff --git a/.gitea/ISSUE_TEMPLATE/feature-rquest.md b/.gitea/ISSUE_TEMPLATE/feature-rquest.md new file mode 100644 index 00000000..941fe684 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature-rquest.md @@ -0,0 +1,3 @@ +--- +name: 'Feature Request' +--- diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..3feaa382 --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,9 @@ +To Do List + +- [ ] My changes are documented in the [documentation](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/index.md) +- [ ] I have tested my changes +- [ ] I agree to the contribution guidelines + - [ ] [C](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/guidelines/c-guidelines.md) + - [ ] [JavaScript](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/guidelines/javascript-guidelines.md) + - [ ] [documentation](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/guidelines/documentation-guidelines.md) + -- 2.39.5 From 80c1463a5c57ce2dd375106590e3a11da54c5387 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Fri, 17 May 2024 08:16:38 +0200 Subject: [PATCH 17/20] docs: fix links --- docs/apps/quickstart.md | 2 +- docs/building.md | 2 +- docs/contributing.md | 2 +- docs/documentation.md | 6 +++--- docs/faq.md | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/apps/quickstart.md b/docs/apps/quickstart.md index fdcaef56..f0caa433 100644 --- a/docs/apps/quickstart.md +++ b/docs/apps/quickstart.md @@ -49,6 +49,6 @@ TODO: tfrpc Apps can interact with Tilde Friends using tfrpc. -Read +Read [tfrpc.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/apps/tfrpc.md) TODO: sharing apps diff --git a/docs/building.md b/docs/building.md index da7727a1..c00cc21d 100644 --- a/docs/building.md +++ b/docs/building.md @@ -41,7 +41,7 @@ To build in docker, `docker build .` -Now that you have a binary, head over to . +Now that you have a binary, head over to [running.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/running.md). ## Troubleshooting diff --git a/docs/contributing.md b/docs/contributing.md index d48b67ee..021e4ed9 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -38,7 +38,7 @@ TODO - I want to write documentation ! - Great! Before you do, have a look at the [documentation guidelines](guidelines/documentation-guidelines.md) to learn how to write consistent documentation. + Great! Before you do, have a look at the [documentation guidelines](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/guidelines/documentation-guidelines.md) to learn how to write consistent documentation. In all cases: diff --git a/docs/documentation.md b/docs/documentation.md index 2907d247..174fa09c 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -2,12 +2,12 @@ ## Building -See . +See [building.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/building.md). ## Contibuting -See . +See [contributing.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/contributing.md). ## FAQ / Troubleshooting -See . +See [faq.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/faq.md). diff --git a/docs/faq.md b/docs/faq.md index c8e6f4fc..ca5d5ea5 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,11 +2,11 @@ ## I started tildefriends. Now what ? -See . +See [running.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/running.md). ### The compiler throws an error and I can't build the binary -See . +See [building.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/building.md). ### Where is my database located ? -- 2.39.5 From 912747bdac0e376a2f1222a3aa18b6f3ab9c2dbe Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Fri, 17 May 2024 08:21:28 +0200 Subject: [PATCH 18/20] docs: formatting --- README.md | 2 +- docs/apps/quickstart.md | 1 - docs/apps/tfrpc.md | 1 - docs/faq.md | 3 --- docs/guidelines/c-guidelines.md | 2 +- docs/guidelines/documentation-guidelines.md | 2 +- docs/guidelines/javascript-guidelines.md | 2 +- docs/running.md | 2 +- 8 files changed, 5 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e17226e7..5ff0f029 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ It is both a peer-to-peer social network client, participating in Secure Scuttle ## Documentation -Docs are a work in progress in the `docs` folder, or alternatively in Tilde Friends: . +Docs are a work in progress: [documentation](https://dev.tildefriends.net/cory/tildefriends/src/branch/main/docs/index.md), or alternatively in Tilde Friends: . ## License diff --git a/docs/apps/quickstart.md b/docs/apps/quickstart.md index f0caa433..e1cb6a05 100644 --- a/docs/apps/quickstart.md +++ b/docs/apps/quickstart.md @@ -32,7 +32,6 @@ main(); Save the app, and you should now be seeing `Hello world!` on the screen. - ## Components Once your app grows to a certain size, you'll want to introduce components. diff --git a/docs/apps/tfrpc.md b/docs/apps/tfrpc.md index 44edd211..ea7257e6 100644 --- a/docs/apps/tfrpc.md +++ b/docs/apps/tfrpc.md @@ -4,5 +4,4 @@ Quick start Complete documentation - TODO diff --git a/docs/faq.md b/docs/faq.md index ca5d5ea5..eae31179 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -11,6 +11,3 @@ See [building.md](https://dev.tildefriends.net/cory/tildefriends/src/branch/main ### Where is my database located ? TODO - - - diff --git a/docs/guidelines/c-guidelines.md b/docs/guidelines/c-guidelines.md index 1333ed77..46409041 100644 --- a/docs/guidelines/c-guidelines.md +++ b/docs/guidelines/c-guidelines.md @@ -1 +1 @@ -TODO +# TODO diff --git a/docs/guidelines/documentation-guidelines.md b/docs/guidelines/documentation-guidelines.md index 8afdf20a..71e7c641 100644 --- a/docs/guidelines/documentation-guidelines.md +++ b/docs/guidelines/documentation-guidelines.md @@ -57,7 +57,7 @@ The documentation should therefore be acessible and usefule to most people inter 3. Commands SHOULD start with a caret: (is that the tehnical term ?) - - `$` if the command should be run as the current user + - `$` if the command should be run as the current user - `#` if the command should be run as root > Example: To build in docker, `$ docker build .` diff --git a/docs/guidelines/javascript-guidelines.md b/docs/guidelines/javascript-guidelines.md index 1333ed77..46409041 100644 --- a/docs/guidelines/javascript-guidelines.md +++ b/docs/guidelines/javascript-guidelines.md @@ -1 +1 @@ -TODO +# TODO diff --git a/docs/running.md b/docs/running.md index 718b1c9d..5a0d1830 100644 --- a/docs/running.md +++ b/docs/running.md @@ -24,7 +24,7 @@ Enter your username and password. Next, create a Scuttlebutt identity by pressing the "Create an identity" button. This will create a pair of keys that are used to sign your messages with. -Because of the way Scuttlebutt is designed, you cannot log into your account without your keys. +Because of the way Scuttlebutt is designed, you cannot log into your account without your keys. Tilde Friends locks your keys behind a password, but if you were to destroy your database, the keys would be gone forever, and with it your possibility to send messages using this account. Click on the `identity` app and under "Identities", export your newly created identity. You'll be prompted with a dialog box saying "This app is requesting the following permission:ssb_id_export". -- 2.39.5 From 1b3b9e570e8871488f3deab7bac9f1f059ef4ebb Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Thu, 23 May 2024 13:12:10 +0200 Subject: [PATCH 19/20] add result to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 74b95ea7..b25ba73c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ out *.swo *.swp .zsign_cache/ +result NOTES.md -- 2.39.5 From 9c8772c89823d0c3fbeaa12339919513c3457cb4 Mon Sep 17 00:00:00 2001 From: Tasia Iso Date: Thu, 23 May 2024 13:14:47 +0200 Subject: [PATCH 20/20] chore: don't format flake.lock --- .prettierignore | 1 + flake.lock | 118 ++++++++++++++++++++++++------------------------ 2 files changed, 60 insertions(+), 59 deletions(-) diff --git a/.prettierignore b/.prettierignore index 7055acd0..715ba305 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,6 +2,7 @@ node_modules src deps .clang-format +flake.lock # Minified files **/*.min.css diff --git a/flake.lock b/flake.lock index e532421d..0aebcb80 100644 --- a/flake.lock +++ b/flake.lock @@ -1,61 +1,61 @@ { - "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1715395895, - "narHash": "sha256-DreMqi6+qa21ffLQqhMQL2XRUkAGt3N7iVB5FhJKie4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "71bae31b7dbc335528ca7e96f479ec93462323ff", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1715395895, + "narHash": "sha256-DreMqi6+qa21ffLQqhMQL2XRUkAGt3N7iVB5FhJKie4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "71bae31b7dbc335528ca7e96f479ec93462323ff", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 } -- 2.39.5