@grimoire-rs/indexer 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -9
- package/dist/cli/enrich.d.ts +1 -0
- package/dist/cli/enrich.d.ts.map +1 -1
- package/dist/cli/enrich.js +38 -0
- package/dist/cli/enrich.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +1 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +13 -0
- package/dist/data/index.js.map +1 -1
- package/dist/enrich/checkpoint.d.ts +53 -0
- package/dist/enrich/checkpoint.d.ts.map +1 -0
- package/dist/enrich/checkpoint.js +296 -0
- package/dist/enrich/checkpoint.js.map +1 -0
- package/dist/enrich/index.d.ts +14 -0
- package/dist/enrich/index.d.ts.map +1 -1
- package/dist/enrich/index.js +3 -3
- package/dist/enrich/index.js.map +1 -1
- package/dist/ratings/paging.d.ts +16 -0
- package/dist/ratings/paging.d.ts.map +1 -0
- package/dist/ratings/paging.js +36 -0
- package/dist/ratings/paging.js.map +1 -0
- package/dist/ratings/provider.d.ts +1 -9
- package/dist/ratings/provider.d.ts.map +1 -1
- package/dist/ratings/provider.js +11 -10
- package/dist/ratings/provider.js.map +1 -1
- package/dist/ratings/provider_github.d.ts.map +1 -1
- package/dist/ratings/provider_github.js +2 -1
- package/dist/ratings/provider_github.js.map +1 -1
- package/dist/ratings/provider_gitlab.d.ts.map +1 -1
- package/dist/ratings/provider_gitlab.js +2 -1
- package/dist/ratings/provider_gitlab.js.map +1 -1
- package/dist/ratings/reconcile.d.ts.map +1 -1
- package/dist/ratings/reconcile.js +14 -4
- package/dist/ratings/reconcile.js.map +1 -1
- package/dist/renderer/astro/components/Catalog.js +3 -3
- package/dist/renderer/astro/components/Catalog.tsx +15 -9
- package/dist/renderer/astro/components/CommandField.astro +1 -0
- package/dist/renderer/astro/components/VersionMenu.astro +31 -23
- package/dist/renderer/astro/layouts/Base.astro +212 -264
- package/dist/renderer/astro/pages/p/[...slug].astro +99 -89
- package/dist/renderer/astro/styles/tokens.css +157 -0
- package/dist/validate/adapters/http.d.ts +23 -0
- package/dist/validate/adapters/http.d.ts.map +1 -1
- package/dist/validate/adapters/http.js +12 -1
- package/dist/validate/adapters/http.js.map +1 -1
- package/package.json +1 -1
- package/templates/ci/github-enrich.yml +9 -1
- package/templates/ci/gitlab-enrich.sh +10 -1
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* legacy and the prose reads current — that is the rename, not a mismatch.
|
|
11
11
|
*/
|
|
12
12
|
import { authorizeThread } from "./marker.js";
|
|
13
|
-
import { ForgeError,
|
|
13
|
+
import { ForgeError, at, graphql, nodes, threadBody, stringAt, } from "./provider.js";
|
|
14
|
+
import { PAGE_SIZE } from "./paging.js";
|
|
14
15
|
import { EXIT } from "../cli/exit.js";
|
|
15
16
|
const TYPES = `
|
|
16
17
|
query($path:ID!){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider_gitlab.js","sourceRoot":"","sources":["../../src/ratings/provider_gitlab.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"provider_gitlab.js","sourceRoot":"","sources":["../../src/ratings/provider_gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/ratings/reconcile.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAoB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAe,KAAK,cAAc,EAAqB,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,8BAA8B;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAW3B,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/ratings/reconcile.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAoB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAe,KAAK,cAAc,EAAqB,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,8BAA8B;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAW3B,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA+G/E;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAMvD"}
|
|
@@ -69,12 +69,22 @@ export async function reconcile(input) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
// 4. TALLY — the forge's own scalar counter
|
|
73
|
-
//
|
|
72
|
+
// 4. TALLY — the forge's own scalar counter, for every authorized thread.
|
|
73
|
+
//
|
|
74
|
+
// `up: 0` is published rather than omitted. Omitting it collapsed two
|
|
75
|
+
// different states into one: a ref with no thread, and a ref whose thread
|
|
76
|
+
// exists and has simply not been voted on yet. That distinction is the
|
|
77
|
+
// whole bootstrap — `url` is opaque, so a catalog cannot construct a link
|
|
78
|
+
// to the thread and can only offer the one this document carries. Dropping
|
|
79
|
+
// the row dropped its `url` too, so a fresh index published nothing to vote
|
|
80
|
+
// on, and nobody could cast the first vote from the catalog that would have
|
|
81
|
+
// made the row appear.
|
|
82
|
+
//
|
|
83
|
+
// Absence keeps a meaning, and a sharper one: no authorized thread exists
|
|
84
|
+
// for that ref. A deleted thread leaves `bound`, so it still disappears.
|
|
74
85
|
const fresh = {};
|
|
75
86
|
for (const [ref, thread] of bound) {
|
|
76
|
-
|
|
77
|
-
fresh[ref] = { up: thread.up, target: thread.target, url: thread.url };
|
|
87
|
+
fresh[ref] = { up: thread.up, target: thread.target, url: thread.url };
|
|
78
88
|
}
|
|
79
89
|
// 4b. CARRY FORWARD what a truncated pass never reached.
|
|
80
90
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/ratings/reconcile.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAA0C,MAAM,eAAe,CAAC;AAqCpF,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,0EAA0E;AAC1E,SAAS,YAAY,CAAC,IAAe,EAAE,GAAW;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAiC,CAAC;IAC9D,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjG,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAElD,+EAA+E;IAC/E,IAAI,OAAgC,CAAC;IACrC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2EAA2E;QAC3E,yEAAyE;QACzE,kCAAkC;QAClC,IAAI,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;YAAE,MAAM,GAAG,CAAC;QAC7C,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;QACvB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,GAAG,aAAa,CAAC;IAE5B,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvD,wEAAwE;IACxE,4EAA4E;IAC5E,yEAAyE;IACzE,6CAA6C;IAC7C,EAAE;IACF,sEAAsE;IACtE,2EAA2E;IAC3E,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;oBAAE,MAAM,GAAG,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/ratings/reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -139,7 +139,7 @@ function CardLogo({ pkg }) {
|
|
|
139
139
|
};
|
|
140
140
|
}, [pkg.logo]);
|
|
141
141
|
if (!pkg.logo) {
|
|
142
|
-
return (_jsx("span", { class: "card-logo card-logo-fallback", "aria-hidden": "true", style: { background: `var(--kind-${pkg.kind}, var(--muted))` }, children: pkg.name[0]?.toUpperCase() }));
|
|
142
|
+
return (_jsx("span", { class: "card-logo card-logo-fallback", "aria-hidden": "true", style: { background: `var(--grim-color-kind-${pkg.kind}, var(--grim-color-muted))` }, children: pkg.name[0]?.toUpperCase() }));
|
|
143
143
|
}
|
|
144
144
|
return (_jsxs("span", { class: "card-logo logo-slot", "data-state": state, role: state === "broken" ? "img" : undefined, "aria-label": state === "broken" ? "Logo image unavailable" : undefined, title: state === "broken" ? "Logo image unavailable" : undefined, children: [state === "broken" ? (_jsx(ImageOff, { class: "logo-mark", "aria-hidden": "true" })) : (_jsx(Image, { class: "logo-mark", "aria-hidden": "true" })), _jsx("img", { ref: imgRef, src: withBase(pkg.logo), alt: "", loading: "lazy", onLoad: () => setState("ready"), onError: () => setState("broken") })] }));
|
|
145
145
|
}
|
|
@@ -426,8 +426,8 @@ export default function Catalog({ packages, vscodeExtension, }) {
|
|
|
426
426
|
const hasRatings = packages.some((p) => p.rating);
|
|
427
427
|
// Chips leave the Tab order only while there is a grid to arrow up from.
|
|
428
428
|
const chipTabIndex = shown.length === 0 ? 0 : -1;
|
|
429
|
-
return (_jsxs("section", { class: "catalog", children: [_jsxs("div", { class: "controls", ref: controlsRef, children: [_jsxs("div", { class: "search-field", children: [_jsx("input", { ref: searchRef, type: "search", placeholder: `Search ${counted.length} packages…`, value: query, onInput: (e) => setQuery(e.target.value), onKeyDown: onSearchKeyDown, "aria-label": "Search packages", "aria-keyshortcuts": "/" }), _jsx("kbd", { class: "search-hint", "aria-hidden": "true", children: "/" })] }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Sort by", children: [_jsx("button", { type: "button", class: sort === "name" ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("name"), children: "name" }), _jsx("button", { type: "button", class: sort === "updated" ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("updated"), children: "updated" }), hasRatings && (_jsx("button", { type: "button", class: sort === "rating" ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("rating"), children: "rating" }))] }), _jsx("span", { class: "chip-sep", "aria-hidden": "true" }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Filter by kind", children: [_jsxs("button", { type: "button", class: kind === null ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(null), children: ["all ", _jsx("small", { children: counted.length })] }), kinds.map(([k, count]) => (_jsxs("button", { type: "button", class: kind === k ? `chip active kind-${k}` : `chip kind-${k}`, tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(kind === k ? null : k), children: [k, " ", _jsx("small", { children: count })] }, k)))] }), hasDeprecated && (_jsx("button", { type: "button", class: showDeprecated ? "chip deprecated-toggle active" : "chip deprecated-toggle", "aria-pressed": showDeprecated, title: showDeprecated ? "Hide deprecated packages" : "Show deprecated packages", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setShowDeprecated((on) => !on), children: "deprecated" }))] }), shown.length === 0 ? (_jsx("p", { class: "empty", children: "No packages match." })) : (_jsx("ul", { class: "grid", ref: gridRef, children: shown.map((p) => (_jsxs("li", { class: "card", tabIndex: 0, onKeyDown: onCardKeyDown, children: [_jsxs("div", { class: "card-head", children: [_jsx(CardLogo, { pkg: p }), _jsx("h2", { children: _jsx("a", { href: withBase(`/p/${p.namespace}/${p.name}/`), tabIndex: -1, children: p.name }) }), p.deprecated ? (_jsx("span", { class: "badge deprecated", children: "deprecated" })) : (_jsx("span", { class: `badge kind-${p.kind}`, children: p.kind }))] }), _jsx("p", { class: "namespace", children: p.namespace }), (p.version || p.license || lastUpdated(p) || p.rating) && (_jsxs("div", { class: "meta-row", children: [p.version && _jsxs("span", { class: "pill version", children: ["v", p.version] }), p.license && _jsx("span", { class: "pill license", children: p.license }), p.rating && (_jsxs("span", { class: "pill rating", title: `${p.rating.up} upvote${p.rating.up === 1 ? "" : "s"}`, children: [_jsx(ArrowBigUp, { size: 13, "aria-hidden": "true" }), p.rating.up] })), (() => {
|
|
429
|
+
return (_jsxs("section", { class: "catalog", "data-slot": "catalog", children: [_jsxs("div", { class: "controls", "data-slot": "catalog-toolbar", ref: controlsRef, children: [_jsxs("div", { class: "search-field", "data-slot": "catalog-search", children: [_jsx("input", { ref: searchRef, type: "search", placeholder: `Search ${counted.length} packages…`, value: query, onInput: (e) => setQuery(e.target.value), onKeyDown: onSearchKeyDown, "aria-label": "Search packages", "aria-keyshortcuts": "/" }), _jsx("kbd", { class: "search-hint", "aria-hidden": "true", children: "/" })] }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Sort by", children: [_jsx("button", { type: "button", class: sort === "name" ? "chip active" : "chip", "data-slot": "filter-chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("name"), children: "name" }), _jsx("button", { type: "button", class: sort === "updated" ? "chip active" : "chip", "data-slot": "filter-chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("updated"), children: "updated" }), hasRatings && (_jsx("button", { type: "button", class: sort === "rating" ? "chip active" : "chip", "data-slot": "filter-chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("rating"), children: "rating" }))] }), _jsx("span", { class: "chip-sep", "aria-hidden": "true" }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Filter by kind", children: [_jsxs("button", { type: "button", class: kind === null ? "chip active" : "chip", "data-slot": "filter-chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(null), children: ["all ", _jsx("small", { children: counted.length })] }), kinds.map(([k, count]) => (_jsxs("button", { type: "button", class: kind === k ? `chip active kind-${k}` : `chip kind-${k}`, "data-slot": "filter-chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(kind === k ? null : k), children: [k, " ", _jsx("small", { children: count })] }, k)))] }), hasDeprecated && (_jsx("button", { type: "button", class: showDeprecated ? "chip deprecated-toggle active" : "chip deprecated-toggle", "aria-pressed": showDeprecated, title: showDeprecated ? "Hide deprecated packages" : "Show deprecated packages", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setShowDeprecated((on) => !on), children: "deprecated" }))] }), shown.length === 0 ? (_jsx("p", { class: "empty", children: "No packages match." })) : (_jsx("ul", { class: "grid", ref: gridRef, children: shown.map((p) => (_jsxs("li", { class: "card", "data-slot": "package-card", tabIndex: 0, onKeyDown: onCardKeyDown, children: [_jsxs("div", { class: "card-head", children: [_jsx(CardLogo, { pkg: p }), _jsx("h2", { "data-slot": "package-name", children: _jsx("a", { href: withBase(`/p/${p.namespace}/${p.name}/`), tabIndex: -1, children: p.name }) }), p.deprecated ? (_jsx("span", { class: "badge deprecated", "data-slot": "package-kind", children: "deprecated" })) : (_jsx("span", { class: `badge kind-${p.kind}`, "data-slot": "package-kind", children: p.kind }))] }), _jsx("p", { class: "namespace", children: p.namespace }), (p.version || p.license || lastUpdated(p) || p.rating) && (_jsxs("div", { class: "meta-row", "data-slot": "package-meta", children: [p.version && _jsxs("span", { class: "pill version", children: ["v", p.version] }), p.license && _jsx("span", { class: "pill license", children: p.license }), p.rating && (_jsxs("span", { class: "pill rating", title: `${p.rating.up} upvote${p.rating.up === 1 ? "" : "s"}`, children: [_jsx(ArrowBigUp, { size: 13, "aria-hidden": "true" }), p.rating.up] })), (() => {
|
|
430
430
|
const at = lastUpdated(p);
|
|
431
431
|
return at && timeAgo(at) ? (_jsxs("time", { class: "updated", datetime: at, title: at, children: ["updated ", timeAgo(at)] })) : null;
|
|
432
|
-
})()] })), p.deprecated && (_jsxs("p", { class: "deprecated-strip", children: ["deprecated", p.replacedBy ? ` — replaced by ${p.replacedBy}` : ""] })), p.description && _jsx("p", { class: "description", children: p.description }), p.keywords && p.keywords.length > 0 && (_jsxs("div", { class: "keywords", children: [p.keywords.slice(0, 5).map((kw) => (_jsx("button", { type: "button", class: "chip keyword", tabIndex: -1, onClick: () => setQuery(kw), children: kw }, kw))), p.keywords.length > 5 && (_jsxs("span", { class: "chip keyword overflow", children: ["+", p.keywords.length - 5] }))] })), _jsxs("div", { class: "card-foot", children: [_jsxs("div", { class: "copy-group", children: [_jsx(CopyButton, { command: `grim add --global ${p.ref}`, variant: "global", name: `global add for ${p.name}` }), _jsx(CopyButton, { command: `grim add ${p.ref}`, name: `project add for ${p.name}` }), vscodeUrl(vscodeExtension, p.ref) && (_jsx("a", { class: "copy vscode", href: vscodeUrl(vscodeExtension, p.ref), title: "Open in VS Code", "aria-label": `Open ${p.name} in VS Code`, tabIndex: -1, children: _jsx(BrandMark, { path: mdiMicrosoftVisualStudioCode }) }))] }), p.repository && (_jsx("a", { class: "source", href: p.repository, target: "_blank", rel: "noopener noreferrer", tabIndex: -1, children: "source" }))] })] }, `${p.namespace}/${p.name}`))) }))] }));
|
|
432
|
+
})()] })), p.deprecated && (_jsxs("p", { class: "deprecated-strip", children: ["deprecated", p.replacedBy ? ` — replaced by ${p.replacedBy}` : ""] })), p.description && _jsx("p", { class: "description", children: p.description }), p.keywords && p.keywords.length > 0 && (_jsxs("div", { class: "keywords", "data-slot": "package-keywords", children: [p.keywords.slice(0, 5).map((kw) => (_jsx("button", { type: "button", class: "chip keyword", tabIndex: -1, onClick: () => setQuery(kw), children: kw }, kw))), p.keywords.length > 5 && (_jsxs("span", { class: "chip keyword overflow", children: ["+", p.keywords.length - 5] }))] })), _jsxs("div", { class: "card-foot", children: [_jsxs("div", { class: "copy-group", children: [_jsx(CopyButton, { command: `grim add --global ${p.ref}`, variant: "global", name: `global add for ${p.name}` }), _jsx(CopyButton, { command: `grim add ${p.ref}`, name: `project add for ${p.name}` }), vscodeUrl(vscodeExtension, p.ref) && (_jsx("a", { class: "copy vscode", href: vscodeUrl(vscodeExtension, p.ref), title: "Open in VS Code", "aria-label": `Open ${p.name} in VS Code`, tabIndex: -1, children: _jsx(BrandMark, { path: mdiMicrosoftVisualStudioCode }) }))] }), p.repository && (_jsx("a", { class: "source", href: p.repository, target: "_blank", rel: "noopener noreferrer", tabIndex: -1, children: "source" }))] })] }, `${p.namespace}/${p.name}`))) }))] }));
|
|
433
433
|
}
|
|
@@ -160,7 +160,7 @@ function CardLogo({ pkg }: { pkg: CatalogPackage }) {
|
|
|
160
160
|
<span
|
|
161
161
|
class="card-logo card-logo-fallback"
|
|
162
162
|
aria-hidden="true"
|
|
163
|
-
style={{ background: `var(--kind-${pkg.kind}, var(--muted))` }}
|
|
163
|
+
style={{ background: `var(--grim-color-kind-${pkg.kind}, var(--grim-color-muted))` }}
|
|
164
164
|
>
|
|
165
165
|
{pkg.name[0]?.toUpperCase()}
|
|
166
166
|
</span>
|
|
@@ -512,9 +512,9 @@ export default function Catalog({
|
|
|
512
512
|
const chipTabIndex = shown.length === 0 ? 0 : -1;
|
|
513
513
|
|
|
514
514
|
return (
|
|
515
|
-
<section class="catalog">
|
|
516
|
-
<div class="controls" ref={controlsRef}>
|
|
517
|
-
<div class="search-field">
|
|
515
|
+
<section class="catalog" data-slot="catalog">
|
|
516
|
+
<div class="controls" data-slot="catalog-toolbar" ref={controlsRef}>
|
|
517
|
+
<div class="search-field" data-slot="catalog-search">
|
|
518
518
|
<input
|
|
519
519
|
ref={searchRef}
|
|
520
520
|
type="search"
|
|
@@ -534,6 +534,7 @@ export default function Catalog({
|
|
|
534
534
|
<button
|
|
535
535
|
type="button"
|
|
536
536
|
class={sort === "name" ? "chip active" : "chip"}
|
|
537
|
+
data-slot="filter-chip"
|
|
537
538
|
tabIndex={chipTabIndex}
|
|
538
539
|
onKeyDown={onChipKeyDown}
|
|
539
540
|
onClick={() => setSort("name")}
|
|
@@ -543,6 +544,7 @@ export default function Catalog({
|
|
|
543
544
|
<button
|
|
544
545
|
type="button"
|
|
545
546
|
class={sort === "updated" ? "chip active" : "chip"}
|
|
547
|
+
data-slot="filter-chip"
|
|
546
548
|
tabIndex={chipTabIndex}
|
|
547
549
|
onKeyDown={onChipKeyDown}
|
|
548
550
|
onClick={() => setSort("updated")}
|
|
@@ -553,6 +555,7 @@ export default function Catalog({
|
|
|
553
555
|
<button
|
|
554
556
|
type="button"
|
|
555
557
|
class={sort === "rating" ? "chip active" : "chip"}
|
|
558
|
+
data-slot="filter-chip"
|
|
556
559
|
tabIndex={chipTabIndex}
|
|
557
560
|
onKeyDown={onChipKeyDown}
|
|
558
561
|
onClick={() => setSort("rating")}
|
|
@@ -569,6 +572,7 @@ export default function Catalog({
|
|
|
569
572
|
<button
|
|
570
573
|
type="button"
|
|
571
574
|
class={kind === null ? "chip active" : "chip"}
|
|
575
|
+
data-slot="filter-chip"
|
|
572
576
|
tabIndex={chipTabIndex}
|
|
573
577
|
onKeyDown={onChipKeyDown}
|
|
574
578
|
onClick={() => setKind(null)}
|
|
@@ -580,6 +584,7 @@ export default function Catalog({
|
|
|
580
584
|
key={k}
|
|
581
585
|
type="button"
|
|
582
586
|
class={kind === k ? `chip active kind-${k}` : `chip kind-${k}`}
|
|
587
|
+
data-slot="filter-chip"
|
|
583
588
|
tabIndex={chipTabIndex}
|
|
584
589
|
onKeyDown={onChipKeyDown}
|
|
585
590
|
onClick={() => setKind(kind === k ? null : k)}
|
|
@@ -624,25 +629,26 @@ export default function Catalog({
|
|
|
624
629
|
<li
|
|
625
630
|
key={`${p.namespace}/${p.name}`}
|
|
626
631
|
class="card"
|
|
632
|
+
data-slot="package-card"
|
|
627
633
|
tabIndex={0}
|
|
628
634
|
onKeyDown={onCardKeyDown}
|
|
629
635
|
>
|
|
630
636
|
<div class="card-head">
|
|
631
637
|
<CardLogo pkg={p} />
|
|
632
|
-
<h2>
|
|
638
|
+
<h2 data-slot="package-name">
|
|
633
639
|
<a href={withBase(`/p/${p.namespace}/${p.name}/`)} tabIndex={-1}>
|
|
634
640
|
{p.name}
|
|
635
641
|
</a>
|
|
636
642
|
</h2>
|
|
637
643
|
{p.deprecated ? (
|
|
638
|
-
<span class="badge deprecated">deprecated</span>
|
|
644
|
+
<span class="badge deprecated" data-slot="package-kind">deprecated</span>
|
|
639
645
|
) : (
|
|
640
|
-
<span class={`badge kind-${p.kind}`}>{p.kind}</span>
|
|
646
|
+
<span class={`badge kind-${p.kind}`} data-slot="package-kind">{p.kind}</span>
|
|
641
647
|
)}
|
|
642
648
|
</div>
|
|
643
649
|
<p class="namespace">{p.namespace}</p>
|
|
644
650
|
{(p.version || p.license || lastUpdated(p) || p.rating) && (
|
|
645
|
-
<div class="meta-row">
|
|
651
|
+
<div class="meta-row" data-slot="package-meta">
|
|
646
652
|
{p.version && <span class="pill version">v{p.version}</span>}
|
|
647
653
|
{p.license && <span class="pill license">{p.license}</span>}
|
|
648
654
|
{/* A count and nothing more. The page is prerendered once
|
|
@@ -680,7 +686,7 @@ export default function Catalog({
|
|
|
680
686
|
)}
|
|
681
687
|
{p.description && <p class="description">{p.description}</p>}
|
|
682
688
|
{p.keywords && p.keywords.length > 0 && (
|
|
683
|
-
<div class="keywords">
|
|
689
|
+
<div class="keywords" data-slot="package-keywords">
|
|
684
690
|
{p.keywords.slice(0, 5).map((kw) => (
|
|
685
691
|
<button
|
|
686
692
|
key={kw}
|
|
@@ -28,6 +28,7 @@ const commands: [string, string][] = [
|
|
|
28
28
|
<button
|
|
29
29
|
type="button"
|
|
30
30
|
class:list={["version", { current }]}
|
|
31
|
+
data-slot="version-pill"
|
|
31
32
|
data-copy={pinned}
|
|
32
33
|
data-copy-name={tag === "latest" ? "reference" : `pinned ${tag}`}
|
|
33
34
|
data-menu={menuId}
|
|
@@ -46,33 +47,39 @@ const commands: [string, string][] = [
|
|
|
46
47
|
</div>
|
|
47
48
|
|
|
48
49
|
<style>
|
|
50
|
+
@layer grimoire {
|
|
51
|
+
/* Layered so a user CSS file (unlayered) outranks these rules. Astro
|
|
52
|
+
scopes a component style to `.foo[data-astro-cid-…]` — specificity
|
|
53
|
+
(0,2,0) — which beats a consumer's `.foo` in EITHER source order, so
|
|
54
|
+
source order alone does not make this overridable. Not reindented:
|
|
55
|
+
the wrapper stays a two-line diff. */
|
|
49
56
|
/* No `span` inside: the shared copy script only swaps a label when it
|
|
50
57
|
finds one, so the tag keeps its text and flashes the class instead. */
|
|
51
58
|
.version {
|
|
52
|
-
border:
|
|
53
|
-
border-radius:
|
|
59
|
+
border: var(--grim-border-width) solid var(--grim-color-border);
|
|
60
|
+
border-radius: var(--grim-radius-pill);
|
|
54
61
|
background: transparent;
|
|
55
|
-
padding:
|
|
62
|
+
padding: var(--grim-space-1) var(--grim-space-4);
|
|
56
63
|
font-family: ui-monospace, "SFMono-Regular", monospace;
|
|
57
|
-
font-size:
|
|
58
|
-
color: var(--muted);
|
|
64
|
+
font-size: var(--grim-text-sm);
|
|
65
|
+
color: var(--grim-color-muted);
|
|
59
66
|
white-space: nowrap;
|
|
60
67
|
cursor: pointer;
|
|
61
68
|
}
|
|
62
69
|
.version:hover,
|
|
63
70
|
.version:focus-visible {
|
|
64
|
-
color: var(--accent);
|
|
65
|
-
border-color: var(--accent);
|
|
66
|
-
background: var(--accent-soft);
|
|
71
|
+
color: var(--grim-color-accent);
|
|
72
|
+
border-color: var(--grim-color-accent);
|
|
73
|
+
background: var(--grim-color-accent-soft);
|
|
67
74
|
}
|
|
68
75
|
.version.current {
|
|
69
|
-
color: var(--fg);
|
|
76
|
+
color: var(--grim-color-fg);
|
|
70
77
|
font-weight: 600;
|
|
71
|
-
border-color: var(--accent);
|
|
78
|
+
border-color: var(--grim-color-accent);
|
|
72
79
|
}
|
|
73
80
|
.version.copied {
|
|
74
|
-
color: var(--accent);
|
|
75
|
-
background: var(--accent-soft);
|
|
81
|
+
color: var(--grim-color-accent);
|
|
82
|
+
background: var(--grim-color-accent-soft);
|
|
76
83
|
}
|
|
77
84
|
|
|
78
85
|
.version-menu {
|
|
@@ -82,28 +89,29 @@ const commands: [string, string][] = [
|
|
|
82
89
|
inset: auto;
|
|
83
90
|
margin: 0;
|
|
84
91
|
min-width: 11rem;
|
|
85
|
-
padding:
|
|
86
|
-
background: var(--card);
|
|
87
|
-
border:
|
|
88
|
-
border-radius:
|
|
89
|
-
box-shadow:
|
|
92
|
+
padding: var(--grim-space-2);
|
|
93
|
+
background: var(--grim-color-card);
|
|
94
|
+
border: var(--grim-border-width) solid var(--grim-color-border);
|
|
95
|
+
border-radius: var(--grim-radius-lg);
|
|
96
|
+
box-shadow: var(--grim-shadow-raised);
|
|
90
97
|
}
|
|
91
98
|
.cmd {
|
|
92
99
|
display: block;
|
|
93
100
|
width: 100%;
|
|
94
101
|
border: 0;
|
|
95
|
-
border-radius:
|
|
102
|
+
border-radius: var(--grim-radius-md);
|
|
96
103
|
background: transparent;
|
|
97
|
-
color: var(--muted);
|
|
104
|
+
color: var(--grim-color-muted);
|
|
98
105
|
font: inherit;
|
|
99
|
-
font-size:
|
|
106
|
+
font-size: var(--grim-text-sm);
|
|
100
107
|
text-align: left;
|
|
101
|
-
padding:
|
|
108
|
+
padding: var(--grim-space-2) var(--grim-space-4);
|
|
102
109
|
cursor: pointer;
|
|
103
110
|
}
|
|
104
111
|
.cmd:hover,
|
|
105
112
|
.cmd:focus-visible {
|
|
106
|
-
background: var(--chip-bg);
|
|
107
|
-
color: var(--fg);
|
|
113
|
+
background: var(--grim-color-chip-bg);
|
|
114
|
+
color: var(--grim-color-fg);
|
|
108
115
|
}
|
|
116
|
+
}
|
|
109
117
|
</style>
|