@grove-dev/core 0.7.0 → 0.9.0
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/dist/audit.d.ts +3 -3
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +25 -6
- package/dist/audit.js.map +1 -1
- package/dist/awesome-readme.d.ts.map +1 -1
- package/dist/awesome-readme.js +31 -31
- package/dist/awesome-readme.js.map +1 -1
- package/dist/build-data.d.ts +1 -1
- package/dist/build-data.d.ts.map +1 -1
- package/dist/build-data.js +110 -80
- package/dist/build-data.js.map +1 -1
- package/dist/candidate.d.ts +34 -0
- package/dist/candidate.d.ts.map +1 -0
- package/dist/candidate.js +128 -0
- package/dist/candidate.js.map +1 -0
- package/dist/collections-io.d.ts +1 -1
- package/dist/collections-io.js +8 -8
- package/dist/collections-io.js.map +1 -1
- package/dist/collections.d.ts +2 -2
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js +8 -9
- package/dist/collections.js.map +1 -1
- package/dist/collector.d.ts +1 -1
- package/dist/collector.d.ts.map +1 -1
- package/dist/collector.js +2 -2
- package/dist/collector.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/content-body.d.ts.map +1 -1
- package/dist/content-body.js +22 -22
- package/dist/content-body.js.map +1 -1
- package/dist/contributors.d.ts.map +1 -1
- package/dist/contributors.js +22 -23
- package/dist/contributors.js.map +1 -1
- package/dist/decisions.d.ts +1 -1
- package/dist/decisions.d.ts.map +1 -1
- package/dist/decisions.js +18 -20
- package/dist/decisions.js.map +1 -1
- package/dist/directory-client.d.ts +6 -4
- package/dist/directory-client.d.ts.map +1 -1
- package/dist/directory-client.js +9 -4
- package/dist/directory-client.js.map +1 -1
- package/dist/directory-facets.d.ts +1 -1
- package/dist/directory-facets.d.ts.map +1 -1
- package/dist/directory-facets.js +35 -17
- package/dist/directory-facets.js.map +1 -1
- package/dist/directory-filter-keys.d.ts +53 -0
- package/dist/directory-filter-keys.d.ts.map +1 -0
- package/dist/directory-filter-keys.js +66 -0
- package/dist/directory-filter-keys.js.map +1 -0
- package/dist/directory-format.d.ts.map +1 -1
- package/dist/directory-format.js +15 -15
- package/dist/directory-format.js.map +1 -1
- package/dist/directory-lenses.d.ts +1 -1
- package/dist/directory-lenses.d.ts.map +1 -1
- package/dist/directory-lenses.js +66 -61
- package/dist/directory-lenses.js.map +1 -1
- package/dist/directory-repo.js +2 -2
- package/dist/directory-scores.d.ts.map +1 -1
- package/dist/directory-scores.js +25 -25
- package/dist/directory-scores.js.map +1 -1
- package/dist/directory-search.d.ts +4 -4
- package/dist/directory-search.d.ts.map +1 -1
- package/dist/directory-search.js +129 -110
- package/dist/directory-search.js.map +1 -1
- package/dist/directory-taxonomy.d.ts +1 -1
- package/dist/directory-taxonomy.d.ts.map +1 -1
- package/dist/directory-taxonomy.js +2 -2
- package/dist/directory-taxonomy.js.map +1 -1
- package/dist/enrich.d.ts.map +1 -1
- package/dist/enrich.js +15 -12
- package/dist/enrich.js.map +1 -1
- package/dist/evidence.d.ts +33 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +181 -0
- package/dist/evidence.js.map +1 -0
- package/dist/github-client.js +6 -6
- package/dist/github.d.ts +9 -1
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +40 -13
- package/dist/github.js.map +1 -1
- package/dist/health.d.ts +1 -1
- package/dist/health.js +44 -44
- package/dist/host.js +2 -2
- package/dist/import-types.d.ts +24 -0
- package/dist/import-types.d.ts.map +1 -0
- package/dist/import-types.js +2 -0
- package/dist/import-types.js.map +1 -0
- package/dist/import-write.d.ts +12 -0
- package/dist/import-write.d.ts.map +1 -0
- package/dist/import-write.js +39 -0
- package/dist/import-write.js.map +1 -0
- package/dist/importer.d.ts +5 -3
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +4 -2
- package/dist/importer.js.map +1 -1
- package/dist/index.d.ts +74 -63
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -75
- package/dist/index.js.map +1 -1
- package/dist/io.js +8 -8
- package/dist/llms.d.ts +1 -1
- package/dist/llms.d.ts.map +1 -1
- package/dist/llms.js +65 -64
- package/dist/llms.js.map +1 -1
- package/dist/markdown.d.ts +3 -33
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +2 -39
- package/dist/markdown.js.map +1 -1
- package/dist/og-image.d.ts +8 -8
- package/dist/og-image.d.ts.map +1 -1
- package/dist/og-image.js +91 -84
- package/dist/og-image.js.map +1 -1
- package/dist/page-document.d.ts +8 -8
- package/dist/page-document.d.ts.map +1 -1
- package/dist/page-document.js +48 -54
- package/dist/page-document.js.map +1 -1
- package/dist/parseReadme.d.ts.map +1 -1
- package/dist/parseReadme.js +9 -11
- package/dist/parseReadme.js.map +1 -1
- package/dist/prepare.d.ts +5 -5
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +32 -38
- package/dist/prepare.js.map +1 -1
- package/dist/readme-health.d.ts +33 -0
- package/dist/readme-health.d.ts.map +1 -0
- package/dist/readme-health.js +88 -0
- package/dist/readme-health.js.map +1 -0
- package/dist/related.d.ts +1 -1
- package/dist/repository-health.d.ts +11 -0
- package/dist/repository-health.d.ts.map +1 -0
- package/dist/repository-health.js +94 -0
- package/dist/repository-health.js.map +1 -0
- package/dist/schema.d.ts +72 -30
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +156 -144
- package/dist/schema.js.map +1 -1
- package/dist/site-artifacts.js +1 -1
- package/dist/sitemap.d.ts +2 -2
- package/dist/sitemap.d.ts.map +1 -1
- package/dist/sitemap.js +39 -39
- package/dist/sitemap.js.map +1 -1
- package/dist/slug.js +4 -4
- package/dist/sync-icons.js +15 -15
- package/dist/taxonomy-inference.d.ts +27 -0
- package/dist/taxonomy-inference.d.ts.map +1 -0
- package/dist/taxonomy-inference.js +38 -0
- package/dist/taxonomy-inference.js.map +1 -0
- package/dist/validate.d.ts +3 -3
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +73 -62
- package/dist/validate.js.map +1 -1
- package/dist/yaml.d.ts +47 -0
- package/dist/yaml.d.ts.map +1 -0
- package/dist/yaml.js +56 -0
- package/dist/yaml.js.map +1 -0
- package/package.json +6 -1
package/dist/build-data.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { mkdir, readdir, readFile, writeFile } from
|
|
2
|
-
import { basename, join, resolve } from
|
|
3
|
-
import { parse as parseYaml } from
|
|
4
|
-
import {
|
|
5
|
-
import { classifyHealth } from
|
|
6
|
-
import {
|
|
1
|
+
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { basename, join, resolve } from 'node:path';
|
|
3
|
+
import { parse as parseYaml } from 'yaml';
|
|
4
|
+
import { loadConfig } from './config.js';
|
|
5
|
+
import { classifyHealth } from './health.js';
|
|
6
|
+
import { blueprintKind, decisionsFileSchema, healthFileSchema, overridesFileSchema, recordsFileSchema, toIndexRecord, unwrapDecisions, unwrapHealth, unwrapOverrides, } from './schema.js';
|
|
7
7
|
/**
|
|
8
8
|
* Apply a minimal decisions.yml override to a normalized record. The
|
|
9
9
|
* human curation layer is the single source of truth for visibility:
|
|
@@ -30,14 +30,17 @@ function applyDecision(record, visibilityById) {
|
|
|
30
30
|
const override = visibilityById.get(record.slug);
|
|
31
31
|
if (!override)
|
|
32
32
|
return record;
|
|
33
|
-
if (record.kind ===
|
|
33
|
+
if (record.kind === 'project') {
|
|
34
34
|
const existing = record.health;
|
|
35
35
|
// Fabricate a default "no signals" health block via the canonical
|
|
36
36
|
// classifier. Keeps the threshold/format in lockstep with the rest
|
|
37
37
|
// of the package — if `classifyHealth` ever changes its unknown
|
|
38
38
|
// shape, this fabrication updates automatically.
|
|
39
39
|
const fabricated = classifyHealth(record.slug).health;
|
|
40
|
-
const merged = {
|
|
40
|
+
const merged = {
|
|
41
|
+
...(existing ?? fabricated),
|
|
42
|
+
visibility: override,
|
|
43
|
+
};
|
|
41
44
|
return { ...record, health: merged };
|
|
42
45
|
}
|
|
43
46
|
// Resource-hub / ecosystem-map: no `health` block; the top-level
|
|
@@ -55,8 +58,8 @@ function applyDecision(record, visibilityById) {
|
|
|
55
58
|
*/
|
|
56
59
|
async function loadHealthEntries(healthPath, cwd) {
|
|
57
60
|
try {
|
|
58
|
-
const raw = await readFile(resolve(cwd, healthPath),
|
|
59
|
-
const parsed = healthFileSchema.parse(parseYaml(raw, { schema:
|
|
61
|
+
const raw = await readFile(resolve(cwd, healthPath), 'utf8');
|
|
62
|
+
const parsed = healthFileSchema.parse(parseYaml(raw, { schema: 'core' }) ?? {});
|
|
60
63
|
const out = new Map();
|
|
61
64
|
for (const entry of unwrapHealth(parsed))
|
|
62
65
|
out.set(entry.id, entry.health);
|
|
@@ -73,8 +76,8 @@ async function loadHealthEntries(healthPath, cwd) {
|
|
|
73
76
|
*/
|
|
74
77
|
async function loadOverridePatches(overridesPath, cwd) {
|
|
75
78
|
try {
|
|
76
|
-
const raw = await readFile(resolve(cwd, overridesPath),
|
|
77
|
-
const parsed = overridesFileSchema.parse(parseYaml(raw, { schema:
|
|
79
|
+
const raw = await readFile(resolve(cwd, overridesPath), 'utf8');
|
|
80
|
+
const parsed = overridesFileSchema.parse(parseYaml(raw, { schema: 'core' }) ?? {});
|
|
78
81
|
const out = new Map();
|
|
79
82
|
for (const entry of unwrapOverrides(parsed))
|
|
80
83
|
out.set(entry.id, entry.patch);
|
|
@@ -86,8 +89,8 @@ async function loadOverridePatches(overridesPath, cwd) {
|
|
|
86
89
|
}
|
|
87
90
|
async function loadDecisionVisibility(decisionsPath, cwd) {
|
|
88
91
|
try {
|
|
89
|
-
const raw = await readFile(resolve(cwd, decisionsPath),
|
|
90
|
-
const parsed = decisionsFileSchema.parse(parseYaml(raw, { schema:
|
|
92
|
+
const raw = await readFile(resolve(cwd, decisionsPath), 'utf8');
|
|
93
|
+
const parsed = decisionsFileSchema.parse(parseYaml(raw, { schema: 'core' }) ?? {});
|
|
91
94
|
const decisions = unwrapDecisions(parsed);
|
|
92
95
|
const out = new Map();
|
|
93
96
|
for (const d of decisions)
|
|
@@ -101,15 +104,15 @@ async function loadDecisionVisibility(decisionsPath, cwd) {
|
|
|
101
104
|
}
|
|
102
105
|
async function loadTaxonomyFile(cwd, taxonomyDir, filename) {
|
|
103
106
|
try {
|
|
104
|
-
const text = await readFile(resolve(cwd, taxonomyDir, filename),
|
|
105
|
-
const raw = parseYaml(text, { schema:
|
|
107
|
+
const text = await readFile(resolve(cwd, taxonomyDir, filename), 'utf8');
|
|
108
|
+
const raw = parseYaml(text, { schema: 'core' });
|
|
106
109
|
if (!Array.isArray(raw))
|
|
107
110
|
return [];
|
|
108
111
|
const items = raw
|
|
109
112
|
.filter((item) => Boolean(item) &&
|
|
110
|
-
typeof item ===
|
|
111
|
-
typeof item.id ===
|
|
112
|
-
typeof item.name ===
|
|
113
|
+
typeof item === 'object' &&
|
|
114
|
+
typeof item.id === 'string' &&
|
|
115
|
+
typeof item.name === 'string')
|
|
113
116
|
.map((item) => ({
|
|
114
117
|
...item,
|
|
115
118
|
id: item.id,
|
|
@@ -122,8 +125,8 @@ async function loadTaxonomyFile(cwd, taxonomyDir, filename) {
|
|
|
122
125
|
return items
|
|
123
126
|
.map((item, index) => ({ item, index }))
|
|
124
127
|
.sort((a, b) => {
|
|
125
|
-
const orderA = typeof a.item.order ===
|
|
126
|
-
const orderB = typeof b.item.order ===
|
|
128
|
+
const orderA = typeof a.item.order === 'number' ? a.item.order : Number.POSITIVE_INFINITY;
|
|
129
|
+
const orderB = typeof b.item.order === 'number' ? b.item.order : Number.POSITIVE_INFINITY;
|
|
127
130
|
return orderA - orderB || a.index - b.index;
|
|
128
131
|
})
|
|
129
132
|
.map(({ item }) => item);
|
|
@@ -139,7 +142,7 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
139
142
|
await mkdir(outDir, { recursive: true });
|
|
140
143
|
const expectedKind = blueprintKind[cfg.blueprint];
|
|
141
144
|
const entries = await readdir(recordsDir).catch(() => []);
|
|
142
|
-
const files = entries.filter((f) => f.endsWith(
|
|
145
|
+
const files = entries.filter((f) => f.endsWith('.yml')).sort();
|
|
143
146
|
// Load the three side files once; a missing file is an empty map.
|
|
144
147
|
// Precedence, lowest to highest: overrides patch the parsed record,
|
|
145
148
|
// health.yml supplies a health block the record does not carry, and
|
|
@@ -150,10 +153,10 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
150
153
|
const out = [];
|
|
151
154
|
const errors = [];
|
|
152
155
|
for (const file of files) {
|
|
153
|
-
const fileSlug = basename(file,
|
|
156
|
+
const fileSlug = basename(file, '.yml');
|
|
154
157
|
try {
|
|
155
|
-
const text = await readFile(join(recordsDir, file),
|
|
156
|
-
const raw = (parseYaml(text, { schema:
|
|
158
|
+
const text = await readFile(join(recordsDir, file), 'utf8');
|
|
159
|
+
const raw = (parseYaml(text, { schema: 'core' }) ?? {});
|
|
157
160
|
if (!raw.kind)
|
|
158
161
|
raw.kind = expectedKind;
|
|
159
162
|
const patch = patchBySlug.get(fileSlug);
|
|
@@ -161,7 +164,7 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
161
164
|
normalized.slug = fileSlug;
|
|
162
165
|
// A health block written inline on the record wins; otherwise
|
|
163
166
|
// take the one keyed by this slug in health.yml, if there is one.
|
|
164
|
-
if (normalized.kind ===
|
|
167
|
+
if (normalized.kind === 'project' && !normalized.health) {
|
|
165
168
|
const health = healthBySlug.get(fileSlug);
|
|
166
169
|
if (health)
|
|
167
170
|
normalized.health = health;
|
|
@@ -185,49 +188,70 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
185
188
|
.map((record) => toIndexRecord(record))
|
|
186
189
|
.filter((r) => {
|
|
187
190
|
const vis = r.visibility;
|
|
188
|
-
return vis !==
|
|
191
|
+
return vis !== 'hide' && vis !== 'remove';
|
|
189
192
|
});
|
|
190
193
|
// ── Derive directory stats from the records themselves ──────────
|
|
191
194
|
// Single source of truth for the hero/origin/contributors counts.
|
|
192
195
|
// Pages and components read this from site-config.json so the
|
|
193
196
|
// numbers are guaranteed to match what's actually rendered.
|
|
194
|
-
const projects = indexRecords.filter((r) => r.kind ===
|
|
195
|
-
const resources = indexRecords.filter((r) => r.kind ===
|
|
196
|
-
const entities = indexRecords.filter((r) => r.kind ===
|
|
197
|
+
const projects = indexRecords.filter((r) => r.kind === 'project');
|
|
198
|
+
const resources = indexRecords.filter((r) => r.kind === 'resource');
|
|
199
|
+
const entities = indexRecords.filter((r) => r.kind === 'entity');
|
|
197
200
|
const categories = new Set();
|
|
198
201
|
const stacks = new Set();
|
|
199
202
|
const platforms = new Set();
|
|
200
203
|
const owners = new Set();
|
|
201
204
|
let totalStars = 0;
|
|
205
|
+
// Per-taxonomy-id record counts (case-insensitive, since license ids
|
|
206
|
+
// are lowercase SPDX identifiers). Used below to keep an empty
|
|
207
|
+
// category/stack/license out of the generated taxonomy pages and
|
|
208
|
+
// sitemap entirely, instead of publishing a "0 apps" page for it.
|
|
209
|
+
const categoryCounts = new Map();
|
|
210
|
+
const stackCounts = new Map();
|
|
211
|
+
const licenseCounts = new Map();
|
|
212
|
+
const bump = (counts, id) => {
|
|
213
|
+
const key = id.toLowerCase();
|
|
214
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
215
|
+
};
|
|
202
216
|
for (const r of indexRecords) {
|
|
203
217
|
const cat = r.category;
|
|
204
|
-
if (cat)
|
|
218
|
+
if (cat) {
|
|
205
219
|
categories.add(cat);
|
|
220
|
+
bump(categoryCounts, cat);
|
|
221
|
+
}
|
|
206
222
|
const s1 = r.stack;
|
|
207
|
-
if (s1)
|
|
223
|
+
if (s1) {
|
|
208
224
|
stacks.add(s1);
|
|
225
|
+
bump(stackCounts, s1);
|
|
226
|
+
}
|
|
209
227
|
const s2 = r.stacks ?? [];
|
|
210
|
-
for (const s of s2)
|
|
228
|
+
for (const s of s2) {
|
|
211
229
|
stacks.add(s);
|
|
230
|
+
bump(stackCounts, s);
|
|
231
|
+
}
|
|
212
232
|
const ps = r.platforms ?? [];
|
|
213
233
|
for (const p of ps)
|
|
214
234
|
platforms.add(p);
|
|
235
|
+
const lics = r.licenses ?? [];
|
|
236
|
+
for (const l of lics)
|
|
237
|
+
bump(licenseCounts, l);
|
|
215
238
|
const gh = r.github;
|
|
216
|
-
if (gh?.fullName && gh.fullName.includes(
|
|
217
|
-
const [owner] = gh.fullName.split(
|
|
239
|
+
if (gh?.fullName && gh.fullName.includes('/')) {
|
|
240
|
+
const [owner] = gh.fullName.split('/');
|
|
218
241
|
if (owner)
|
|
219
242
|
owners.add(owner);
|
|
220
243
|
}
|
|
221
|
-
if (typeof gh?.stars ===
|
|
244
|
+
if (typeof gh?.stars === 'number')
|
|
222
245
|
totalStars += gh.stars;
|
|
223
246
|
}
|
|
247
|
+
const withCounts = (items, counts) => items.map((item) => ({ ...item, count: counts.get(item.id.toLowerCase()) ?? 0 }));
|
|
224
248
|
// Try to merge in the optional repo-stats.json (origin / source repo).
|
|
225
249
|
// This file is produced by the `sync:repo-stats` workflow, but the
|
|
226
250
|
// generate step must not require it — fallback to a sane empty shape.
|
|
227
|
-
const repoStatsPath = join(outDir,
|
|
251
|
+
const repoStatsPath = join(outDir, 'repo-stats.json');
|
|
228
252
|
let repoStats = {};
|
|
229
253
|
try {
|
|
230
|
-
repoStats = JSON.parse(await readFile(repoStatsPath,
|
|
254
|
+
repoStats = JSON.parse(await readFile(repoStatsPath, 'utf8'));
|
|
231
255
|
}
|
|
232
256
|
catch {
|
|
233
257
|
/* not present — pages render gracefully */
|
|
@@ -254,42 +278,50 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
254
278
|
// Override in `grove.config.ts` via `routes.directory` if you
|
|
255
279
|
// want a custom path that doesn't match the blueprint id.
|
|
256
280
|
routeSlug: cfg.routes?.directory ??
|
|
257
|
-
|
|
258
|
-
project:
|
|
259
|
-
resource:
|
|
260
|
-
entity:
|
|
261
|
-
}[kind] ??
|
|
281
|
+
{
|
|
282
|
+
project: 'projects',
|
|
283
|
+
resource: 'resources',
|
|
284
|
+
entity: 'entities',
|
|
285
|
+
}[kind] ??
|
|
286
|
+
'items',
|
|
262
287
|
itemSlug: cfg.routes?.item ??
|
|
263
|
-
|
|
264
|
-
project:
|
|
265
|
-
resource:
|
|
266
|
-
entity:
|
|
267
|
-
}[kind] ??
|
|
288
|
+
{
|
|
289
|
+
project: 'project',
|
|
290
|
+
resource: 'resource',
|
|
291
|
+
entity: 'entity',
|
|
292
|
+
}[kind] ??
|
|
293
|
+
'item',
|
|
268
294
|
// Human-facing labels (e.g. "Browse projects", "Submit a project").
|
|
269
295
|
labelSingular: cfg.labels?.singular ??
|
|
270
|
-
|
|
271
|
-
project:
|
|
272
|
-
resource:
|
|
273
|
-
entity:
|
|
274
|
-
}[kind] ??
|
|
296
|
+
{
|
|
297
|
+
project: 'project',
|
|
298
|
+
resource: 'resource',
|
|
299
|
+
entity: 'entity',
|
|
300
|
+
}[kind] ??
|
|
301
|
+
'item',
|
|
275
302
|
labelPlural: cfg.labels?.plural ??
|
|
276
|
-
|
|
277
|
-
project:
|
|
278
|
-
resource:
|
|
279
|
-
entity:
|
|
280
|
-
}[kind] ??
|
|
303
|
+
{
|
|
304
|
+
project: 'projects',
|
|
305
|
+
resource: 'resources',
|
|
306
|
+
entity: 'entities',
|
|
307
|
+
}[kind] ??
|
|
308
|
+
'items',
|
|
281
309
|
};
|
|
282
310
|
const taxonomy = {
|
|
283
|
-
|
|
284
|
-
stacks
|
|
285
|
-
|
|
311
|
+
// `count` is how many visible records actually use each id — the
|
|
312
|
+
// categories/stacks/licenses detail pages (`[name].astro`) filter
|
|
313
|
+
// on it so a taxonomy entry nobody uses yet doesn't get published
|
|
314
|
+
// as an empty, indexable "0 apps" page.
|
|
315
|
+
categories: withCounts(await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'categories.yml'), categoryCounts),
|
|
316
|
+
stacks: withCounts(await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'stacks.yml'), stackCounts),
|
|
317
|
+
platforms: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'platforms.yml'),
|
|
286
318
|
// Curated tag vocabulary (data/taxonomy/topics.yml). Optional —
|
|
287
319
|
// older sites without the file simply get an empty list. The
|
|
288
320
|
// browse dropdown filters its Tag facet against this list so
|
|
289
321
|
// arbitrary GitHub topics don't pollute the dropdown.
|
|
290
|
-
topics: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir,
|
|
291
|
-
distributionChannels: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir,
|
|
292
|
-
licenses: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir,
|
|
322
|
+
topics: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'topics.yml'),
|
|
323
|
+
distributionChannels: await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'distribution-channels.yml'),
|
|
324
|
+
licenses: withCounts(await loadTaxonomyFile(cwd, cfg.paths.taxonomyDir, 'licenses.yml'), licenseCounts),
|
|
293
325
|
};
|
|
294
326
|
const siteConfigPayload = {
|
|
295
327
|
blueprint: cfg.blueprint,
|
|
@@ -297,8 +329,8 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
297
329
|
name: cfg.site.name,
|
|
298
330
|
tagline: cfg.site.tagline,
|
|
299
331
|
description: cfg.site.description ?? cfg.site.tagline,
|
|
300
|
-
siteUrl: cfg.site.url ??
|
|
301
|
-
repoUrl: cfg.site.repoUrl ??
|
|
332
|
+
siteUrl: cfg.site.url ?? 'https://example.com',
|
|
333
|
+
repoUrl: cfg.site.repoUrl ?? '',
|
|
302
334
|
logo: cfg.site.logo,
|
|
303
335
|
favicon: cfg.site.favicon,
|
|
304
336
|
locale: cfg.site.locale,
|
|
@@ -326,15 +358,13 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
326
358
|
repositoryForks: repoStats.forks ?? 0,
|
|
327
359
|
repositoryContributors: repoStats.contributors ?? 0,
|
|
328
360
|
// origin / source repo — only present when sync:repo-stats has run
|
|
329
|
-
originalRepo: repoStats.originalRepo ??
|
|
330
|
-
originalStars: repoStats.originalRepo ? repoStats.stars ?? 0 : 0,
|
|
331
|
-
originalForks: repoStats.originalRepo ? repoStats.forks ?? 0 : 0,
|
|
332
|
-
originalContributors: repoStats.originalRepo
|
|
333
|
-
? repoStats.contributors ?? 0
|
|
334
|
-
: 0,
|
|
361
|
+
originalRepo: repoStats.originalRepo ?? '',
|
|
362
|
+
originalStars: repoStats.originalRepo ? (repoStats.stars ?? 0) : 0,
|
|
363
|
+
originalForks: repoStats.originalRepo ? (repoStats.forks ?? 0) : 0,
|
|
364
|
+
originalContributors: repoStats.originalRepo ? (repoStats.contributors ?? 0) : 0,
|
|
335
365
|
},
|
|
336
366
|
};
|
|
337
|
-
await writeFile(join(outDir,
|
|
367
|
+
await writeFile(join(outDir, 'site-config.json'), JSON.stringify(siteConfigPayload, null, 2), 'utf8');
|
|
338
368
|
const generatedAt = new Date().toISOString();
|
|
339
369
|
const fullPayload = {
|
|
340
370
|
schemaVersion: 1,
|
|
@@ -351,12 +381,12 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
351
381
|
totalRecords: indexRecords.length,
|
|
352
382
|
records: indexRecords,
|
|
353
383
|
};
|
|
354
|
-
const fullPath = join(outDir,
|
|
355
|
-
const indexPath = join(outDir,
|
|
356
|
-
const aliasPath = join(outDir,
|
|
357
|
-
await writeFile(fullPath, JSON.stringify(fullPayload, null, 2),
|
|
358
|
-
await writeFile(indexPath, JSON.stringify(indexPayload, null, 2),
|
|
359
|
-
await writeFile(aliasPath, JSON.stringify(fullPayload, null, 2),
|
|
384
|
+
const fullPath = join(outDir, 'records.full.json');
|
|
385
|
+
const indexPath = join(outDir, 'records.index.json');
|
|
386
|
+
const aliasPath = join(outDir, 'records.json');
|
|
387
|
+
await writeFile(fullPath, JSON.stringify(fullPayload, null, 2), 'utf8');
|
|
388
|
+
await writeFile(indexPath, JSON.stringify(indexPayload, null, 2), 'utf8');
|
|
389
|
+
await writeFile(aliasPath, JSON.stringify(fullPayload, null, 2), 'utf8');
|
|
360
390
|
return {
|
|
361
391
|
totalRecords: out.length,
|
|
362
392
|
visibleRecords: indexRecords.length,
|
|
@@ -367,7 +397,7 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
367
397
|
};
|
|
368
398
|
}
|
|
369
399
|
function nameOf(record) {
|
|
370
|
-
if (record.kind ===
|
|
400
|
+
if (record.kind === 'resource')
|
|
371
401
|
return record.title;
|
|
372
402
|
return record.name;
|
|
373
403
|
}
|
package/dist/build-data.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface CandidateLink {
|
|
2
|
+
url: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
kind: 'repository' | 'website' | 'unknown';
|
|
5
|
+
}
|
|
6
|
+
export interface CandidateSource {
|
|
7
|
+
file?: string;
|
|
8
|
+
line?: number;
|
|
9
|
+
raw: string;
|
|
10
|
+
sourceUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CandidateEntry {
|
|
13
|
+
name?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
links: CandidateLink[];
|
|
16
|
+
sectionPath: string[];
|
|
17
|
+
source: CandidateSource;
|
|
18
|
+
confidence: number;
|
|
19
|
+
warnings: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface ExtractCandidatesOptions {
|
|
22
|
+
file?: string;
|
|
23
|
+
sourceUrl?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract every list item in `markdown` as a `CandidateEntry` — a
|
|
27
|
+
* non-lossy, source-preserving representation. Unlike
|
|
28
|
+
* `parseAwesomeMarkdown`, nothing is dropped: an item with no links
|
|
29
|
+
* still becomes a candidate, flagged with a low confidence and a
|
|
30
|
+
* warning, so downstream consumers (health checks, PR review) can see
|
|
31
|
+
* what was actually in the document rather than a filtered subset.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractCandidates(markdown: string, options?: ExtractCandidatesOptions): CandidateEntry[];
|
|
34
|
+
//# sourceMappingURL=candidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate.d.ts","sourceRoot":"","sources":["../src/candidate.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmCD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,wBAA6B,GACrC,cAAc,EAAE,CAuFlB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
2
|
+
import { visit } from 'unist-util-visit';
|
|
3
|
+
import { detectGithubRepo, extractDescription } from './markdown.js';
|
|
4
|
+
function isHttpUrl(url) {
|
|
5
|
+
return /^https?:\/\//i.test(url);
|
|
6
|
+
}
|
|
7
|
+
function classifyLink(url) {
|
|
8
|
+
if (detectGithubRepo(url))
|
|
9
|
+
return 'repository';
|
|
10
|
+
if (isHttpUrl(url))
|
|
11
|
+
return 'website';
|
|
12
|
+
return 'unknown';
|
|
13
|
+
}
|
|
14
|
+
// mdast strips Markdown syntax from inline children; reassembling the
|
|
15
|
+
// item's raw text this way (rather than re-parsing) is enough to feed
|
|
16
|
+
// the existing `extractDescription` regex cleanup, which expects
|
|
17
|
+
// Markdown-shaped input (link syntax, malformed brackets) to strip.
|
|
18
|
+
function inlineSource(node, raw) {
|
|
19
|
+
const start = node.children[0]?.position?.start.offset;
|
|
20
|
+
const end = node.children[node.children.length - 1]?.position?.end.offset;
|
|
21
|
+
if (start === undefined || end === undefined)
|
|
22
|
+
return '';
|
|
23
|
+
return raw.slice(start, end);
|
|
24
|
+
}
|
|
25
|
+
function collectLinks(node) {
|
|
26
|
+
const links = [];
|
|
27
|
+
visit(node, 'link', (link) => {
|
|
28
|
+
const label = link.children
|
|
29
|
+
.map((child) => ('value' in child ? String(child.value) : ''))
|
|
30
|
+
.join('')
|
|
31
|
+
.trim();
|
|
32
|
+
links.push({ label, url: link.url });
|
|
33
|
+
});
|
|
34
|
+
return links;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract every list item in `markdown` as a `CandidateEntry` — a
|
|
38
|
+
* non-lossy, source-preserving representation. Unlike
|
|
39
|
+
* `parseAwesomeMarkdown`, nothing is dropped: an item with no links
|
|
40
|
+
* still becomes a candidate, flagged with a low confidence and a
|
|
41
|
+
* warning, so downstream consumers (health checks, PR review) can see
|
|
42
|
+
* what was actually in the document rather than a filtered subset.
|
|
43
|
+
*/
|
|
44
|
+
export function extractCandidates(markdown, options = {}) {
|
|
45
|
+
const tree = fromMarkdown(markdown);
|
|
46
|
+
const candidates = [];
|
|
47
|
+
const headingStack = [];
|
|
48
|
+
function sectionPathAt(depth) {
|
|
49
|
+
while (headingStack.length && (headingStack[headingStack.length - 1]?.depth ?? -1) >= depth) {
|
|
50
|
+
headingStack.pop();
|
|
51
|
+
}
|
|
52
|
+
return headingStack.map((h) => h.text);
|
|
53
|
+
}
|
|
54
|
+
function walkListItems(list) {
|
|
55
|
+
for (const item of list.children) {
|
|
56
|
+
if (item.type !== 'listItem')
|
|
57
|
+
continue;
|
|
58
|
+
const sectionPath = [...headingStack.map((h) => h.text)];
|
|
59
|
+
const links = collectLinks(item)
|
|
60
|
+
.filter((link) => link.url)
|
|
61
|
+
.map((link) => ({
|
|
62
|
+
url: link.url,
|
|
63
|
+
...(link.label ? { label: link.label } : {}),
|
|
64
|
+
kind: classifyLink(link.url),
|
|
65
|
+
}));
|
|
66
|
+
const start = item.position?.start.offset;
|
|
67
|
+
const end = item.position?.end.offset;
|
|
68
|
+
const raw = start !== undefined && end !== undefined ? markdown.slice(start, end) : '';
|
|
69
|
+
const primary = links[0];
|
|
70
|
+
const name = primary?.label;
|
|
71
|
+
const body = inlineSource(item, markdown);
|
|
72
|
+
const description = primary ? extractDescription(body) : undefined;
|
|
73
|
+
const warnings = [];
|
|
74
|
+
let confidence;
|
|
75
|
+
if (links.length === 0) {
|
|
76
|
+
warnings.push('no-links');
|
|
77
|
+
confidence = 0;
|
|
78
|
+
}
|
|
79
|
+
else if (!name) {
|
|
80
|
+
warnings.push('no-name');
|
|
81
|
+
confidence = 0.4;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
confidence = 1;
|
|
85
|
+
}
|
|
86
|
+
candidates.push({
|
|
87
|
+
...(name ? { name } : {}),
|
|
88
|
+
...(description ? { description } : {}),
|
|
89
|
+
links,
|
|
90
|
+
sectionPath,
|
|
91
|
+
source: {
|
|
92
|
+
...(options.file ? { file: options.file } : {}),
|
|
93
|
+
...(item.position?.start.line !== undefined ? { line: item.position.start.line } : {}),
|
|
94
|
+
raw,
|
|
95
|
+
...(options.sourceUrl ? { sourceUrl: options.sourceUrl } : {}),
|
|
96
|
+
},
|
|
97
|
+
confidence,
|
|
98
|
+
warnings,
|
|
99
|
+
});
|
|
100
|
+
// Nested lists inside this item share the same section path —
|
|
101
|
+
// Phase 1 doesn't model nesting depth separately, it flattens.
|
|
102
|
+
for (const child of item.children) {
|
|
103
|
+
if (child.type === 'list')
|
|
104
|
+
walkListItems(child);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
visit(tree, (node) => {
|
|
109
|
+
if (node.type === 'heading') {
|
|
110
|
+
const heading = node;
|
|
111
|
+
const text = heading.children
|
|
112
|
+
.map((child) => ('value' in child ? String(child.value) : ''))
|
|
113
|
+
.join('')
|
|
114
|
+
.trim();
|
|
115
|
+
sectionPathAt(heading.depth);
|
|
116
|
+
if (text)
|
|
117
|
+
headingStack.push({ depth: heading.depth, text });
|
|
118
|
+
return 'skip';
|
|
119
|
+
}
|
|
120
|
+
if (node.type === 'list') {
|
|
121
|
+
walkListItems(node);
|
|
122
|
+
return 'skip';
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
});
|
|
126
|
+
return candidates;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=candidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate.js","sourceRoot":"","sources":["../src/candidate.ts"],"names":[],"mappings":"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"}
|
package/dist/collections-io.d.ts
CHANGED
package/dist/collections-io.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* from `collections.ts` so the query/ranking engine stays pure and
|
|
4
4
|
* importable in non-Node contexts.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { join, resolve } from
|
|
8
|
-
import { parse as parseYaml } from
|
|
6
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
7
|
+
import { join, resolve } from 'node:path';
|
|
8
|
+
import { parse as parseYaml } from 'yaml';
|
|
9
9
|
/**
|
|
10
10
|
* Load all `Collection` YAML files from `<cwd>/data/collections/*.yml`.
|
|
11
11
|
*
|
|
@@ -16,20 +16,20 @@ import { parse as parseYaml } from "yaml";
|
|
|
16
16
|
* errors, etc.) are visible instead of silently producing empty output.
|
|
17
17
|
*/
|
|
18
18
|
export async function loadCollections(cwd) {
|
|
19
|
-
const dir = resolve(cwd,
|
|
19
|
+
const dir = resolve(cwd, 'data/collections');
|
|
20
20
|
let files;
|
|
21
21
|
try {
|
|
22
22
|
files = await readdir(dir);
|
|
23
23
|
}
|
|
24
24
|
catch (err) {
|
|
25
|
-
if (err.code ===
|
|
25
|
+
if (err.code === 'ENOENT')
|
|
26
26
|
return [];
|
|
27
27
|
throw err;
|
|
28
28
|
}
|
|
29
29
|
const out = [];
|
|
30
|
-
for (const f of files.filter((f) => f.endsWith(
|
|
31
|
-
const raw = parseYaml(await readFile(join(dir, f),
|
|
32
|
-
if (!raw || typeof raw !==
|
|
30
|
+
for (const f of files.filter((f) => f.endsWith('.yml'))) {
|
|
31
|
+
const raw = parseYaml(await readFile(join(dir, f), 'utf8'));
|
|
32
|
+
if (!raw || typeof raw !== 'object') {
|
|
33
33
|
throw new Error(`Invalid collection YAML: ${f}`);
|
|
34
34
|
}
|
|
35
35
|
out.push(raw);
|