@grove-dev/core 0.7.0 → 0.8.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 +82 -77
- package/dist/build-data.js.map +1 -1
- 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 +99 -107
- 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/github-client.js +6 -6
- package/dist/github.d.ts +1 -1
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +15 -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/importer.d.ts +2 -2
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +1 -1
- package/dist/importer.js.map +1 -1
- package/dist/index.d.ts +66 -63
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -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.map +1 -1
- 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 +25 -35
- package/dist/prepare.js.map +1 -1
- package/dist/related.d.ts +1 -1
- package/dist/schema.d.ts +21 -21
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +130 -141
- 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 +56 -58
- 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 +1 -1
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { DEFAULT_FACETS, FACET_IDS } from
|
|
1
|
+
import { parse, stringify } from 'yaml';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { DEFAULT_FACETS, FACET_IDS } from './directory-facets.js';
|
|
4
4
|
// ──────────────────────────────────────────────────────────────────────
|
|
5
5
|
// Blueprints and kinds
|
|
6
6
|
// ──────────────────────────────────────────────────────────────────────
|
|
@@ -10,91 +10,82 @@ import { DEFAULT_FACETS, FACET_IDS } from "./directory-facets.js";
|
|
|
10
10
|
* V1 ships three fixed blueprints. They are not extensible — no custom
|
|
11
11
|
* blueprint API in V1.
|
|
12
12
|
*/
|
|
13
|
-
export const blueprintSchema = z.enum([
|
|
14
|
-
"project-directory",
|
|
15
|
-
"resource-hub",
|
|
16
|
-
"ecosystem-map",
|
|
17
|
-
]);
|
|
13
|
+
export const blueprintSchema = z.enum(['project-directory', 'resource-hub', 'ecosystem-map']);
|
|
18
14
|
/**
|
|
19
15
|
* Each blueprint is bound to a single resource kind. Records are
|
|
20
16
|
* discriminated by `kind`, which must match the blueprint of the site
|
|
21
17
|
* that owns them.
|
|
22
18
|
*/
|
|
23
|
-
export const resourceKindSchema = z.enum([
|
|
19
|
+
export const resourceKindSchema = z.enum(['project', 'resource', 'entity']);
|
|
24
20
|
export const blueprintKind = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
'project-directory': 'project',
|
|
22
|
+
'resource-hub': 'resource',
|
|
23
|
+
'ecosystem-map': 'entity',
|
|
28
24
|
};
|
|
29
25
|
// ──────────────────────────────────────────────────────────────────────
|
|
30
26
|
// Health & decision labels
|
|
31
27
|
// ──────────────────────────────────────────────────────────────────────
|
|
32
28
|
export const healthStatusSchema = z.enum([
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
'active',
|
|
30
|
+
'mature',
|
|
31
|
+
'stale',
|
|
32
|
+
'inactive',
|
|
33
|
+
'archived',
|
|
34
|
+
'unknown',
|
|
35
|
+
'historical',
|
|
36
|
+
'needs_review',
|
|
37
|
+
'quiet',
|
|
38
|
+
'unavailable',
|
|
43
39
|
]);
|
|
44
40
|
export const decisionVisibilitySchema = z.enum([
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
]);
|
|
52
|
-
export const healthTierSchema = z.enum([
|
|
53
|
-
"curated",
|
|
54
|
-
"listed",
|
|
55
|
-
"experimental",
|
|
56
|
-
"hidden",
|
|
41
|
+
'highlight',
|
|
42
|
+
'keep',
|
|
43
|
+
'needs_review',
|
|
44
|
+
'hide',
|
|
45
|
+
'remove',
|
|
46
|
+
'historical',
|
|
57
47
|
]);
|
|
48
|
+
export const healthTierSchema = z.enum(['curated', 'listed', 'experimental', 'hidden']);
|
|
58
49
|
// ──────────────────────────────────────────────────────────────────────
|
|
59
50
|
// Curation enums (shared)
|
|
60
51
|
// ──────────────────────────────────────────────────────────────────────
|
|
61
52
|
export const projectTypeSchema = z.enum([
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
53
|
+
'real-app',
|
|
54
|
+
'production',
|
|
55
|
+
'reference',
|
|
56
|
+
'library',
|
|
57
|
+
'tool',
|
|
58
|
+
'demo',
|
|
59
|
+
'template',
|
|
60
|
+
'historical',
|
|
70
61
|
]);
|
|
71
62
|
export const resourceTypeSchema = z.enum([
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
63
|
+
'guide',
|
|
64
|
+
'comparison',
|
|
65
|
+
'link',
|
|
66
|
+
'explainer',
|
|
67
|
+
'tool',
|
|
68
|
+
'video',
|
|
69
|
+
'article',
|
|
70
|
+
'course',
|
|
71
|
+
'book',
|
|
72
|
+
'podcast',
|
|
73
|
+
'other',
|
|
83
74
|
]);
|
|
84
75
|
export const entityTypeSchema = z.enum([
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
'company',
|
|
77
|
+
'organization',
|
|
78
|
+
'community',
|
|
79
|
+
'school',
|
|
80
|
+
'university',
|
|
81
|
+
'research-lab',
|
|
82
|
+
'agency',
|
|
83
|
+
'service',
|
|
84
|
+
'product',
|
|
85
|
+
'person',
|
|
86
|
+
'other',
|
|
96
87
|
]);
|
|
97
|
-
export const appLabelSchema = z.enum([
|
|
88
|
+
export const appLabelSchema = z.enum(['new', 'hot', 'mature', 'featured']);
|
|
98
89
|
export const scoreSchema = z.object({
|
|
99
90
|
activity: z.number().min(0).max(100).optional(),
|
|
100
91
|
maturity: z.number().min(0).max(100).optional(),
|
|
@@ -189,20 +180,17 @@ export const githubMetadataSchema = z.object({
|
|
|
189
180
|
size: z.number().int().nonnegative().optional(),
|
|
190
181
|
files: z.record(z.string(), z.boolean()).optional(),
|
|
191
182
|
monthlyCommits: z
|
|
192
|
-
.array(z.union([
|
|
193
|
-
z.number(),
|
|
194
|
-
z.object({ month: z.string(), commits: z.number() }),
|
|
195
|
-
]))
|
|
183
|
+
.array(z.union([z.number(), z.object({ month: z.string(), commits: z.number() })]))
|
|
196
184
|
.optional(),
|
|
197
185
|
});
|
|
198
186
|
export const healthBlockSchema = z.object({
|
|
199
|
-
status: healthStatusSchema.default(
|
|
200
|
-
maturity: z.enum([
|
|
201
|
-
tier: healthTierSchema.default(
|
|
202
|
-
visibility: decisionVisibilitySchema.default(
|
|
187
|
+
status: healthStatusSchema.default('unknown'),
|
|
188
|
+
maturity: z.enum(['experimental', 'useful', 'mature', 'unknown']).default('unknown'),
|
|
189
|
+
tier: healthTierSchema.default('experimental'),
|
|
190
|
+
visibility: decisionVisibilitySchema.default('keep'),
|
|
203
191
|
cleanupCandidate: z.boolean().default(false),
|
|
204
192
|
staleReason: z.string().nullable().optional(),
|
|
205
|
-
confidence: z.enum([
|
|
193
|
+
confidence: z.enum(['low', 'medium', 'high']).default('medium'),
|
|
206
194
|
reasons: z.array(z.string()).default([]),
|
|
207
195
|
});
|
|
208
196
|
export const healthEntrySchema = z.object({
|
|
@@ -259,7 +247,7 @@ const curationBlockSchema = z
|
|
|
259
247
|
// ──────────────────────────────────────────────────────────────────────
|
|
260
248
|
const resourceBaseSchema = z.object({
|
|
261
249
|
slug: z.string().min(1),
|
|
262
|
-
description: z.string().default(
|
|
250
|
+
description: z.string().default(''),
|
|
263
251
|
/**
|
|
264
252
|
* Open Apps-written summary, surfaced as the lead paragraph on the
|
|
265
253
|
* detail page above the original (GitHub-sourced) description.
|
|
@@ -275,21 +263,22 @@ const resourceBaseSchema = z.object({
|
|
|
275
263
|
* overwriting what GitHub says the project is.
|
|
276
264
|
*/
|
|
277
265
|
sourceDescription: z.string().optional(),
|
|
278
|
-
category: z.string().min(1).default(
|
|
266
|
+
category: z.string().min(1).default('uncategorized'),
|
|
279
267
|
tags: z.array(z.string()).default([]),
|
|
280
268
|
links: linksSchema,
|
|
281
269
|
content: z.string().optional(), // path to markdown body under content/records/
|
|
282
270
|
source: z
|
|
283
271
|
.object({
|
|
284
|
-
type: z
|
|
285
|
-
.
|
|
272
|
+
type: z
|
|
273
|
+
.enum(['manual', 'github-topic', 'awesome-list', 'submit', 'import'])
|
|
274
|
+
.default('manual'),
|
|
286
275
|
file: z.string().optional(),
|
|
287
276
|
url: z.string().optional(),
|
|
288
277
|
provider: z.string().optional(),
|
|
289
278
|
owner: z.string().optional(),
|
|
290
279
|
repo: z.string().optional(),
|
|
291
280
|
})
|
|
292
|
-
.default({ type:
|
|
281
|
+
.default({ type: 'manual' }),
|
|
293
282
|
curation: curationBlockSchema,
|
|
294
283
|
scores: scoreSchema.default({}),
|
|
295
284
|
/**
|
|
@@ -300,13 +289,13 @@ const resourceBaseSchema = z.object({
|
|
|
300
289
|
* Defaults to "keep" so existing YAML files without the field
|
|
301
290
|
* continue to validate.
|
|
302
291
|
*/
|
|
303
|
-
visibility: decisionVisibilitySchema.default(
|
|
292
|
+
visibility: decisionVisibilitySchema.default('keep'),
|
|
304
293
|
});
|
|
305
294
|
// ──────────────────────────────────────────────────────────────────────
|
|
306
295
|
// Blueprint: project-directory — kind: project
|
|
307
296
|
// ──────────────────────────────────────────────────────────────────────
|
|
308
297
|
export const projectRecordSchema = resourceBaseSchema.extend({
|
|
309
|
-
kind: z.literal(
|
|
298
|
+
kind: z.literal('project'),
|
|
310
299
|
name: z.string().min(1),
|
|
311
300
|
projectType: projectTypeSchema.optional(),
|
|
312
301
|
stack: z.string().optional(),
|
|
@@ -316,8 +305,8 @@ export const projectRecordSchema = resourceBaseSchema.extend({
|
|
|
316
305
|
// authored when a record is curated; otherwise derived from the
|
|
317
306
|
// GitHub sync's `license.spdx_id` field at build time.
|
|
318
307
|
licenses: z.array(z.string()).default([]),
|
|
319
|
-
difficulty: z.enum([
|
|
320
|
-
codebaseSize: z.enum([
|
|
308
|
+
difficulty: z.enum(['beginner', 'intermediate', 'advanced']).optional(),
|
|
309
|
+
codebaseSize: z.enum(['small', 'medium', 'large', 'huge']).optional(),
|
|
321
310
|
// Canonical repo URL. Distinct from `links.github`, which is the
|
|
322
311
|
// human-facing link on the page; `repoUrl` is the single source
|
|
323
312
|
// for owner/repo extraction, avatar fallback, and "view repo" CTAs.
|
|
@@ -379,7 +368,7 @@ export const projectRecordSchema = resourceBaseSchema.extend({
|
|
|
379
368
|
// Blueprint: resource-hub — kind: resource
|
|
380
369
|
// ──────────────────────────────────────────────────────────────────────
|
|
381
370
|
export const resourceRecordSchema = resourceBaseSchema.extend({
|
|
382
|
-
kind: z.literal(
|
|
371
|
+
kind: z.literal('resource'),
|
|
383
372
|
title: z.string().min(1),
|
|
384
373
|
type: resourceTypeSchema,
|
|
385
374
|
topic: z.string().min(1),
|
|
@@ -391,7 +380,7 @@ export const resourceRecordSchema = resourceBaseSchema.extend({
|
|
|
391
380
|
// Blueprint: ecosystem-map — kind: entity
|
|
392
381
|
// ──────────────────────────────────────────────────────────────────────
|
|
393
382
|
export const entityRecordSchema = resourceBaseSchema.extend({
|
|
394
|
-
kind: z.literal(
|
|
383
|
+
kind: z.literal('entity'),
|
|
395
384
|
name: z.string().min(1),
|
|
396
385
|
type: entityTypeSchema,
|
|
397
386
|
founded: z.string().optional(),
|
|
@@ -402,7 +391,7 @@ export const entityRecordSchema = resourceBaseSchema.extend({
|
|
|
402
391
|
// ──────────────────────────────────────────────────────────────────────
|
|
403
392
|
// Discriminated union: Resource
|
|
404
393
|
// ──────────────────────────────────────────────────────────────────────
|
|
405
|
-
export const resourceSchema = z.discriminatedUnion(
|
|
394
|
+
export const resourceSchema = z.discriminatedUnion('kind', [
|
|
406
395
|
projectRecordSchema,
|
|
407
396
|
resourceRecordSchema,
|
|
408
397
|
entityRecordSchema,
|
|
@@ -472,7 +461,7 @@ export const githubIntegrationSchema = z.union([
|
|
|
472
461
|
* callers (`grove sync`, CI workflows) can gate each feature.
|
|
473
462
|
*/
|
|
474
463
|
export function normalizeGithubIntegration(value) {
|
|
475
|
-
if (typeof value ===
|
|
464
|
+
if (typeof value === 'boolean') {
|
|
476
465
|
return { metadata: value, contributors: value, health: value };
|
|
477
466
|
}
|
|
478
467
|
return {
|
|
@@ -489,23 +478,23 @@ export const themeSchema = z.object({
|
|
|
489
478
|
*/
|
|
490
479
|
primaryColor: z
|
|
491
480
|
.string()
|
|
492
|
-
.regex(/^#[0-9a-fA-F]{3,8}$/,
|
|
481
|
+
.regex(/^#[0-9a-fA-F]{3,8}$/, 'theme.primaryColor must be a hex color such as #4f46e5')
|
|
493
482
|
.optional(),
|
|
494
|
-
radius: z.enum([
|
|
495
|
-
density: z.enum([
|
|
496
|
-
containerWidth: z.string().default(
|
|
483
|
+
radius: z.enum(['none', 'soft', 'round']).default('soft'),
|
|
484
|
+
density: z.enum(['compact', 'comfortable', 'spacious']).default('comfortable'),
|
|
485
|
+
containerWidth: z.string().default('72rem'),
|
|
497
486
|
});
|
|
498
487
|
// ──────────────────────────────────────────────────────────────────────
|
|
499
488
|
// Audit manifest (consumed by `grove audit`)
|
|
500
489
|
// ──────────────────────────────────────────────────────────────────────
|
|
501
490
|
const auditPageTypeSchema = z.enum([
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
491
|
+
'home',
|
|
492
|
+
'directory',
|
|
493
|
+
'collection',
|
|
494
|
+
'record',
|
|
495
|
+
'content',
|
|
496
|
+
'empty',
|
|
497
|
+
'404',
|
|
509
498
|
]);
|
|
510
499
|
const auditPageManifestEntrySchema = z.object({
|
|
511
500
|
path: z.string().min(1),
|
|
@@ -542,10 +531,10 @@ export const readmeConfigSchema = z.object({
|
|
|
542
531
|
showBrowseLink: z.boolean().default(true),
|
|
543
532
|
});
|
|
544
533
|
export const groveConfigSchema = z.object({
|
|
545
|
-
blueprint: blueprintSchema.default(
|
|
534
|
+
blueprint: blueprintSchema.default('project-directory'),
|
|
546
535
|
site: z.object({
|
|
547
536
|
name: z.string().min(1),
|
|
548
|
-
tagline: z.string().default(
|
|
537
|
+
tagline: z.string().default('A growing community knowledge site.'),
|
|
549
538
|
description: z.string().optional(),
|
|
550
539
|
url: z.string().url().optional(),
|
|
551
540
|
repoUrl: z.string().url().optional(),
|
|
@@ -565,7 +554,7 @@ export const groveConfigSchema = z.object({
|
|
|
565
554
|
* BCP-47 language tag for the published site. Drives `<html lang>`,
|
|
566
555
|
* `og:locale`, and JSON-LD `inLanguage`.
|
|
567
556
|
*/
|
|
568
|
-
locale: z.string().default(
|
|
557
|
+
locale: z.string().default('en'),
|
|
569
558
|
/**
|
|
570
559
|
* Twitter/X handle for the site (e.g. `@grove`). Emitted as
|
|
571
560
|
* `twitter:site` on every page when set.
|
|
@@ -576,7 +565,7 @@ export const groveConfigSchema = z.object({
|
|
|
576
565
|
.object({
|
|
577
566
|
googleAnalyticsId: z
|
|
578
567
|
.string()
|
|
579
|
-
.regex(/^G-[A-Z0-9]+$/,
|
|
568
|
+
.regex(/^G-[A-Z0-9]+$/, 'Expected a GA4 measurement ID such as G-XXXXXX')
|
|
580
569
|
.optional(),
|
|
581
570
|
})
|
|
582
571
|
.default({}),
|
|
@@ -622,7 +611,7 @@ export const groveConfigSchema = z.object({
|
|
|
622
611
|
facets: z
|
|
623
612
|
.array(z.enum(FACET_IDS))
|
|
624
613
|
.refine((facets) => new Set(facets).size === facets.length, {
|
|
625
|
-
message:
|
|
614
|
+
message: 'browse.facets contains duplicate entries',
|
|
626
615
|
})
|
|
627
616
|
.default([...DEFAULT_FACETS]),
|
|
628
617
|
})
|
|
@@ -638,8 +627,8 @@ export const groveConfigSchema = z.object({
|
|
|
638
627
|
.unknown()
|
|
639
628
|
.optional()
|
|
640
629
|
.refine((value) => value === undefined, {
|
|
641
|
-
message:
|
|
642
|
-
`Supported ids: ${FACET_IDS.join(
|
|
630
|
+
message: '`facets` moved to `browse.facets` in grove.config.ts. ' +
|
|
631
|
+
`Supported ids: ${FACET_IDS.join(', ')} (canonical spellings only).`,
|
|
643
632
|
}),
|
|
644
633
|
integrations: z
|
|
645
634
|
.object({
|
|
@@ -678,30 +667,30 @@ export const groveConfigSchema = z.object({
|
|
|
678
667
|
readme: readmeConfigSchema.optional(),
|
|
679
668
|
paths: z
|
|
680
669
|
.object({
|
|
681
|
-
dataDir: z.string().default(
|
|
682
|
-
contentDir: z.string().default(
|
|
683
|
-
recordsDir: z.string().default(
|
|
684
|
-
pagesDir: z.string().default(
|
|
685
|
-
bodiesDir: z.string().default(
|
|
686
|
-
publicDir: z.string().default(
|
|
687
|
-
taxonomyDir: z.string().default(
|
|
688
|
-
generatedDir: z.string().default(
|
|
689
|
-
health: z.string().default(
|
|
690
|
-
decisions: z.string().default(
|
|
691
|
-
overrides: z.string().default(
|
|
670
|
+
dataDir: z.string().default('data'),
|
|
671
|
+
contentDir: z.string().default('content'),
|
|
672
|
+
recordsDir: z.string().default('data/records'),
|
|
673
|
+
pagesDir: z.string().default('content/pages'),
|
|
674
|
+
bodiesDir: z.string().default('content/records'),
|
|
675
|
+
publicDir: z.string().default('public'),
|
|
676
|
+
taxonomyDir: z.string().default('data/taxonomy'),
|
|
677
|
+
generatedDir: z.string().default('data/generated'),
|
|
678
|
+
health: z.string().default('data/health.yml'),
|
|
679
|
+
decisions: z.string().default('data/decisions.yml'),
|
|
680
|
+
overrides: z.string().default('data/overrides.yml'),
|
|
692
681
|
})
|
|
693
682
|
.default({
|
|
694
|
-
dataDir:
|
|
695
|
-
contentDir:
|
|
696
|
-
recordsDir:
|
|
697
|
-
pagesDir:
|
|
698
|
-
bodiesDir:
|
|
699
|
-
publicDir:
|
|
700
|
-
taxonomyDir:
|
|
701
|
-
generatedDir:
|
|
702
|
-
health:
|
|
703
|
-
decisions:
|
|
704
|
-
overrides:
|
|
683
|
+
dataDir: 'data',
|
|
684
|
+
contentDir: 'content',
|
|
685
|
+
recordsDir: 'data/records',
|
|
686
|
+
pagesDir: 'content/pages',
|
|
687
|
+
bodiesDir: 'content/records',
|
|
688
|
+
publicDir: 'public',
|
|
689
|
+
taxonomyDir: 'data/taxonomy',
|
|
690
|
+
generatedDir: 'data/generated',
|
|
691
|
+
health: 'data/health.yml',
|
|
692
|
+
decisions: 'data/decisions.yml',
|
|
693
|
+
overrides: 'data/overrides.yml',
|
|
705
694
|
}),
|
|
706
695
|
});
|
|
707
696
|
// ──────────────────────────────────────────────────────────────────────
|
|
@@ -725,8 +714,8 @@ export function parseRecordYaml(text, fileSlug) {
|
|
|
725
714
|
// record file cannot smuggle `!!binary` / `!!js/function` / etc.
|
|
726
715
|
// into host objects. The default schema would interpret them.
|
|
727
716
|
// (Implementation-checklist.md #27.)
|
|
728
|
-
const raw = parse(text, { schema:
|
|
729
|
-
if (typeof raw !==
|
|
717
|
+
const raw = parse(text, { schema: 'core' }) ?? {};
|
|
718
|
+
if (typeof raw !== 'object' || Array.isArray(raw)) {
|
|
730
719
|
throw new Error(`${fileSlug}: record file must contain a YAML mapping`);
|
|
731
720
|
}
|
|
732
721
|
return raw;
|
|
@@ -735,7 +724,7 @@ export function stringifyRecordYaml(record) {
|
|
|
735
724
|
return stringify(record, {
|
|
736
725
|
lineWidth: 100,
|
|
737
726
|
singleQuote: false,
|
|
738
|
-
defaultStringType:
|
|
727
|
+
defaultStringType: 'PLAIN',
|
|
739
728
|
});
|
|
740
729
|
}
|
|
741
730
|
export function getOwnerRepoFromUrl(repoUrl) {
|
|
@@ -748,16 +737,16 @@ export function getOwnerRepoFromUrl(repoUrl) {
|
|
|
748
737
|
const repo = m[2];
|
|
749
738
|
if (!owner || !repo)
|
|
750
739
|
return null;
|
|
751
|
-
return { owner, repo: repo.replace(/\.git$/,
|
|
740
|
+
return { owner, repo: repo.replace(/\.git$/, '') };
|
|
752
741
|
}
|
|
753
742
|
export function isIndexProject(r) {
|
|
754
|
-
return r.kind ===
|
|
743
|
+
return r.kind === 'project';
|
|
755
744
|
}
|
|
756
745
|
export function isIndexResource(r) {
|
|
757
|
-
return r.kind ===
|
|
746
|
+
return r.kind === 'resource';
|
|
758
747
|
}
|
|
759
748
|
export function isIndexEntity(r) {
|
|
760
|
-
return r.kind ===
|
|
749
|
+
return r.kind === 'entity';
|
|
761
750
|
}
|
|
762
751
|
/**
|
|
763
752
|
* Project a Resource to a stable, search-index-friendly summary
|
|
@@ -781,15 +770,15 @@ export function toIndexRecord(record) {
|
|
|
781
770
|
description: record.description,
|
|
782
771
|
content: record.content,
|
|
783
772
|
curation: record.curation,
|
|
784
|
-
licenses: record.kind ===
|
|
773
|
+
licenses: record.kind === 'project' ? (record.licenses ?? []) : [],
|
|
785
774
|
summary: record.summary,
|
|
786
775
|
sourceDescription: record.sourceDescription,
|
|
787
776
|
};
|
|
788
|
-
if (record.kind ===
|
|
777
|
+
if (record.kind === 'project') {
|
|
789
778
|
const r = record;
|
|
790
779
|
return {
|
|
791
780
|
...base,
|
|
792
|
-
kind:
|
|
781
|
+
kind: 'project',
|
|
793
782
|
name: r.name,
|
|
794
783
|
stack: r.stack,
|
|
795
784
|
stacks: r.stacks ?? [],
|
|
@@ -810,7 +799,7 @@ export function toIndexRecord(record) {
|
|
|
810
799
|
// from signals) or the curation override (`decisions.yml`).
|
|
811
800
|
// The generate step folds the latter in before serialising,
|
|
812
801
|
// so this is a best-effort projection of the current state.
|
|
813
|
-
visibility: r.health?.visibility ??
|
|
802
|
+
visibility: r.health?.visibility ?? 'keep',
|
|
814
803
|
github: r.github?.repository
|
|
815
804
|
? {
|
|
816
805
|
fullName: r.github.repository.full_name,
|
|
@@ -826,11 +815,11 @@ export function toIndexRecord(record) {
|
|
|
826
815
|
: undefined,
|
|
827
816
|
};
|
|
828
817
|
}
|
|
829
|
-
if (record.kind ===
|
|
818
|
+
if (record.kind === 'resource') {
|
|
830
819
|
const r = record;
|
|
831
820
|
return {
|
|
832
821
|
...base,
|
|
833
|
-
kind:
|
|
822
|
+
kind: 'resource',
|
|
834
823
|
title: r.title,
|
|
835
824
|
type: r.type,
|
|
836
825
|
topic: r.topic,
|
|
@@ -848,7 +837,7 @@ export function toIndexRecord(record) {
|
|
|
848
837
|
const e = record;
|
|
849
838
|
return {
|
|
850
839
|
...base,
|
|
851
|
-
kind:
|
|
840
|
+
kind: 'entity',
|
|
852
841
|
name: e.name,
|
|
853
842
|
type: e.type,
|
|
854
843
|
founded: e.founded,
|