A CLI for publishing standard.site documents to ATProto sequoia.pub
standard site lexicon cli publishing

Add .editorconfig and update biome

Biome can use .editorconfig, so use consistent settings. Also refactors biome.json to use ubiquitously in the project.

Unfortunately, markdown files - which we can hopefully associate .mdx files with - aren't supported yet. See https://github.com/biomejs/biome/issues/3718.

authored by

Heath Stewart and committed by tangled.org f6d1e094 c04e4383

+101 -83
+14
.editorconfig
··· 1 + root = true 2 + 3 + [*] 4 + indent_style = tab 5 + insert_final_newline = true 6 + trim_trailing_whitespace = true 7 + 8 + [*.html] 9 + indent_size = 2 10 + indent_style = space 11 + 12 + [*.{md,mdx}] 13 + indent_size = 2 14 + indent_style = space
+2 -2
README.md
··· 2 2 3 3 ![cover](https://sequoia.pub/og.png) 4 4 5 - A CLI for publishing [Standard.site](https://standard.site) documents to the [AT Protocol](https://atproto.com). 5 + A CLI for publishing [Standard.site](https://standard.site) documents to the [AT Protocol](https://atproto.com). 6 6 7 7 > [!NOTE] 8 8 > [Visit the docs for more info](https://sequoia.pub) ··· 60 60 bun dev 61 61 ``` 62 62 63 - ## License 63 + ## License 64 64 65 65 MIT 66 66
+38
biome.json
··· 1 + { 2 + "$schema": "https://biomejs.dev/schemas/2.3.13/schema.json", 3 + "root": true, 4 + "vcs": { 5 + "enabled": true, 6 + "clientKind": "git", 7 + "useIgnoreFile": true 8 + }, 9 + "files": { 10 + "includes": ["**"] 11 + }, 12 + "formatter": { 13 + "enabled": true, 14 + "useEditorconfig": true 15 + }, 16 + "linter": { 17 + "enabled": true, 18 + "rules": { 19 + "recommended": true, 20 + "style": { 21 + "noNonNullAssertion": "off" 22 + } 23 + } 24 + }, 25 + "javascript": { 26 + "formatter": { 27 + "quoteStyle": "double" 28 + } 29 + }, 30 + "assist": { 31 + "enabled": true, 32 + "actions": { 33 + "source": { 34 + "organizeImports": "on" 35 + } 36 + } 37 + } 38 + }
+1
bun.lock
··· 22 22 "vocs": "latest", 23 23 }, 24 24 "devDependencies": { 25 + "@biomejs/biome": "^2.3.13", 25 26 "@cloudflare/workers-types": "latest", 26 27 "@types/react": "latest", 27 28 "typescript": "latest",
+1 -2
docs/docs/public/sequoia-comments.js
··· 588 588 this.commentsContainer = container; 589 589 this.state = { type: "loading" }; 590 590 this.abortController = null; 591 - 592 591 } 593 592 594 593 static get observedAttributes() { ··· 701 700 </div> 702 701 `; 703 702 if (this.hide) { 704 - this.commentsContainer.style.display = 'none'; 703 + this.commentsContainer.style.display = "none"; 705 704 } 706 705 break; 707 706
+2
docs/package.json
··· 4 4 "version": "0.0.0", 5 5 "type": "module", 6 6 "scripts": { 7 + "format": "biome format --write", 7 8 "dev": "vocs dev", 8 9 "dev:api": "wrangler dev", 9 10 "build": "vocs build && bun inject-og-tags.ts", ··· 20 21 "vocs": "latest" 21 22 }, 22 23 "devDependencies": { 24 + "@biomejs/biome": "^2.3.13", 23 25 "@cloudflare/workers-types": "latest", 24 26 "@types/react": "latest", 25 27 "typescript": "latest"
+16 -18
docs/sequoia.json
··· 1 1 { 2 - "siteUrl": "https://sequoia.pub", 3 - "contentDir": "docs/pages/blog", 4 - "imagesDir": "docs/public", 5 - "publicDir": "docs/public", 6 - "outputDir": "docs/dist", 7 - "pathPrefix": "/blog", 8 - "publicationUri": "at://did:plc:kq6bvkw4sxof3vdinuitehn5/site.standard.publication/3mdnzt4rqr42v", 9 - "pdsUrl": "https://andromeda.social", 10 - "frontmatter": { 11 - "publishDate": "date" 12 - }, 13 - "ignore": [ 14 - "index.mdx" 15 - ], 16 - "ui": { 17 - "components": "docs/components" 18 - } 19 - } 2 + "siteUrl": "https://sequoia.pub", 3 + "contentDir": "docs/pages/blog", 4 + "imagesDir": "docs/public", 5 + "publicDir": "docs/public", 6 + "outputDir": "docs/dist", 7 + "pathPrefix": "/blog", 8 + "publicationUri": "at://did:plc:kq6bvkw4sxof3vdinuitehn5/site.standard.publication/3mdnzt4rqr42v", 9 + "pdsUrl": "https://andromeda.social", 10 + "frontmatter": { 11 + "publishDate": "date" 12 + }, 13 + "ignore": ["index.mdx"], 14 + "ui": { 15 + "components": "docs/components" 16 + } 17 + }
+2 -8
docs/src/lib/kv-stores.ts
··· 10 10 dpopJwk: Record<string, unknown>; 11 11 }; 12 12 13 - type SerializedSession = Omit< 14 - Parameters<SessionStore["set"]>[1], 15 - "dpopKey" 16 - > & { 13 + type SerializedSession = Omit<Parameters<SessionStore["set"]>[1], "dpopKey"> & { 17 14 dpopJwk: Record<string, unknown>; 18 15 }; 19 16 ··· 27 24 return JoseKey.fromJWK(jwk); 28 25 } 29 26 30 - export function createStateStore( 31 - kv: KVNamespace, 32 - ttl = 600, 33 - ): StateStore { 27 + export function createStateStore(kv: KVNamespace, ttl = 600): StateStore { 34 28 return { 35 29 async set(key, { dpopKey, ...rest }) { 36 30 const data: SerializedStateData = {
+21 -21
docs/tsconfig.json
··· 1 1 { 2 - "compilerOptions": { 3 - "target": "ES2020", 4 - "useDefineForClassFields": true, 5 - "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 - "module": "ESNext", 7 - "skipLibCheck": true, 2 + "compilerOptions": { 3 + "target": "ES2020", 4 + "useDefineForClassFields": true, 5 + "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 + "module": "ESNext", 7 + "skipLibCheck": true, 8 8 9 - /* Bundler mode */ 10 - "moduleResolution": "bundler", 11 - "allowImportingTsExtensions": true, 12 - "resolveJsonModule": true, 13 - "isolatedModules": true, 14 - "noEmit": true, 15 - "jsx": "react-jsx", 9 + /* Bundler mode */ 10 + "moduleResolution": "bundler", 11 + "allowImportingTsExtensions": true, 12 + "resolveJsonModule": true, 13 + "isolatedModules": true, 14 + "noEmit": true, 15 + "jsx": "react-jsx", 16 16 17 - /* Linting */ 18 - "strict": true, 19 - "noUnusedLocals": true, 20 - "noUnusedParameters": true, 21 - "noFallthroughCasesInSwitch": true, 22 - "types": ["@cloudflare/workers-types"] 23 - }, 24 - "include": ["**/*.ts", "**/*.tsx"] 17 + /* Linting */ 18 + "strict": true, 19 + "noUnusedLocals": true, 20 + "noUnusedParameters": true, 21 + "noFallthroughCasesInSwitch": true, 22 + "types": ["@cloudflare/workers-types"] 23 + }, 24 + "include": ["**/*.ts", "**/*.tsx"] 25 25 }
+3 -1
package.json
··· 6 6 "docs" 7 7 ], 8 8 "scripts": { 9 - "dev:cli": "cd packages/cli && bun run dev", 9 + "format:cli": "cd packages/cli && bun run format", 10 + "format:docs": "cd docs && bun run format", 11 + "dev:cli": "cd packages/cli && bun run dev", 10 12 "dev:docs": "cd docs && bun run dev", 11 13 "build:docs": "cd docs && bun run build", 12 14 "build:cli": "cd packages/cli && bun run build",
+1 -31
packages/cli/biome.json
··· 1 1 { 2 2 "$schema": "https://biomejs.dev/schemas/2.3.13/schema.json", 3 - "vcs": { 4 - "enabled": true, 5 - "clientKind": "git", 6 - "useIgnoreFile": true 7 - }, 3 + "extends": ["../../biome.json"], 8 4 "files": { 9 5 "includes": ["**", "!!**/dist"] 10 - }, 11 - "formatter": { 12 - "enabled": true, 13 - "indentStyle": "tab" 14 - }, 15 - "linter": { 16 - "enabled": true, 17 - "rules": { 18 - "recommended": true, 19 - "style": { 20 - "noNonNullAssertion": "off" 21 - } 22 - } 23 - }, 24 - "javascript": { 25 - "formatter": { 26 - "quoteStyle": "double" 27 - } 28 - }, 29 - "assist": { 30 - "enabled": true, 31 - "actions": { 32 - "source": { 33 - "organizeImports": "on" 34 - } 35 - } 36 6 } 37 7 }