@grove-dev/core 0.3.1 → 0.3.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 (109) hide show
  1. package/README.md +16 -142
  2. package/dist/build-data.d.ts.map +1 -1
  3. package/dist/build-data.js +12 -4
  4. package/dist/build-data.js.map +1 -1
  5. package/dist/contributors.d.ts +3 -0
  6. package/dist/contributors.d.ts.map +1 -1
  7. package/dist/contributors.js +43 -38
  8. package/dist/contributors.js.map +1 -1
  9. package/dist/directory-client.d.ts +11 -0
  10. package/dist/directory-client.d.ts.map +1 -0
  11. package/dist/directory-client.js +11 -0
  12. package/dist/directory-client.js.map +1 -0
  13. package/dist/directory-display.d.ts +27 -0
  14. package/dist/directory-display.d.ts.map +1 -0
  15. package/dist/directory-display.js +104 -0
  16. package/dist/directory-display.js.map +1 -0
  17. package/dist/directory-format.d.ts +29 -0
  18. package/dist/directory-format.d.ts.map +1 -0
  19. package/dist/directory-format.js +72 -0
  20. package/dist/directory-format.js.map +1 -0
  21. package/dist/directory-lenses.d.ts +59 -0
  22. package/dist/directory-lenses.d.ts.map +1 -0
  23. package/dist/directory-lenses.js +199 -0
  24. package/dist/directory-lenses.js.map +1 -0
  25. package/dist/directory-repo.d.ts +20 -0
  26. package/dist/directory-repo.d.ts.map +1 -0
  27. package/dist/directory-repo.js +31 -0
  28. package/dist/directory-repo.js.map +1 -0
  29. package/dist/directory-scores.d.ts +37 -0
  30. package/dist/directory-scores.d.ts.map +1 -0
  31. package/dist/directory-scores.js +76 -0
  32. package/dist/directory-scores.js.map +1 -0
  33. package/dist/directory-search.d.ts +119 -0
  34. package/dist/directory-search.d.ts.map +1 -0
  35. package/dist/directory-search.js +398 -0
  36. package/dist/directory-search.js.map +1 -0
  37. package/dist/directory-taxonomy.d.ts +11 -0
  38. package/dist/directory-taxonomy.d.ts.map +1 -0
  39. package/dist/directory-taxonomy.js +22 -0
  40. package/dist/directory-taxonomy.js.map +1 -0
  41. package/dist/index.d.ts +9 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +17 -6
  44. package/dist/index.js.map +1 -1
  45. package/dist/llms.js +1 -1
  46. package/dist/llms.js.map +1 -1
  47. package/dist/prepare.d.ts +18 -0
  48. package/dist/prepare.d.ts.map +1 -0
  49. package/dist/prepare.js +72 -0
  50. package/dist/prepare.js.map +1 -0
  51. package/dist/schema.d.ts +53 -0
  52. package/dist/schema.d.ts.map +1 -1
  53. package/dist/schema.js +30 -0
  54. package/dist/schema.js.map +1 -1
  55. package/dist/validate.js +4 -2
  56. package/dist/validate.js.map +1 -1
  57. package/package.json +9 -2
  58. package/dist/build-data.test.d.ts +0 -2
  59. package/dist/build-data.test.d.ts.map +0 -1
  60. package/dist/build-data.test.js +0 -196
  61. package/dist/build-data.test.js.map +0 -1
  62. package/dist/contributors.test.d.ts +0 -2
  63. package/dist/contributors.test.d.ts.map +0 -1
  64. package/dist/contributors.test.js +0 -79
  65. package/dist/contributors.test.js.map +0 -1
  66. package/dist/decisions.test.d.ts +0 -2
  67. package/dist/decisions.test.d.ts.map +0 -1
  68. package/dist/decisions.test.js +0 -205
  69. package/dist/decisions.test.js.map +0 -1
  70. package/dist/enrich.test.d.ts +0 -2
  71. package/dist/enrich.test.d.ts.map +0 -1
  72. package/dist/enrich.test.js +0 -105
  73. package/dist/enrich.test.js.map +0 -1
  74. package/dist/github-client.test.d.ts +0 -2
  75. package/dist/github-client.test.d.ts.map +0 -1
  76. package/dist/github-client.test.js +0 -176
  77. package/dist/github-client.test.js.map +0 -1
  78. package/dist/github.test.d.ts +0 -2
  79. package/dist/github.test.d.ts.map +0 -1
  80. package/dist/github.test.js +0 -73
  81. package/dist/github.test.js.map +0 -1
  82. package/dist/health.test.d.ts +0 -2
  83. package/dist/health.test.d.ts.map +0 -1
  84. package/dist/health.test.js +0 -183
  85. package/dist/health.test.js.map +0 -1
  86. package/dist/importer.test.d.ts +0 -2
  87. package/dist/importer.test.d.ts.map +0 -1
  88. package/dist/importer.test.js +0 -173
  89. package/dist/importer.test.js.map +0 -1
  90. package/dist/llms.test.d.ts +0 -2
  91. package/dist/llms.test.d.ts.map +0 -1
  92. package/dist/llms.test.js +0 -39
  93. package/dist/llms.test.js.map +0 -1
  94. package/dist/public-api.test.d.ts +0 -2
  95. package/dist/public-api.test.d.ts.map +0 -1
  96. package/dist/public-api.test.js +0 -13
  97. package/dist/public-api.test.js.map +0 -1
  98. package/dist/sitemap.test.d.ts +0 -2
  99. package/dist/sitemap.test.d.ts.map +0 -1
  100. package/dist/sitemap.test.js +0 -35
  101. package/dist/sitemap.test.js.map +0 -1
  102. package/dist/slug.test.d.ts +0 -2
  103. package/dist/slug.test.d.ts.map +0 -1
  104. package/dist/slug.test.js +0 -101
  105. package/dist/slug.test.js.map +0 -1
  106. package/dist/validate.test.d.ts +0 -2
  107. package/dist/validate.test.d.ts.map +0 -1
  108. package/dist/validate.test.js +0 -272
  109. package/dist/validate.test.js.map +0 -1
package/README.md CHANGED
@@ -1,158 +1,32 @@
1
1
  # `@grove-dev/core`
2
2
 
3
- > Generic, framework-free engine for Grove.
3
+ The framework-free engine behind Grove directories.
4
4
 
5
- Headless TypeScript. Owns the discriminated `Resource` union (`ProjectRecord` | `ResourceRecord` | `EntityRecord`), the config loader, importers, validators, taxonomy types, optional GitHub signal sync, sitemap generation, llms.txt generation, and the data build pipeline. Zero framework dependencies — no Astro, no React, no Svelte.
5
+ Core owns:
6
6
 
7
- ```bash
8
- pnpm add @grove-dev/core
9
- ```
10
-
11
- ## What it does
12
-
13
- - **Discriminated `Resource` schema** — Zod-validated `ProjectRecord` / `ResourceRecord` / `EntityRecord` union, plus the slim `IndexRecord` projection for list views. Each kind binds to a V1 blueprint (`project-directory` / `resource-hub` / `ecosystem-map`).
14
- - **Config** — `defineConfig(config)` (V0's `defineGroveConfig` is gone) and `loadConfig` for `grove.config.ts` projects, via `jiti` so no build step is required.
15
- - **Importers** — `parseAwesomeMarkdown` and `importAwesomeList` parse Markdown awesome lists into structured records.
16
- - **Validators** — schema + reference checks (duplicate slugs, missing descriptions, broken categories, unknown decisions, kind-vs-blueprint mismatches).
17
- - **Taxonomy** — typed registry for stacks, platforms, categories, distribution channels, lenses, labels.
18
- - **Build pipeline** — `generate(config)` (the library form of `grove generate`) produces `data/generated/records.full.json`, `data/generated/records.index.json`, `data/generated/records.json` (alias), and `data/generated/site-config.json`.
19
- - **Sitemap & llms.txt** — `buildSitemap` and `buildSitemapXml` (the library form of `grove sitemap`); `buildLlmsTxt` and `buildLlmsFullTxt` (the library form of `grove llms`).
20
- - **Optional GitHub signal sync** — `fetchGithubMetadata`, `classifyHealth`, `enrichFromGithubHtml`, `parseGithubRepoUrl` for spaces that want maintenance signals. The CLI wraps these as `grove sync github`.
21
- - **Cleanup** — `pickCleanupCandidates` (the library form of `grove cleanup stale`) flags records that need human review.
22
-
23
- ## Public surface (V1)
7
+ - `grove.config.ts` loading and validation
8
+ - project, resource, entity, taxonomy, health, and decision schemas
9
+ - YAML validation and normalized generated records
10
+ - GitHub repository and contributor metadata
11
+ - cleanup reports
12
+ - sitemap and `llms.txt` generation
13
+ - the unified `prepareDirectory()` pipeline used by Astro and the CLI
24
14
 
25
15
  ```ts
26
- import {
27
- // Config
28
- defineConfig,
29
- loadConfig,
30
- type GroveConfig,
31
-
32
- // Schemas (Zod)
33
- blueprintSchema,
34
- resourceKindSchema,
35
- healthStatusSchema,
36
- healthTierSchema,
37
- healthBlockSchema,
38
- healthEntrySchema,
39
- healthFileSchema,
40
- decisionSchema,
41
- decisionsFileSchema,
42
- overrideSchema,
43
- overridesFileSchema,
44
- projectRecordSchema,
45
- resourceRecordSchema,
46
- entityRecordSchema,
47
- projectTypeSchema,
48
- resourceTypeSchema,
49
- entityTypeSchema,
50
- appLabelSchema,
51
- scoreSchema,
52
- linksSchema,
53
- githubRepositorySchema,
54
- githubMetadataSchema,
55
- githubLicenseSchema,
56
- type Blueprint,
57
- type ResourceKind,
58
- type DecisionVisibility,
59
-
60
- // Discriminated record types
61
- type Resource,
62
- type ProjectRecord,
63
- type ResourceRecord,
64
- type EntityRecord,
65
- type IndexRecord,
66
- type IndexProjectRecord,
67
- type IndexResourceRecord,
68
- type IndexEntityRecord,
69
- blueprintKind,
70
-
71
- // Build pipeline (library form)
72
- generate,
73
- type GenerateResult,
74
- type RecordsFullPayload,
75
- type RecordsIndexPayload,
76
-
77
- // Sitemap
78
- buildSitemap,
79
- buildSitemapXml,
80
-
81
- // llms.txt
82
- buildLlmsTxt,
83
- buildLlmsFullTxt,
84
- type LlmsInput,
85
- type LlmsRecordInput,
86
- type LlmsResult,
87
-
88
- // Cleanup
89
- pickCleanupCandidates,
90
- type CleanupCandidate,
91
- type CleanupReport,
92
-
93
- // GitHub
94
- parseGithubRepoUrl,
95
- type GithubRepoRef,
96
- fetchGithubMetadata,
97
- enrichFromGithubHtml,
98
- classifyHealth,
99
- type GithubMetadata,
100
- type HealthEntry,
101
- type EnrichedFields,
102
- type EnrichResult,
103
- rateLimitWaitMs,
104
- sleep,
105
- type GhFetchOptions,
106
-
107
- // Importers / parsers
108
- detectGithubRepo,
109
- parseAwesomeMarkdown,
110
- parseEntry,
111
- parseSections,
112
- type ImportedRecord,
113
- type ImportSummary,
114
- type ImportResult,
115
- type ParsedEntry,
116
- type ParsedSection,
117
-
118
- // IO helpers
119
- readYamlFile,
120
- writeYamlFile,
121
- writeTextFile,
122
- } from "@grove-dev/core";
16
+ import { defineConfig, prepareDirectory } from "@grove-dev/core";
123
17
  ```
124
18
 
125
- ## V0→V1 renames in this package
19
+ Core contains no UI or framework adapter. Application-facing code should normally use `@grove-dev/astro`; direct Core imports are useful for config, tooling, and custom integrations.
126
20
 
127
- The V0 published `@grove-dev/core` exposed several names that the V1 release replaces with `record` / `IndexRecord` / `Resource` semantics. The renames are:
21
+ Browser controllers that need the shared discovery rules should use the browser-safe subpath. It exposes filtering, sorting, facets, display labels, and lens URL helpers without pulling config loading or filesystem dependencies into the client bundle.
128
22
 
129
- | V0 name (removed) | V1 canonical name |
130
- |---|---|
131
- | `curatedConfigSchema` | `blueprintSchema` (in `schema.ts`) |
132
- | `defineGroveConfig` | `defineConfig` (in `config.ts`) |
133
- | `resourceSchema` | `projectRecordSchema` / `resourceRecordSchema` / `entityRecordSchema` |
134
- | `itemsFileSchema` | removed (the records are individual `<slug>.yml` files, no aggregate file) |
135
- | `buildData` | `generate` (library form) |
136
- | `buildSitemap` / `buildSitemapXml` | kept (V1 names) |
137
- | `buildLlmsFiles` | `buildLlmsTxt` + `buildLlmsFullTxt` (split into two functions) |
138
- | `buildLlmsTxt` / `buildLlmsFullTxt` | kept (V1 names) |
139
- | `fetchGithubMetadata` | kept (V1 name) |
140
- | `enrichFromGithubHtml` | kept (V1 name) |
141
- | `ghFetch` / `pLimit` | internal to `github-client.ts`; not part of the V1 public surface |
142
- | `pickReviewCandidates` | `pickCleanupCandidates` |
143
- | `buildReviewReport` | removed (the cleanup report is a side effect of `pickCleanupCandidates`) |
144
- | `parseAppYaml` | removed (V0 `apps` model is gone; use `readYamlFile` + Zod parse) |
145
- | `normalizeAppRecord` / `toIndexApp` | internal to `build-data.ts`; not part of the V1 public surface |
146
- | `validateAppRecord` | removed (V0 `apps` model is gone) |
147
- | `validateProject` | kept (V1 name — used by tests and CLI for the structured `ValidationIssue[]` output that `generate`'s throw path does not produce) |
148
-
149
- ## Development
23
+ ```ts
24
+ import { filterRecords, hrefForLens } from "@grove-dev/core/directory";
25
+ ```
150
26
 
151
27
  ```bash
152
- pnpm --filter @grove-dev/core build
153
28
  pnpm --filter @grove-dev/core check
29
+ pnpm --filter @grove-dev/core test
154
30
  ```
155
31
 
156
- ## License
157
-
158
32
  MIT
@@ -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,CAsOzB"}
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,CA+OzB"}
@@ -229,6 +229,9 @@ export async function generate(cwd = process.cwd(), config) {
229
229
  siteUrl: cfg.site.url ?? "https://example.com",
230
230
  repoUrl: cfg.site.repoUrl ?? "",
231
231
  nav: cfg.nav,
232
+ footer: cfg.footer,
233
+ submission: cfg.submission,
234
+ facets: cfg.facets,
232
235
  theme: cfg.theme,
233
236
  integrations: cfg.integrations,
234
237
  taxonomy,
@@ -242,11 +245,16 @@ export async function generate(cwd = process.cwd(), config) {
242
245
  totalPlatforms: platforms.size,
243
246
  totalOwners: owners.size,
244
247
  totalStars,
248
+ repositoryStars: repoStats.stars ?? 0,
249
+ repositoryForks: repoStats.forks ?? 0,
250
+ repositoryContributors: repoStats.contributors ?? 0,
245
251
  // origin / source repo — only present when sync:repo-stats has run
246
- originalRepo: repoStats.originalRepo ?? cfg.site.repoUrl ?? "",
247
- originalStars: repoStats.stars ?? 0,
248
- originalForks: repoStats.forks ?? 0,
249
- originalContributors: repoStats.contributors ?? 0,
252
+ originalRepo: repoStats.originalRepo ?? "",
253
+ originalStars: repoStats.originalRepo ? repoStats.stars ?? 0 : 0,
254
+ originalForks: repoStats.originalRepo ? repoStats.forks ?? 0 : 0,
255
+ originalContributors: repoStats.originalRepo
256
+ ? repoStats.contributors ?? 0
257
+ : 0,
250
258
  },
251
259
  };
252
260
  await writeFile(join(outDir, "site-config.json"), JSON.stringify(siteConfigPayload, null, 2), "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"build-data.js","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,aAAa,CACpB,MAAgB,EAChB,cAAmC;IAEnC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,kEAAkE;QAClE,mEAAmE;QACnE,gEAAgE;QAChE,iDAAiD;QACjD,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,QAAwC,EAAE,CAAC;QACrG,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IACD,iEAAiE;IACjE,gEAAgE;IAChE,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAoC,EAAE,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,aAAqB,EACrB,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAiCD,KAAK,UAAU,gBAAgB,CAC7B,GAAW,EACX,WAAmB,EACnB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,GAAG;aACP,MAAM,CACL,CAAC,IAAI,EAAmC,EAAE,CACxC,OAAO,CAAC,IAAI,CAAC;YACb,OAAO,IAAI,KAAK,QAAQ;YACxB,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;YAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAChC;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,GAAG,IAAI;YACP,EAAE,EAAE,IAAI,CAAC,EAAY;YACrB,IAAI,EAAE,IAAI,CAAC,IAAc;SAC1B,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/D,gEAAgE;IAChE,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE9E,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;YACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC3B,gEAAgE;YAChE,gEAAgE;YAChE,kCAAkC;YAClC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;QACxE,CAAoC,CAAC,OAAO,GAAG,MAAM,CAAC;QACvD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,GAAG;SACrB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,GAAG,GAAI,CAA6B,CAAC,UAAU,CAAC;QACtD,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,mEAAmE;IACnE,kEAAkE;IAClE,8DAA8D;IAC9D,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAI,CAA2B,CAAC,QAAQ,CAAC;QAClD,IAAI,GAAG;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAI,CAAwB,CAAC,KAAK,CAAC;QAC3C,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,EAAE,GAAI,CAA2B,CAAC,MAAM,IAAI,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,EAAE,GAAI,CAA8B,CAAC,SAAS,IAAI,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,EAAE;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAI,CAAwD,CAAC,MAAM,CAAC;QAC5E,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,KAAK;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,EAAE,EAAE,KAAK,KAAK,QAAQ;YAAE,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,sEAAsE;IACtE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,IAAI,SAAS,GAMT,EAAE,CAAC;IACP,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IAED,+DAA+D;IAC/D,2DAA2D;IAC3D,6DAA6D;IAC7D,4DAA4D;IAC5D,0DAA0D;IAC1D,EAAE;IACF,0DAA0D;IAC1D,+DAA+D;IAC/D,4BAA4B;IAC5B,EAAE;IACF,4DAA4D;IAC5D,iEAAiE;IACjE,gEAAgE;IAChE,iEAAiE;IACjE,MAAM,IAAI,GAAG,YAAY,CAAC;IAC1B,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,GAAG,CAAC,SAAS;QACjB,IAAI;QACJ,gEAAgE;QAChE,8DAA8D;QAC9D,0DAA0D;QAC1D,SAAS,EACN,GAA2C,CAAC,MAAM,EAAE,SAAS;YAC9D,CAAC;gBACC,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,UAAU;aACnB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACrB,QAAQ,EACL,GAAsC,CAAC,MAAM,EAAE,IAAI;YACpD,CAAC;gBACC,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,QAAQ;aACjB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QACpB,oEAAoE;QACpE,aAAa,EACV,GAA0C,CAAC,MAAM,EAAE,QAAQ;YAC5D,CAAC;gBACC,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,QAAQ;aACjB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QACpB,WAAW,EACR,GAAwC,CAAC,MAAM,EAAE,MAAM;YACxD,CAAC;gBACC,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,UAAU;aACnB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,UAAU,EAAE,MAAM,gBAAgB,CAChC,GAAG,EACH,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,gBAAgB,CACjB;QACD,MAAM,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC;QACxE,SAAS,EAAE,MAAM,gBAAgB,CAC/B,GAAG,EACH,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,eAAe,CAChB;QACD,oBAAoB,EAAE,MAAM,gBAAgB,CAC1C,GAAG,EACH,GAAG,CAAC,KAAK,CAAC,WAAW,EACrB,2BAA2B,CAC5B;KACF,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,eAAe;QACf,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO;QACrD,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB;QAC9C,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;QAC/B,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,QAAQ;QACR,KAAK,EAAE;YACL,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,eAAe,EAAE,UAAU,CAAC,IAAI;YAChC,WAAW,EAAE,MAAM,CAAC,IAAI;YACxB,cAAc,EAAE,SAAS,CAAC,IAAI;YAC9B,WAAW,EAAE,MAAM,CAAC,IAAI;YACxB,UAAU;YACV,mEAAmE;YACnE,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;YAC9D,aAAa,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;YACnC,aAAa,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;YACnC,oBAAoB,EAAE,SAAS,CAAC,YAAY,IAAI,CAAC;SAClD;KACF,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAC1C,MAAM,CACP,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAuB;QACtC,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW;QACX,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,cAAc,EAAE,YAAY,CAAC,MAAM;QACnC,OAAO,EAAE,GAAgD;KAC1D,CAAC;IACF,MAAM,YAAY,GAAwB;QACxC,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW;QACX,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,OAAO,EAAE,YAAyD;KACnE,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,cAAc,EAAE,YAAY,CAAC,MAAM;QACnC,QAAQ;QACR,SAAS;QACT,SAAS;QACT,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"build-data.js","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,15 @@ export interface Contributor {
7
7
  export interface SyncContributorsOptions {
8
8
  cwd?: string;
9
9
  generatedDir?: string;
10
+ /** Site repository URL. Falls back to generated site-config.json. */
11
+ repoUrl?: string;
10
12
  token?: string;
11
13
  fetchImpl?: typeof fetch;
12
14
  generatedAt?: string;
13
15
  }
14
16
  export interface ContributorSyncResult {
15
17
  outputPath: string;
18
+ repoStatsPath: string;
16
19
  repositories: number;
17
20
  contributors: number;
18
21
  failed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"contributors.d.ts","sourceRoot":"","sources":["../src/contributors.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
1
+ {"version":3,"file":"contributors.d.ts","sourceRoot":"","sources":["../src/contributors.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAqHhC"}
@@ -20,7 +20,14 @@ export async function syncContributors(options = {}) {
20
20
  const generatedDir = options.generatedDir ?? "data/generated";
21
21
  const indexPath = resolve(cwd, generatedDir, "records.index.json");
22
22
  const outputPath = resolve(cwd, generatedDir, "contributors.json");
23
- const payload = JSON.parse(await readFile(indexPath, "utf8"));
23
+ const repoStatsPath = resolve(cwd, generatedDir, "repo-stats.json");
24
+ const siteConfigPath = resolve(cwd, generatedDir, "site-config.json");
25
+ const siteConfig = JSON.parse(await readFile(siteConfigPath, "utf8"));
26
+ const repoUrl = options.repoUrl ?? siteConfig.repoUrl ?? "";
27
+ const ref = ownerRepo({ repoUrl });
28
+ if (!ref) {
29
+ throw new Error(`Cannot sync community metadata: ${indexPath} has no valid site repository URL.`);
30
+ }
24
31
  const fetchImpl = options.fetchImpl ?? fetch;
25
32
  const token = options.token ?? process.env.GH_TOKEN ?? process.env.GITHUB_TOKEN ?? "";
26
33
  const headers = {
@@ -29,45 +36,32 @@ export async function syncContributors(options = {}) {
29
36
  "X-GitHub-Api-Version": "2022-11-28",
30
37
  ...(token ? { Authorization: `Bearer ${token}` } : {}),
31
38
  };
32
- const repositories = new Map();
33
- for (const record of payload.records ?? []) {
34
- const ref = ownerRepo(record);
35
- if (ref)
36
- repositories.set(`${ref.owner}/${ref.repo}`.toLowerCase(), ref);
37
- }
38
39
  const byUsername = new Map();
39
40
  let failed = 0;
40
- for (const ref of repositories.values()) {
41
- try {
42
- const response = await fetchImpl(`https://api.github.com/repos/${ref.owner}/${ref.repo}/contributors?per_page=100&anon=false`, { headers });
43
- if (response.status === 404 || response.status === 204)
44
- continue;
45
- if (!response.ok) {
46
- failed += 1;
47
- continue;
48
- }
49
- const data = (await response.json());
50
- for (const entry of data) {
51
- if (!entry.login)
52
- continue;
53
- const current = byUsername.get(entry.login);
54
- if (current) {
55
- current.contributions += entry.contributions ?? 0;
56
- }
57
- else {
58
- byUsername.set(entry.login, {
59
- username: entry.login,
60
- ...(entry.avatar_url ? { avatarUrl: entry.avatar_url } : {}),
61
- ...(entry.html_url ? { profileUrl: entry.html_url } : {}),
62
- contributions: entry.contributions ?? 0,
63
- });
64
- }
65
- }
66
- }
67
- catch {
68
- failed += 1;
69
- }
41
+ const contributorsResponse = await fetchImpl(`https://api.github.com/repos/${ref.owner}/${ref.repo}/contributors?per_page=100&anon=false`, { headers });
42
+ if (!contributorsResponse.ok && contributorsResponse.status !== 204) {
43
+ throw new Error(`GitHub contributors request failed for ${ref.owner}/${ref.repo}: ${contributorsResponse.status}`);
44
+ }
45
+ const data = contributorsResponse.status === 204
46
+ ? []
47
+ : (await contributorsResponse.json());
48
+ for (const entry of data) {
49
+ if (!entry.login)
50
+ continue;
51
+ byUsername.set(entry.login, {
52
+ username: entry.login,
53
+ ...(entry.avatar_url ? { avatarUrl: entry.avatar_url } : {}),
54
+ ...(entry.html_url ? { profileUrl: entry.html_url } : {}),
55
+ contributions: entry.contributions ?? 0,
56
+ });
70
57
  }
58
+ const repositoryResponse = await fetchImpl(`https://api.github.com/repos/${ref.owner}/${ref.repo}`, { headers });
59
+ if (!repositoryResponse.ok) {
60
+ failed += 1;
61
+ }
62
+ const repository = repositoryResponse.ok
63
+ ? await repositoryResponse.json()
64
+ : {};
71
65
  const contributors = [...byUsername.values()].sort((a, b) => b.contributions - a.contributions ||
72
66
  a.username.localeCompare(b.username));
73
67
  await mkdir(dirname(outputPath), { recursive: true });
@@ -75,9 +69,20 @@ export async function syncContributors(options = {}) {
75
69
  generatedAt: options.generatedAt ?? new Date().toISOString(),
76
70
  contributors,
77
71
  }, null, 2), "utf8");
72
+ await writeFile(repoStatsPath, JSON.stringify({
73
+ repoUrl: `https://github.com/${ref.owner}/${ref.repo}`,
74
+ stars: repository.stargazers_count ?? 0,
75
+ forks: repository.forks_count ?? 0,
76
+ watchers: repository.subscribers_count ?? 0,
77
+ openIssues: repository.open_issues_count ?? 0,
78
+ contributors: contributors.length,
79
+ defaultBranch: repository.default_branch,
80
+ pushedAt: repository.pushed_at,
81
+ }, null, 2), "utf8");
78
82
  return {
79
83
  outputPath,
80
- repositories: repositories.size,
84
+ repoStatsPath,
85
+ repositories: 1,
81
86
  contributors: contributors.length,
82
87
  failed,
83
88
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contributors.js","sourceRoot":"","sources":["../src/contributors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contributors.js","sourceRoot":"","sources":["../src/contributors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Browser-safe directory discovery API.
3
+ *
4
+ * This entry point deliberately excludes config loading, filesystem IO,
5
+ * validation, and generation so client controllers can reuse Grove's
6
+ * canonical filter, sort, and lens rules without Node-only dependencies.
7
+ */
8
+ export * from "./directory-display.js";
9
+ export * from "./directory-lenses.js";
10
+ export * from "./directory-search.js";
11
+ //# sourceMappingURL=directory-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-client.d.ts","sourceRoot":"","sources":["../src/directory-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Browser-safe directory discovery API.
3
+ *
4
+ * This entry point deliberately excludes config loading, filesystem IO,
5
+ * validation, and generation so client controllers can reuse Grove's
6
+ * canonical filter, sort, and lens rules without Node-only dependencies.
7
+ */
8
+ export * from "./directory-display.js";
9
+ export * from "./directory-lenses.js";
10
+ export * from "./directory-search.js";
11
+ //# sourceMappingURL=directory-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-client.js","sourceRoot":"","sources":["../src/directory-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Display-name helpers for curation labels, statuses, lenses, and sort
3
+ * options. Internal ids (e.g. "hot", "stale", "production-like") stay
4
+ * stable for URL state and data files; this module owns the mapping
5
+ * from id → user-facing string.
6
+ *
7
+ * Every export here is dependency-free so it can be imported by both
8
+ * server-rendered Astro components and any client-side script.
9
+ */
10
+ export type LabelId = "new" | "hot" | "mature" | "featured";
11
+ export declare const LABEL_DISPLAY: Record<LabelId, string>;
12
+ /** Returns a human-readable name for a label id, or null if unknown. */
13
+ export declare function labelDisplay(id: string | null | undefined): string | null;
14
+ /**
15
+ * Canonical status ids, including the curated "needs-maintainer"
16
+ * composite that's emitted by the `needs-maintainer` lens (it expands
17
+ * to "stale,quiet" in URL state but presents as one chip).
18
+ */
19
+ export declare const STATUS_DISPLAY: Record<string, string>;
20
+ export declare function statusDisplay(s: string | null | undefined): string;
21
+ export declare const LENS_DISPLAY: Record<string, string>;
22
+ export declare function lensDisplay(id: string | null | undefined): string;
23
+ export declare const SORT_DISPLAY: Record<string, string>;
24
+ export declare function sortDisplay(id: string | null | undefined): string;
25
+ export declare function prettySlug(value: string | null | undefined): string;
26
+ export declare const STATUS_OPTIONS: string[];
27
+ //# sourceMappingURL=directory-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-display.d.ts","sourceRoot":"","sources":["../src/directory-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAKjD,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGzE;AAGD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYjD,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAGD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAY/C,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGjE;AAGD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM/C,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGjE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAOnE;AAMD,eAAO,MAAM,cAAc,EAAE,MAAM,EAYlC,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Display-name helpers for curation labels, statuses, lenses, and sort
3
+ * options. Internal ids (e.g. "hot", "stale", "production-like") stay
4
+ * stable for URL state and data files; this module owns the mapping
5
+ * from id → user-facing string.
6
+ *
7
+ * Every export here is dependency-free so it can be imported by both
8
+ * server-rendered Astro components and any client-side script.
9
+ */
10
+ export const LABEL_DISPLAY = {
11
+ new: "Recently added",
12
+ hot: "Trending",
13
+ mature: "Established",
14
+ featured: "Featured",
15
+ };
16
+ /** Returns a human-readable name for a label id, or null if unknown. */
17
+ export function labelDisplay(id) {
18
+ if (!id)
19
+ return null;
20
+ return LABEL_DISPLAY[id] ?? null;
21
+ }
22
+ // ── Status ids (the `status` field on an item) ───────────────────────
23
+ /**
24
+ * Canonical status ids, including the curated "needs-maintainer"
25
+ * composite that's emitted by the `needs-maintainer` lens (it expands
26
+ * to "stale,quiet" in URL state but presents as one chip).
27
+ */
28
+ export const STATUS_DISPLAY = {
29
+ active: "Active",
30
+ mature: "Mature",
31
+ quiet: "Quiet",
32
+ stale: "Not recently active",
33
+ inactive: "Inactive",
34
+ "needs-maintainer": "Needs maintainer",
35
+ archived: "Archived",
36
+ historical: "Historical",
37
+ needs_review: "Needs review",
38
+ unavailable: "Unavailable",
39
+ unknown: "Unknown",
40
+ };
41
+ export function statusDisplay(s) {
42
+ if (!s)
43
+ return STATUS_DISPLAY.unknown ?? "";
44
+ return STATUS_DISPLAY[s] ?? STATUS_DISPLAY.unknown ?? "";
45
+ }
46
+ // ── Lens ids (the curated tabs on /items) ────────────────────────────
47
+ export const LENS_DISPLAY = {
48
+ all: "All items",
49
+ new: "Recently added",
50
+ hot: "Trending",
51
+ mature: "Established",
52
+ "good-to-learn": "Good to learn",
53
+ "production-like": "Production-like",
54
+ "beginner-friendly": "Beginner friendly",
55
+ "contribution-ready": "Contribution ready",
56
+ launches: "Launches",
57
+ "actively-developed": "Active",
58
+ "needs-maintainer": "Needs maintainer",
59
+ };
60
+ export function lensDisplay(id) {
61
+ if (!id)
62
+ return LENS_DISPLAY.all ?? "All";
63
+ return LENS_DISPLAY[id] ?? id;
64
+ }
65
+ // ── Sort ids (the /items sort dropdown) ──────────────────────────────
66
+ export const SORT_DISPLAY = {
67
+ "recently-updated": "Recently updated",
68
+ "most-starred": "Most starred",
69
+ "recently-added": "Recently added",
70
+ "best-overall": "Best overall",
71
+ alphabetical: "Alphabetical",
72
+ };
73
+ export function sortDisplay(id) {
74
+ if (!id)
75
+ return SORT_DISPLAY["recently-updated"] ?? "";
76
+ return SORT_DISPLAY[id] ?? id;
77
+ }
78
+ export function prettySlug(value) {
79
+ if (!value)
80
+ return "";
81
+ return value
82
+ .split(/[-_]+/)
83
+ .filter(Boolean)
84
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
85
+ .join(" ");
86
+ }
87
+ // ── Status option list (used by filter dropdowns) ───────────────────
88
+ // "needs-maintainer" is included even though it's a derived/composite
89
+ // status — filter dropdowns and chip rendering need to offer it
90
+ // alongside the raw AppStatus values.
91
+ export const STATUS_OPTIONS = [
92
+ "active",
93
+ "mature",
94
+ "quiet",
95
+ "stale",
96
+ "inactive",
97
+ "needs-maintainer",
98
+ "archived",
99
+ "historical",
100
+ "needs_review",
101
+ "unavailable",
102
+ "unknown",
103
+ ];
104
+ //# sourceMappingURL=directory-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-display.js","sourceRoot":"","sources":["../src/directory-display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared formatting helpers used across components.
3
+ *
4
+ * Keep these dependency-free so they can be imported by both server-
5
+ * rendered Astro components and any future client-side scripts.
6
+ */
7
+ /**
8
+ * Format a number compactly: 1234 → "1.2k", 12345 → "12k", 79 → "79".
9
+ * Used for hero/header star counts and other large-num displays.
10
+ */
11
+ export declare function compact(n: number): string;
12
+ /**
13
+ * Format a star count compactly. Returns null when input is not a
14
+ * finite number, so callers can render "—" without an extra guard.
15
+ */
16
+ export declare function formatStars(n: number | null | undefined): string | null;
17
+ /**
18
+ * Format an ISO date as a human "Xd ago" / "Xmo ago" / "Xy ago" string.
19
+ * Returns "—" for missing or invalid input, and "today" for future
20
+ * dates (which can happen with bad upstream timestamps).
21
+ */
22
+ export declare function formatRelative(iso: string | null | undefined): string;
23
+ /**
24
+ * Format an ISO date as a localized short date (e.g. "Jan 5, 2026").
25
+ * Returns the original string for unparseable input, or "—" when
26
+ * no value is provided.
27
+ */
28
+ export declare function formatDate(iso: string | null | undefined): string;
29
+ //# sourceMappingURL=directory-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-format.d.ts","sourceRoot":"","sources":["../src/directory-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcrE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CASjE"}