From 9765f25bd8c9d436c537b9593ebcdc9b12a0633b Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Thu, 21 Mar 2024 20:13:12 -0700 Subject: [PATCH 1/2] show stars in header --- docs/style.css | 4 ++++ observablehq.config.ts | 29 ++++++++++++++++++++++++++--- package.json | 2 ++ yarn.lock | 10 ++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/style.css b/docs/style.css index 656749416..b2a04c7df 100644 --- a/docs/style.css +++ b/docs/style.css @@ -21,6 +21,10 @@ content: "\2197"; } +#observablehq-header a[target="_blank"][data-decoration]::after { + content: attr(data-decoration); +} + #observablehq-header a[target="_blank"]:not(:hover, :focus)::after { color: var(--theme-foreground-muted); } diff --git a/observablehq.config.ts b/observablehq.config.ts index 4dc8c1f01..3b915e1f5 100644 --- a/observablehq.config.ts +++ b/observablehq.config.ts @@ -1,3 +1,7 @@ +import {formatPrefix} from "d3-format"; + +const {stargazers_count} = await github("/repos/observablehq/framework").catch(() => ({stargazers_count: 4242})); + export default { output: "docs/.observablehq/dist", title: "Observable Framework", @@ -106,9 +110,14 @@ export default { Observable Framework - - ${process.env.npm_package_version} - GitHub + + ${ + process.env.npm_package_version + } + GitHub️ ${formatPrefix( + ".1s", + 1000 + )(stargazers_count)} `, @@ -116,3 +125,17 @@ export default { style: "style.css", search: true }; + +async function github( + path: string, + { + authorization = process.env.GITHUB_TOKEN && `token ${process.env.GITHUB_TOKEN}`, + accept = "application/vnd.github.v3+json" + } = {} +) { + const url = new URL(path, "https://api.github.com"); + const headers = {...(authorization && {authorization}), accept}; + const response = await fetch(url, {headers}); + if (!response.ok) throw new Error(`fetch error: ${response.status} ${url}`); + return await response.json(); +} diff --git a/package.json b/package.json index 6ffcf1c0a..4e9feb31a 100644 --- a/package.json +++ b/package.json @@ -90,6 +90,7 @@ "devDependencies": { "@types/cross-spawn": "^6.0.6", "@types/d3-array": "^3.2.1", + "@types/d3-format": "^3.0.4", "@types/he": "^1.2.3", "@types/jsdom": "^21.1.6", "@types/markdown-it": "^13.0.2", @@ -107,6 +108,7 @@ "chai-http": "^4.4.0", "concurrently": "^8.2.2", "d3-dsv": "^3.0.1", + "d3-format": "^3.1.0", "eslint": "^8.50.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", diff --git a/yarn.lock b/yarn.lock index 45b8690fb..abe8ed633 100644 --- a/yarn.lock +++ b/yarn.lock @@ -518,6 +518,11 @@ resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== +"@types/d3-format@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + "@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" @@ -1209,6 +1214,11 @@ d3-dsv@^3.0.1: iconv-lite "0.6" rw "1" +d3-format@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + d3-require@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/d3-require/-/d3-require-1.3.0.tgz#2b97f5e2ebcb64ac0c63c11f30056aea1c74f0ec" From b1deb39f850203feb7f6a5ceac4c36a2419df7a5 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 22 Mar 2024 08:15:12 -0700 Subject: [PATCH 2/2] throw in ci --- observablehq.config.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/observablehq.config.ts b/observablehq.config.ts index 3b915e1f5..aaa10f6e7 100644 --- a/observablehq.config.ts +++ b/observablehq.config.ts @@ -1,6 +1,12 @@ import {formatPrefix} from "d3-format"; -const {stargazers_count} = await github("/repos/observablehq/framework").catch(() => ({stargazers_count: 4242})); +let stargazers_count: number; +try { + ({stargazers_count} = await github("/repos/observablehq/framework")); +} catch (error) { + if (process.env.CI) throw error; + stargazers_count = NaN; +} export default { output: "docs/.observablehq/dist", @@ -114,10 +120,9 @@ export default { ${ process.env.npm_package_version } - GitHub️ ${formatPrefix( - ".1s", - 1000 - )(stargazers_count)} + GitHub️ ${ + stargazers_count ? formatPrefix(".1s", 1000)(stargazers_count) : "" + } `,