@grove-dev/core 0.3.1 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -142
- package/dist/build-data.d.ts.map +1 -1
- package/dist/build-data.js +13 -4
- package/dist/build-data.js.map +1 -1
- package/dist/contributors.d.ts +3 -0
- package/dist/contributors.d.ts.map +1 -1
- package/dist/contributors.js +46 -36
- package/dist/contributors.js.map +1 -1
- package/dist/directory-client.d.ts +11 -0
- package/dist/directory-client.d.ts.map +1 -0
- package/dist/directory-client.js +11 -0
- package/dist/directory-client.js.map +1 -0
- package/dist/directory-display.d.ts +27 -0
- package/dist/directory-display.d.ts.map +1 -0
- package/dist/directory-display.js +104 -0
- package/dist/directory-display.js.map +1 -0
- package/dist/directory-format.d.ts +29 -0
- package/dist/directory-format.d.ts.map +1 -0
- package/dist/directory-format.js +72 -0
- package/dist/directory-format.js.map +1 -0
- package/dist/directory-lenses.d.ts +59 -0
- package/dist/directory-lenses.d.ts.map +1 -0
- package/dist/directory-lenses.js +199 -0
- package/dist/directory-lenses.js.map +1 -0
- package/dist/directory-repo.d.ts +20 -0
- package/dist/directory-repo.d.ts.map +1 -0
- package/dist/directory-repo.js +31 -0
- package/dist/directory-repo.js.map +1 -0
- package/dist/directory-scores.d.ts +37 -0
- package/dist/directory-scores.d.ts.map +1 -0
- package/dist/directory-scores.js +76 -0
- package/dist/directory-scores.js.map +1 -0
- package/dist/directory-search.d.ts +119 -0
- package/dist/directory-search.d.ts.map +1 -0
- package/dist/directory-search.js +398 -0
- package/dist/directory-search.js.map +1 -0
- package/dist/directory-taxonomy.d.ts +19 -0
- package/dist/directory-taxonomy.d.ts.map +1 -0
- package/dist/directory-taxonomy.js +36 -0
- package/dist/directory-taxonomy.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/llms.js +1 -1
- package/dist/llms.js.map +1 -1
- package/dist/prepare.d.ts +20 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +75 -0
- package/dist/prepare.js.map +1 -0
- package/dist/schema.d.ts +56 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +38 -0
- package/dist/schema.js.map +1 -1
- package/dist/site-artifacts.d.ts +15 -0
- package/dist/site-artifacts.d.ts.map +1 -0
- package/dist/site-artifacts.js +122 -0
- package/dist/site-artifacts.js.map +1 -0
- package/dist/validate.js +4 -2
- package/dist/validate.js.map +1 -1
- package/package.json +9 -2
- package/dist/build-data.test.d.ts +0 -2
- package/dist/build-data.test.d.ts.map +0 -1
- package/dist/build-data.test.js +0 -196
- package/dist/build-data.test.js.map +0 -1
- package/dist/contributors.test.d.ts +0 -2
- package/dist/contributors.test.d.ts.map +0 -1
- package/dist/contributors.test.js +0 -79
- package/dist/contributors.test.js.map +0 -1
- package/dist/decisions.test.d.ts +0 -2
- package/dist/decisions.test.d.ts.map +0 -1
- package/dist/decisions.test.js +0 -205
- package/dist/decisions.test.js.map +0 -1
- package/dist/enrich.test.d.ts +0 -2
- package/dist/enrich.test.d.ts.map +0 -1
- package/dist/enrich.test.js +0 -105
- package/dist/enrich.test.js.map +0 -1
- package/dist/github-client.test.d.ts +0 -2
- package/dist/github-client.test.d.ts.map +0 -1
- package/dist/github-client.test.js +0 -176
- package/dist/github-client.test.js.map +0 -1
- package/dist/github.test.d.ts +0 -2
- package/dist/github.test.d.ts.map +0 -1
- package/dist/github.test.js +0 -73
- package/dist/github.test.js.map +0 -1
- package/dist/health.test.d.ts +0 -2
- package/dist/health.test.d.ts.map +0 -1
- package/dist/health.test.js +0 -183
- package/dist/health.test.js.map +0 -1
- package/dist/importer.test.d.ts +0 -2
- package/dist/importer.test.d.ts.map +0 -1
- package/dist/importer.test.js +0 -173
- package/dist/importer.test.js.map +0 -1
- package/dist/llms.test.d.ts +0 -2
- package/dist/llms.test.d.ts.map +0 -1
- package/dist/llms.test.js +0 -39
- package/dist/llms.test.js.map +0 -1
- package/dist/public-api.test.d.ts +0 -2
- package/dist/public-api.test.d.ts.map +0 -1
- package/dist/public-api.test.js +0 -13
- package/dist/public-api.test.js.map +0 -1
- package/dist/sitemap.test.d.ts +0 -2
- package/dist/sitemap.test.d.ts.map +0 -1
- package/dist/sitemap.test.js +0 -35
- package/dist/sitemap.test.js.map +0 -1
- package/dist/slug.test.d.ts +0 -2
- package/dist/slug.test.d.ts.map +0 -1
- package/dist/slug.test.js +0 -101
- package/dist/slug.test.js.map +0 -1
- package/dist/validate.test.d.ts +0 -2
- package/dist/validate.test.d.ts.map +0 -1
- package/dist/validate.test.js +0 -272
- package/dist/validate.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,158 +1,32 @@
|
|
|
1
1
|
# `@grove-dev/core`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The framework-free engine behind Grove directories.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Core owns:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
package/dist/build-data.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/build-data.js
CHANGED
|
@@ -229,6 +229,10 @@ 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
|
+
analytics: cfg.analytics,
|
|
235
|
+
facets: cfg.facets,
|
|
232
236
|
theme: cfg.theme,
|
|
233
237
|
integrations: cfg.integrations,
|
|
234
238
|
taxonomy,
|
|
@@ -242,11 +246,16 @@ export async function generate(cwd = process.cwd(), config) {
|
|
|
242
246
|
totalPlatforms: platforms.size,
|
|
243
247
|
totalOwners: owners.size,
|
|
244
248
|
totalStars,
|
|
249
|
+
repositoryStars: repoStats.stars ?? 0,
|
|
250
|
+
repositoryForks: repoStats.forks ?? 0,
|
|
251
|
+
repositoryContributors: repoStats.contributors ?? 0,
|
|
245
252
|
// origin / source repo — only present when sync:repo-stats has run
|
|
246
|
-
originalRepo: repoStats.originalRepo ??
|
|
247
|
-
originalStars: repoStats.stars ?? 0,
|
|
248
|
-
originalForks: repoStats.forks ?? 0,
|
|
249
|
-
originalContributors: repoStats.
|
|
253
|
+
originalRepo: repoStats.originalRepo ?? "",
|
|
254
|
+
originalStars: repoStats.originalRepo ? repoStats.stars ?? 0 : 0,
|
|
255
|
+
originalForks: repoStats.originalRepo ? repoStats.forks ?? 0 : 0,
|
|
256
|
+
originalContributors: repoStats.originalRepo
|
|
257
|
+
? repoStats.contributors ?? 0
|
|
258
|
+
: 0,
|
|
250
259
|
},
|
|
251
260
|
};
|
|
252
261
|
await writeFile(join(outDir, "site-config.json"), JSON.stringify(siteConfigPayload, null, 2), "utf8");
|
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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"}
|
package/dist/contributors.d.ts
CHANGED
|
@@ -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,
|
|
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,CA0HhC"}
|
package/dist/contributors.js
CHANGED
|
@@ -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
|
|
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,37 @@ 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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
}
|
|
41
|
+
const perPage = 100;
|
|
42
|
+
for (let page = 1;; page += 1) {
|
|
43
|
+
const contributorsResponse = await fetchImpl(`https://api.github.com/repos/${ref.owner}/${ref.repo}/contributors?per_page=${perPage}&anon=false&page=${page}`, { headers });
|
|
44
|
+
if (!contributorsResponse.ok && contributorsResponse.status !== 204) {
|
|
45
|
+
throw new Error(`GitHub contributors request failed for ${ref.owner}/${ref.repo} (page ${page}): ${contributorsResponse.status}`);
|
|
66
46
|
}
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
const data = contributorsResponse.status === 204
|
|
48
|
+
? []
|
|
49
|
+
: (await contributorsResponse.json());
|
|
50
|
+
for (const entry of data) {
|
|
51
|
+
if (!entry.login)
|
|
52
|
+
continue;
|
|
53
|
+
byUsername.set(entry.login, {
|
|
54
|
+
username: entry.login,
|
|
55
|
+
...(entry.avatar_url ? { avatarUrl: entry.avatar_url } : {}),
|
|
56
|
+
...(entry.html_url ? { profileUrl: entry.html_url } : {}),
|
|
57
|
+
contributions: entry.contributions ?? 0,
|
|
58
|
+
});
|
|
69
59
|
}
|
|
60
|
+
if (data.length < perPage)
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
const repositoryResponse = await fetchImpl(`https://api.github.com/repos/${ref.owner}/${ref.repo}`, { headers });
|
|
64
|
+
if (!repositoryResponse.ok) {
|
|
65
|
+
failed += 1;
|
|
70
66
|
}
|
|
67
|
+
const repository = repositoryResponse.ok
|
|
68
|
+
? await repositoryResponse.json()
|
|
69
|
+
: {};
|
|
71
70
|
const contributors = [...byUsername.values()].sort((a, b) => b.contributions - a.contributions ||
|
|
72
71
|
a.username.localeCompare(b.username));
|
|
73
72
|
await mkdir(dirname(outputPath), { recursive: true });
|
|
@@ -75,9 +74,20 @@ export async function syncContributors(options = {}) {
|
|
|
75
74
|
generatedAt: options.generatedAt ?? new Date().toISOString(),
|
|
76
75
|
contributors,
|
|
77
76
|
}, null, 2), "utf8");
|
|
77
|
+
await writeFile(repoStatsPath, JSON.stringify({
|
|
78
|
+
repoUrl: `https://github.com/${ref.owner}/${ref.repo}`,
|
|
79
|
+
stars: repository.stargazers_count ?? 0,
|
|
80
|
+
forks: repository.forks_count ?? 0,
|
|
81
|
+
watchers: repository.subscribers_count ?? 0,
|
|
82
|
+
openIssues: repository.open_issues_count ?? 0,
|
|
83
|
+
contributors: contributors.length,
|
|
84
|
+
defaultBranch: repository.default_branch,
|
|
85
|
+
pushedAt: repository.pushed_at,
|
|
86
|
+
}, null, 2), "utf8");
|
|
78
87
|
return {
|
|
79
88
|
outputPath,
|
|
80
|
-
|
|
89
|
+
repoStatsPath,
|
|
90
|
+
repositories: 1,
|
|
81
91
|
contributors: contributors.length,
|
|
82
92
|
failed,
|
|
83
93
|
};
|
package/dist/contributors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contributors.js","sourceRoot":"","sources":["../src/contributors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
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"}
|