@grove-dev/core 0.4.1 → 0.5.0-next.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.
Files changed (46) hide show
  1. package/dist/awesome-readme.d.ts +63 -0
  2. package/dist/awesome-readme.d.ts.map +1 -0
  3. package/dist/awesome-readme.js +164 -0
  4. package/dist/awesome-readme.js.map +1 -0
  5. package/dist/build-data.d.ts.map +1 -1
  6. package/dist/build-data.js +9 -3
  7. package/dist/build-data.js.map +1 -1
  8. package/dist/collections.d.ts +5 -0
  9. package/dist/collections.d.ts.map +1 -1
  10. package/dist/collections.js +6 -0
  11. package/dist/collections.js.map +1 -1
  12. package/dist/content-body.d.ts +109 -0
  13. package/dist/content-body.d.ts.map +1 -0
  14. package/dist/content-body.js +194 -0
  15. package/dist/content-body.js.map +1 -0
  16. package/dist/contributors.d.ts.map +1 -1
  17. package/dist/contributors.js +9 -0
  18. package/dist/contributors.js.map +1 -1
  19. package/dist/decisions.js +1 -1
  20. package/dist/decisions.js.map +1 -1
  21. package/dist/directory-display.d.ts +16 -0
  22. package/dist/directory-display.d.ts.map +1 -1
  23. package/dist/directory-display.js +85 -0
  24. package/dist/directory-display.js.map +1 -1
  25. package/dist/directory-search.d.ts +14 -1
  26. package/dist/directory-search.d.ts.map +1 -1
  27. package/dist/directory-search.js +65 -7
  28. package/dist/directory-search.js.map +1 -1
  29. package/dist/index.d.ts +7 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +18 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/io.d.ts.map +1 -1
  34. package/dist/io.js +9 -1
  35. package/dist/io.js.map +1 -1
  36. package/dist/markdown.d.ts.map +1 -1
  37. package/dist/markdown.js +10 -0
  38. package/dist/markdown.js.map +1 -1
  39. package/dist/schema.d.ts +127 -44
  40. package/dist/schema.d.ts.map +1 -1
  41. package/dist/schema.js +71 -1
  42. package/dist/schema.js.map +1 -1
  43. package/dist/validate.d.ts.map +1 -1
  44. package/dist/validate.js +9 -3
  45. package/dist/validate.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Awesome-list README generator.
3
+ *
4
+ * Produces a deterministic markdown README in the canonical
5
+ * sindresorhus/awesome format: an H1, the Awesome badge, a Contents
6
+ * TOC, H2 category sections, and `- [Name](URL) - Description.` entries
7
+ * sorted alphabetically within each section.
8
+ *
9
+ * The output is wrapped between `<!-- grove-readme:start -->` /
10
+ * `<!-- grove-readme:end -->` sentinels so a project's hand-written
11
+ * intro, contributing notes, and license section are preserved across
12
+ * regenerations. When the sentinels are absent, a new block is appended.
13
+ */
14
+ export interface AwesomeReadmeRecord {
15
+ slug: string;
16
+ name?: string | undefined;
17
+ description?: string | undefined;
18
+ category?: string | undefined;
19
+ repoUrl?: string | undefined;
20
+ homepageUrl?: string | undefined;
21
+ stars?: number | undefined;
22
+ license?: string | undefined;
23
+ visibility?: string | undefined;
24
+ }
25
+ export interface AwesomeReadmeCategory {
26
+ id: string;
27
+ name: string;
28
+ }
29
+ export interface AwesomeReadmeOptions {
30
+ title?: string | undefined;
31
+ tagline?: string | undefined;
32
+ description?: string | undefined;
33
+ url?: string | undefined;
34
+ browseLabel?: string | undefined;
35
+ intro?: string | undefined;
36
+ showBadge?: boolean | undefined;
37
+ showToc?: boolean | undefined;
38
+ showBrowseLink?: boolean | undefined;
39
+ }
40
+ export interface AwesomeReadmeInput {
41
+ site: {
42
+ name: string;
43
+ tagline?: string | undefined;
44
+ description?: string | undefined;
45
+ url?: string | undefined;
46
+ repoUrl?: string | undefined;
47
+ };
48
+ records: AwesomeReadmeRecord[];
49
+ categories: AwesomeReadmeCategory[];
50
+ generatedAt: string;
51
+ readme?: AwesomeReadmeOptions | undefined;
52
+ }
53
+ export declare const AWESOME_README_START = "<!-- grove-readme:start -->";
54
+ export declare const AWESOME_README_END = "<!-- grove-readme:end -->";
55
+ export declare function buildAwesomeReadme(input: AwesomeReadmeInput): string;
56
+ export interface AwesomeReadmeSections {
57
+ before: string;
58
+ entries: string;
59
+ after: string;
60
+ }
61
+ export declare function parseAwesomeReadmeSections(readme: string): AwesomeReadmeSections;
62
+ export declare function injectAwesomeReadmeBlock(readme: string, block: string): string;
63
+ //# sourceMappingURL=awesome-readme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awesome-readme.d.ts","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC3C;AAED,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAClE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AA6D9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAiFpE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAchF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Awesome-list README generator.
3
+ *
4
+ * Produces a deterministic markdown README in the canonical
5
+ * sindresorhus/awesome format: an H1, the Awesome badge, a Contents
6
+ * TOC, H2 category sections, and `- [Name](URL) - Description.` entries
7
+ * sorted alphabetically within each section.
8
+ *
9
+ * The output is wrapped between `<!-- grove-readme:start -->` /
10
+ * `<!-- grove-readme:end -->` sentinels so a project's hand-written
11
+ * intro, contributing notes, and license section are preserved across
12
+ * regenerations. When the sentinels are absent, a new block is appended.
13
+ */
14
+ export const AWESOME_README_START = "<!-- grove-readme:start -->";
15
+ export const AWESOME_README_END = "<!-- grove-readme:end -->";
16
+ const SENTINEL_PATTERN = /<!--\s*grove-readme:start\s*-->[\s\S]*?<!--\s*grove-readme:end\s*-->/;
17
+ function normalizeDescription(value) {
18
+ if (!value)
19
+ return "";
20
+ const collapsed = value.replace(/\s+/g, " ").trim();
21
+ const stripped = collapsed.replace(/[.!?…]+\s*$/u, "");
22
+ return stripped;
23
+ }
24
+ function entryUrl(record) {
25
+ return record.homepageUrl ?? record.repoUrl ?? "";
26
+ }
27
+ function entryLabel(record) {
28
+ return record.name?.trim() || record.slug.trim();
29
+ }
30
+ function sortByName(a, b) {
31
+ return entryLabel(a).localeCompare(entryLabel(b), undefined, {
32
+ sensitivity: "base",
33
+ });
34
+ }
35
+ function categoryDisplayName(id, categories) {
36
+ const match = categories.find((c) => c.id === id);
37
+ if (match)
38
+ return match.name;
39
+ return id
40
+ .split("-")
41
+ .map((part) => (part ? part[0].toUpperCase() + part.slice(1) : ""))
42
+ .join(" ");
43
+ }
44
+ function categoryAnchor(name) {
45
+ return name
46
+ .toLowerCase()
47
+ .replace(/[^a-z0-9\s-]/g, "")
48
+ .trim()
49
+ .replace(/\s+/g, "-");
50
+ }
51
+ function buildEntryLine(record) {
52
+ const label = entryLabel(record);
53
+ const url = entryUrl(record);
54
+ const desc = normalizeDescription(record.description);
55
+ const link = url ? `[${label}](${url})` : label;
56
+ return desc ? `- ${link} - ${desc}.` : `- ${link}`;
57
+ }
58
+ function isVisible(record) {
59
+ return record.visibility !== "hide" && record.visibility !== "remove";
60
+ }
61
+ function hasLabel(record) {
62
+ return Boolean(record.name?.trim() || record.slug?.trim());
63
+ }
64
+ export function buildAwesomeReadme(input) {
65
+ const visible = input.records.filter((r) => isVisible(r) && hasLabel(r));
66
+ const opts = input.readme ?? {};
67
+ const showBadge = opts.showBadge !== false;
68
+ const showToc = opts.showToc !== false;
69
+ const showBrowseLink = opts.showBrowseLink !== false;
70
+ const declaredIds = input.categories.map((c) => c.id);
71
+ const usedIds = new Set();
72
+ for (const record of visible) {
73
+ if (record.category)
74
+ usedIds.add(record.category);
75
+ }
76
+ const orderedIds = [];
77
+ for (const id of declaredIds) {
78
+ if (usedIds.has(id)) {
79
+ orderedIds.push(id);
80
+ usedIds.delete(id);
81
+ }
82
+ }
83
+ for (const id of usedIds)
84
+ orderedIds.push(id);
85
+ const grouped = new Map();
86
+ for (const record of visible) {
87
+ const id = record.category ?? "other";
88
+ if (!grouped.has(id))
89
+ grouped.set(id, []);
90
+ grouped.get(id).push(record);
91
+ }
92
+ for (const list of grouped.values())
93
+ list.sort(sortByName);
94
+ const title = opts.title ?? input.site.name;
95
+ const tagline = opts.tagline ?? opts.description ?? input.site.tagline ?? input.site.description;
96
+ const browseUrl = opts.url ?? input.site.url;
97
+ const browseLabel = opts.browseLabel ?? "Browse the full directory →";
98
+ const lines = [];
99
+ lines.push(`# ${title}`);
100
+ lines.push("");
101
+ if (showBadge) {
102
+ lines.push("[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)");
103
+ lines.push("");
104
+ }
105
+ if (tagline) {
106
+ lines.push(tagline);
107
+ lines.push("");
108
+ }
109
+ if (showBrowseLink && browseUrl) {
110
+ lines.push(`${browseLabel} ${browseUrl}`);
111
+ lines.push("");
112
+ }
113
+ if (opts.intro) {
114
+ const introLines = opts.intro.replace(/\n+$/, "").split("\n");
115
+ lines.push(...introLines);
116
+ lines.push("");
117
+ }
118
+ if (showToc) {
119
+ lines.push("## Contents");
120
+ lines.push("");
121
+ for (const id of orderedIds) {
122
+ const name = categoryDisplayName(id, input.categories);
123
+ lines.push(`- [${name}](#${categoryAnchor(name)})`);
124
+ }
125
+ lines.push("");
126
+ }
127
+ for (const id of orderedIds) {
128
+ const name = categoryDisplayName(id, input.categories);
129
+ const records = grouped.get(id) ?? [];
130
+ if (records.length === 0)
131
+ continue;
132
+ lines.push(`## ${name}`);
133
+ lines.push("");
134
+ for (const record of records)
135
+ lines.push(buildEntryLine(record));
136
+ lines.push("");
137
+ }
138
+ return lines.join("\n").replace(/\n+$/, "\n");
139
+ }
140
+ export function parseAwesomeReadmeSections(readme) {
141
+ const match = readme.match(SENTINEL_PATTERN);
142
+ if (!match || match.index === undefined) {
143
+ return { before: readme, entries: "", after: "" };
144
+ }
145
+ const start = match.index;
146
+ const end = match.index + match[0].length;
147
+ const before = readme.slice(0, start);
148
+ const inner = match[0];
149
+ const entriesStart = inner.indexOf(AWESOME_README_START) + AWESOME_README_START.length;
150
+ const entriesEnd = inner.lastIndexOf(AWESOME_README_END);
151
+ const entries = inner.slice(entriesStart, entriesEnd);
152
+ const after = readme.slice(end);
153
+ return { before, entries, after };
154
+ }
155
+ export function injectAwesomeReadmeBlock(readme, block) {
156
+ const trimmed = block.replace(/\n+$/, "\n");
157
+ const wrapped = `${AWESOME_README_START}\n${trimmed}${AWESOME_README_END}`;
158
+ if (SENTINEL_PATTERN.test(readme)) {
159
+ return readme.replace(SENTINEL_PATTERN, wrapped);
160
+ }
161
+ const trailing = readme.endsWith("\n") ? readme : `${readme}\n`;
162
+ return `${trailing}\n${wrapped}\n`;
163
+ }
164
+ //# sourceMappingURL=awesome-readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awesome-readme.js","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-data.d.ts","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAgErB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAmCD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAC5B,GAAG,SAAgB,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAgPzB"}
1
+ {"version":3,"file":"build-data.d.ts","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAgErB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAmCD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAC5B,GAAG,SAAgB,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CA0PzB"}
@@ -47,7 +47,7 @@ function applyDecision(record, visibilityById) {
47
47
  async function loadDecisionVisibility(decisionsPath, cwd) {
48
48
  try {
49
49
  const raw = await readFile(resolve(cwd, decisionsPath), "utf8");
50
- const parsed = decisionsFileSchema.parse(parseYaml(raw) ?? {});
50
+ const parsed = decisionsFileSchema.parse(parseYaml(raw, { schema: "core" }) ?? {});
51
51
  const decisions = unwrapDecisions(parsed);
52
52
  const out = new Map();
53
53
  for (const d of decisions)
@@ -62,7 +62,7 @@ async function loadDecisionVisibility(decisionsPath, cwd) {
62
62
  async function loadTaxonomyFile(cwd, taxonomyDir, filename) {
63
63
  try {
64
64
  const text = await readFile(resolve(cwd, taxonomyDir, filename), "utf8");
65
- const raw = parseYaml(text);
65
+ const raw = parseYaml(text, { schema: "core" });
66
66
  if (!Array.isArray(raw))
67
67
  return [];
68
68
  return raw
@@ -96,7 +96,7 @@ export async function generate(cwd = process.cwd(), config) {
96
96
  const fileSlug = basename(file, ".yml");
97
97
  try {
98
98
  const text = await readFile(join(recordsDir, file), "utf8");
99
- const raw = (parseYaml(text) ?? {});
99
+ const raw = (parseYaml(text, { schema: "core" }) ?? {});
100
100
  if (!raw.kind)
101
101
  raw.kind = expectedKind;
102
102
  const normalized = recordsFileSchema.parse(raw);
@@ -218,7 +218,13 @@ export async function generate(cwd = process.cwd(), config) {
218
218
  categories: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "categories.yml"),
219
219
  stacks: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "stacks.yml"),
220
220
  platforms: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "platforms.yml"),
221
+ // Curated tag vocabulary (data/taxonomy/topics.yml). Optional —
222
+ // older sites without the file simply get an empty list. The
223
+ // browse dropdown filters its Tag facet against this list so
224
+ // arbitrary GitHub topics don't pollute the dropdown.
225
+ topics: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "topics.yml"),
221
226
  distributionChannels: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "distribution-channels.yml"),
227
+ licenses: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, "licenses.yml"),
222
228
  };
223
229
  const siteConfigPayload = {
224
230
  blueprint: cfg.blueprint,
@@ -1 +1 @@
1
- {"version":3,"file":"build-data.js","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-data.js","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ export interface CollectionQuery {
26
26
  licenses?: string[];
27
27
  kinds?: string[];
28
28
  excludeStatuses?: string[];
29
+ /** Minimum GitHub star count. Entries below this are excluded. */
30
+ minStars?: number;
31
+ /** Minimum GitHub fork count. Entries below this are excluded. */
32
+ minForks?: number;
29
33
  q?: string;
30
34
  }
31
35
  export interface CollectionRanking {
@@ -68,6 +72,7 @@ export interface CollectionEntry {
68
72
  license?: string;
69
73
  status?: string;
70
74
  stars?: number;
75
+ forks?: number;
71
76
  pushedAt?: string;
72
77
  curationScore?: number;
73
78
  activityScore?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,aAAa,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,eAAe,GACrB,eAAe,EAAE,CA+BnB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,EAAE,iBAAiB,GACzB,eAAe,EAAE,CAcnB"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,GAAG,EAAE,aAAa,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,eAAe,GACrB,eAAe,EAAE,CAqCnB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,EAAE,iBAAiB,GACzB,eAAe,EAAE,CAcnB"}
@@ -42,6 +42,12 @@ export function filterEntries(entries, query) {
42
42
  query.excludeStatuses.includes(entry.status ?? "")) {
43
43
  return false;
44
44
  }
45
+ if (query.minStars != null && (entry.stars ?? 0) < query.minStars) {
46
+ return false;
47
+ }
48
+ if (query.minForks != null && (entry.forks ?? 0) < query.minForks) {
49
+ return false;
50
+ }
45
51
  if (query.q) {
46
52
  const hay = `${entry.title} ${entry.description}`.toLowerCase();
47
53
  if (!hay.includes(query.q.toLowerCase()))
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAkEH,MAAM,UAAU,aAAa,CAC3B,OAA0B,EAC1B,KAAsB;IAEtB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClE,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QACpE,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,KAAK,CAAC,eAAe,EAAE,MAAM;YAC7B,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAClD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAA0B,EAC1B,OAA0B;IAE1B,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,CAAkB;IAC/B,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,CAAkB;IACrC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ;QACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;AACtD,CAAC;AAED,SAAS,SAAS,CAAC,CAAqB;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Content body helpers — pure, dependency-free logic for reading and
3
+ * shaping the Markdown sidecar that sits next to each record.
4
+ *
5
+ * Five concerns live here, all framework-agnostic so any renderer
6
+ * (Astro today, future options) can compose them:
7
+ *
8
+ * 1. `resolveContentPath(contentPath, candidates?)`
9
+ * Locate a `ProjectRecord.content` path on disk. The candidates
10
+ * list mirrors the conventions a CLI-scaffolded project uses
11
+ * (`./content/...`, bare `content/...`, the legacy `apps/example`
12
+ * form for older workspaces). Returns the first existing absolute
13
+ * path, or null.
14
+ *
15
+ * 2. `readContentFile(contentPath, candidates?)`
16
+ * Combine resolve + read + frontmatter strip. Returns
17
+ * `{ body, frontmatter }` where `body` is the Markdown without its
18
+ * leading `---...---` block and `frontmatter` is the YAML text
19
+ * between the fences (or empty string when there's no frontmatter).
20
+ *
21
+ * 3. `stripFrontmatter(text)` — single source of truth for the
22
+ * leading-YAML-block rule. Used by `readContentFile`; also
23
+ * exported for consumers who already have the file contents in
24
+ * memory.
25
+ *
26
+ * 4. `extractToc(body, { maxDepth })` — pull h2/h3 headings out of a
27
+ * body so a record page can render a Table-of-Contents. IDs go
28
+ * through `slug.uniqueSlug` so they match the IDs the markdown
29
+ * renderer will emit (and so two TOC entries with the same
30
+ * label get `foo`, `foo-2`, `foo-3` rather than colliding).
31
+ *
32
+ * 5. `readingMetrics(body, { wpm })` — word count + minutes for the
33
+ * "X min read" pill on a detail page. Returns zeros (not throws)
34
+ * for empty input.
35
+ *
36
+ * Why a separate module instead of tacking these onto `markdown.ts`?
37
+ * That file is the **awesome-list importer** (parses READMEs into
38
+ * Grove records). Conflating record-side rendering helpers with
39
+ * importer-side parsing helpers would re-create the
40
+ * "what does this file do?" confusion that already exists between
41
+ * `parseReadme.ts` and `markdown.ts`.
42
+ */
43
+ /**
44
+ * Resolve a record's `content` path against a list of candidate
45
+ * roots. Returns the absolute path of the first existing candidate,
46
+ * or null when none match.
47
+ */
48
+ export declare function resolveContentPath(contentPath: string, candidates?: string[]): string | null;
49
+ /**
50
+ * Strip a leading YAML frontmatter block (`---\n...\n---`) from a
51
+ * Markdown string. Returns the body with the frontmatter removed;
52
+ * callers that need the frontmatter contents should use
53
+ * `readContentFile` instead.
54
+ *
55
+ * Restricts the search to the first 200 lines so a `---` later in
56
+ * the document (e.g. as a horizontal rule) isn't mistaken for the
57
+ * closing fence.
58
+ */
59
+ export declare function stripFrontmatter(text: string): string;
60
+ export interface ReadContentFileResult {
61
+ /** Markdown body with frontmatter stripped. */
62
+ body: string;
63
+ /** Raw YAML text between the frontmatter fences (no fences, no trim). */
64
+ frontmatter: string;
65
+ /** Absolute path the file was resolved from. */
66
+ path: string;
67
+ }
68
+ /**
69
+ * Read a record's content file from disk and split it into
70
+ * frontmatter + body. Returns null when the file can't be located.
71
+ */
72
+ export declare function readContentFile(contentPath: string, candidates?: string[]): ReadContentFileResult | null;
73
+ export interface TocEntry {
74
+ /** Display text of the heading (Markdown syntax stripped). */
75
+ text: string;
76
+ /** Stable anchor id (kebab-case, collision-suffixed). */
77
+ id: string;
78
+ /** Heading depth — 2 or 3 by default. */
79
+ depth: 2 | 3 | 4 | 5 | 6;
80
+ }
81
+ export interface ExtractTocOptions {
82
+ /** Highest heading depth to include (default 2 → only `##` entries). */
83
+ maxDepth?: 2 | 3 | 4 | 5 | 6;
84
+ }
85
+ /**
86
+ * Pull a flat list of `{ text, id, depth }` out of a Markdown body,
87
+ * skipping any leading frontmatter block. ID collisions are resolved
88
+ * via `uniqueSlug` so the returned IDs match what a markdown→HTML
89
+ * renderer (configured with the same slug rules) will emit.
90
+ */
91
+ export declare function extractToc(body: string, options?: ExtractTocOptions): TocEntry[];
92
+ export interface ReadingMetrics {
93
+ /** Whitespace-separated token count of the body. */
94
+ wordCount: number;
95
+ /** Reading time in minutes, rounded up, never less than 1. */
96
+ minutes: number;
97
+ }
98
+ export interface ReadingMetricsOptions {
99
+ /** Words-per-minute baseline (default 200). */
100
+ wpm?: number;
101
+ }
102
+ /**
103
+ * Word count + minutes for "X min read". Whitespace-only and empty
104
+ * bodies return `{ wordCount: 0, minutes: 1 }` — the `minutes: 1`
105
+ * floor prevents detail pages from rendering "0 min" for short
106
+ * placeholder bodies.
107
+ */
108
+ export declare function readingMetrics(body: string, options?: ReadingMetricsOptions): ReadingMetrics;
109
+ //# sourceMappingURL=content-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-body.d.ts","sourceRoot":"","sources":["../src/content-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AA8BH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,GAAG,IAAI,CAMf;AAID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAID,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,qBAAqB,GAAG,IAAI,CAoB9B;AA+BD,MAAM,WAAW,QAAQ;IACvB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,QAAQ,EAAE,CAgBZ;AAID,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAOhB"}