@galaxy-foundry/content-reader 0.2.1 → 0.3.1
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 +25 -3
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -14
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@ export const contentReader = createContentReader({
|
|
|
32
32
|
contentReader.noteFiles('papers');
|
|
33
33
|
contentReader.noteIds('papers');
|
|
34
34
|
contentReader.noteTargets('papers');
|
|
35
|
+
contentReader.contentIndex();
|
|
35
36
|
contentReader.wikiLinkMap();
|
|
36
37
|
contentReader.remarkWikiLinks({ base: '/my-foundry' });
|
|
37
38
|
contentReader.resolveMarkdown(source, { base: '/my-foundry' });
|
|
@@ -50,7 +51,7 @@ Address precedence is deterministic:
|
|
|
50
51
|
|
|
51
52
|
1. Primary note addresses are registered in collection property order, then sorted note-path
|
|
52
53
|
order. A later primary overwrites an earlier primary, so collection declaration order is a
|
|
53
|
-
contractual part of a
|
|
54
|
+
contractual part of a content catalog with basename collisions.
|
|
54
55
|
2. Aliases fill empty addresses and never overwrite a primary. The first routed note wins when
|
|
55
56
|
two aliases collide.
|
|
56
57
|
3. Explicit `extraTargets` are applied last and may deliberately override either.
|
|
@@ -64,6 +65,26 @@ collection name to narrow it. Unlike `wikiLinkMap()`, it does not collapse prima
|
|
|
64
65
|
collisions, add aliases, or include explicit extra targets. Use it when every routed note matters,
|
|
65
66
|
such as checking that a static build emitted a page for each one.
|
|
66
67
|
|
|
68
|
+
`contentIndex()` exposes the richer build-time view from one walk. Its `notes` retain each routed
|
|
69
|
+
note's content-relative source file, parsed frontmatter when enabled, and route target.
|
|
70
|
+
`notesByAddress` applies the same primary and alias precedence as `wikiLinkMap()`, but its values
|
|
71
|
+
point back to those note records rather than only their site targets. A caster can therefore
|
|
72
|
+
project both source maps without walking or parsing the content tree again:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
const index = contentReader.contentIndex();
|
|
76
|
+
const sourcePath = (file: string) => `content/${file}`;
|
|
77
|
+
|
|
78
|
+
const slugMap = new Map(
|
|
79
|
+
[...index.notesByAddress].map(([address, note]) => [address, sourcePath(note.file)]),
|
|
80
|
+
);
|
|
81
|
+
const metaByPath = new Map(index.notes.map((note) => [sourcePath(note.file), note.meta ?? {}]));
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Configure `aliases` or `readFrontmatter: true` when a projection needs metadata. Explicit extra
|
|
85
|
+
targets remain exclusive to `wikiLinkMap()` because they are addresses without collection-backed
|
|
86
|
+
source records.
|
|
87
|
+
|
|
67
88
|
## Boundary
|
|
68
89
|
|
|
69
90
|
This package deliberately does not assemble zod schemas or Astro collections. Astro preserves the
|
|
@@ -71,8 +92,9 @@ frontmatter type of a collection only when each schema-bearing export is written
|
|
|
71
92
|
heterogeneous catalog collapses the inferred shapes. It also does not decide how a Package differs
|
|
72
93
|
from a Paper or how either is rendered. Those are the instance's content model.
|
|
73
94
|
|
|
74
|
-
The package touches the filesystem, so it belongs in build, validation,
|
|
75
|
-
browser bundles. Reusable Astro presentation lives in
|
|
95
|
+
The package touches the filesystem, so it belongs in build, validation, casting composition, and
|
|
96
|
+
Astro server code—not browser bundles. Reusable Astro presentation lives in
|
|
97
|
+
`@galaxy-foundry/site-kit`.
|
|
76
98
|
|
|
77
99
|
See the [content-reader boundary](../../docs/architecture/content-reader-boundary.md) for the
|
|
78
100
|
cross-package and instance ownership map.
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,20 @@ export interface ContentNoteTarget<Collection extends string = string, Target ex
|
|
|
14
14
|
}
|
|
15
15
|
/** A note's YAML frontmatter before an instance schema has parsed it. */
|
|
16
16
|
export type Frontmatter = Record<string, unknown>;
|
|
17
|
+
/** One routed note with the source and metadata projections build-time consumers need. */
|
|
18
|
+
export interface ContentNoteRecord<Collection extends string = string, Target extends ContentTarget = ContentTarget> extends ContentNoteTarget<Collection, Target> {
|
|
19
|
+
/** Path relative to the content root supplied through `contentPath`. */
|
|
20
|
+
file: string;
|
|
21
|
+
/** Parsed when aliases or `readFrontmatter` opt the reader into content reads. */
|
|
22
|
+
meta: Frontmatter | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** One content-tree walk, exposed before consumers project it into routes or cast inputs. */
|
|
25
|
+
export interface ContentIndex<Collection extends string = string, Target extends ContentTarget = ContentTarget> {
|
|
26
|
+
/** Every routed note in deterministic collection and path order. */
|
|
27
|
+
notes: readonly ContentNoteRecord<Collection, Target>[];
|
|
28
|
+
/** Primary and alias wiki-link addresses pointing back to those same note records. */
|
|
29
|
+
notesByAddress: ReadonlyMap<string, ContentNoteRecord<Collection, Target>>;
|
|
30
|
+
}
|
|
17
31
|
/** Extra wiki-link addresses derived from an instance's own note vocabulary. */
|
|
18
32
|
export type ContentAliases<Collections extends CollectionTable> = (meta: Frontmatter, id: string, collection: keyof Collections & string) => readonly string[];
|
|
19
33
|
export interface ExtraContentTarget<Target extends ContentTarget = ContentTarget> {
|
|
@@ -51,6 +65,7 @@ export interface ContentReader<Collections extends CollectionTable, Target exten
|
|
|
51
65
|
markdownFiles(): string[];
|
|
52
66
|
noteFiles<Name extends keyof Collections & string>(name: Name): string[];
|
|
53
67
|
noteIds<Name extends keyof Collections & string>(name: Name): string[];
|
|
68
|
+
contentIndex(): ContentIndex<keyof Collections & string, Target>;
|
|
54
69
|
noteTargets<Name extends keyof Collections & string = keyof Collections & string>(name?: Name): ContentNoteTarget<Name, Target>[];
|
|
55
70
|
wikiLinkMap(extraTargets?: readonly ExtraContentTarget<Target>[]): Map<string, Target>;
|
|
56
71
|
resolveLink(value: string, options?: ContentLinkOptions<Target>): ContentLink;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -98,27 +98,24 @@ export function createContentReader(options) {
|
|
|
98
98
|
for (const relativePath of noteFiles(name)) {
|
|
99
99
|
const id = noteIdFromPath(relativePath.slice(prefix.length));
|
|
100
100
|
const meta = aliases || readFrontmatter ? readNoteFrontmatter(contentPath(relativePath)) : undefined;
|
|
101
|
-
notes.push({
|
|
101
|
+
notes.push({
|
|
102
|
+
collection: name,
|
|
103
|
+
id,
|
|
104
|
+
file: relativePath,
|
|
105
|
+
meta,
|
|
106
|
+
target: targetOf(name, id, meta),
|
|
107
|
+
});
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
110
|
return notes;
|
|
105
111
|
};
|
|
106
|
-
const
|
|
107
|
-
const names = name === undefined ? Object.keys(collections) : [name];
|
|
108
|
-
return notesFor(names).map(({ collection, id, target }) => ({
|
|
109
|
-
collection: collection,
|
|
110
|
-
id,
|
|
111
|
-
target,
|
|
112
|
-
}));
|
|
113
|
-
};
|
|
114
|
-
const wikiLinkMap = (extraTargets = []) => {
|
|
112
|
+
const notesByAddress = (notes) => {
|
|
115
113
|
const map = new Map();
|
|
116
114
|
// Object property order is the collection-precedence contract. Keep primary registration in
|
|
117
115
|
// this first pass so no alias can take an address that belongs to a routed note. Within a
|
|
118
116
|
// collection noteFiles is sorted, making the full precedence deterministic.
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
map.set(slugify(id.replace(/\//g, '-')), target);
|
|
117
|
+
for (const note of notes)
|
|
118
|
+
map.set(slugify(note.id.replace(/\//g, '-')), note);
|
|
122
119
|
// Aliases fill empty addresses only. In an alias/alias collision, the first routed note wins;
|
|
123
120
|
// in an alias/primary collision, the primary wins regardless of collection order.
|
|
124
121
|
if (aliases) {
|
|
@@ -126,10 +123,26 @@ export function createContentReader(options) {
|
|
|
126
123
|
for (const alias of aliases(note.meta, note.id, note.collection)) {
|
|
127
124
|
const key = slugify(alias);
|
|
128
125
|
if (!map.has(key))
|
|
129
|
-
map.set(key, note
|
|
126
|
+
map.set(key, note);
|
|
130
127
|
}
|
|
131
128
|
}
|
|
132
129
|
}
|
|
130
|
+
return map;
|
|
131
|
+
};
|
|
132
|
+
const contentIndex = () => {
|
|
133
|
+
const notes = notesFor(Object.keys(collections));
|
|
134
|
+
return { notes, notesByAddress: notesByAddress(notes) };
|
|
135
|
+
};
|
|
136
|
+
const noteTargets = (name) => {
|
|
137
|
+
const names = name === undefined ? Object.keys(collections) : [name];
|
|
138
|
+
return notesFor(names).map(({ collection, id, target }) => ({
|
|
139
|
+
collection: collection,
|
|
140
|
+
id,
|
|
141
|
+
target,
|
|
142
|
+
}));
|
|
143
|
+
};
|
|
144
|
+
const wikiLinkMap = (extraTargets = []) => {
|
|
145
|
+
const map = new Map([...contentIndex().notesByAddress].map(([address, note]) => [address, note.target]));
|
|
133
146
|
// Explicit extra targets are the caller's escape hatch and retain their existing final-write
|
|
134
147
|
// behavior, including the ability to override a routed target deliberately.
|
|
135
148
|
for (const { key, target } of extraTargets)
|
|
@@ -142,6 +155,7 @@ export function createContentReader(options) {
|
|
|
142
155
|
.sort(),
|
|
143
156
|
noteFiles,
|
|
144
157
|
noteIds,
|
|
158
|
+
contentIndex,
|
|
145
159
|
noteTargets,
|
|
146
160
|
wikiLinkMap,
|
|
147
161
|
resolveLink: (value, linkOptions = {}) => resolveContentLink(value, wikiLinkMap(linkOptions.extraTargets), linkOptions.base),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,yCAAyC,CAAC;AAClG,OAAO,EACL,aAAa,EACb,eAAe,EACf,0BAA0B,EAC1B,OAAO,GACR,MAAM,4BAA4B,CAAC;AACpC,OAAO,eAAe,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galaxy-foundry/content-reader",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Collection-backed content and wiki-link plumbing
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Collection-backed content records and wiki-link plumbing for Foundry build-time consumers; schemas, routes, and domain presentation stay per-instance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"js-yaml": "^4.1.0",
|
|
35
|
-
"@galaxy-foundry/kind-schema": "^0.
|
|
35
|
+
"@galaxy-foundry/kind-schema": "^0.6.0",
|
|
36
36
|
"@galaxy-foundry/wiki-links": "^0.4.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|