@refrakt-md/content 0.7.1 → 0.7.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.
package/dist/index.d.ts CHANGED
@@ -6,4 +6,6 @@ export { buildNavigation, type NavTree, type NavGroup, type NavItem } from './na
6
6
  export { loadContent, type Site, type SitePage } from './site.js';
7
7
  export { generateSitemap, type SitemapEntry } from './sitemap.js';
8
8
  export { collectRuneTypes, analyzeRuneUsage, type RuneUsageReport } from './analyze.js';
9
+ export { EntityRegistryImpl } from './registry.js';
10
+ export { runPipeline, type HookSet, type PipelineResult, type PipelineStats } from './pipeline.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -6,4 +6,6 @@ export { buildNavigation } from './navigation.js';
6
6
  export { loadContent } from './site.js';
7
7
  export { generateSitemap } from './sitemap.js';
8
8
  export { collectRuneTypes, analyzeRuneUsage } from './analyze.js';
9
+ export { EntityRegistryImpl } from './registry.js';
10
+ export { runPipeline } from './pipeline.js';
9
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA6D,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAoC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,eAAe,EAA6C,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAA4B,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA6D,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAoC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,eAAe,EAA6C,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAA4B,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAyD,MAAM,eAAe,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { PackagePipelineHooks, AggregatedData, PipelineWarning } from '@refrakt-md/types';
2
+ import type { SitePage } from './site.js';
3
+ /** A package and its pipeline hooks, ready to run */
4
+ export interface HookSet {
5
+ packageName: string;
6
+ hooks: PackagePipelineHooks;
7
+ }
8
+ /** Build-phase statistics from the pipeline run */
9
+ export interface PipelineStats {
10
+ /** Total pages processed */
11
+ pageCount: number;
12
+ /** Total entities registered across all packages */
13
+ entityCount: number;
14
+ /** Number of packages that ran at least one hook */
15
+ packageCount: number;
16
+ }
17
+ /** Result of running the cross-page pipeline */
18
+ export interface PipelineResult {
19
+ /** Pages with renderables updated by any postProcess hooks */
20
+ pages: SitePage[];
21
+ /** Cross-page data produced by all aggregate hooks, keyed by package name */
22
+ aggregated: AggregatedData;
23
+ /** Diagnostics collected across all phases */
24
+ warnings: PipelineWarning[];
25
+ /** Counts for build summary output */
26
+ stats: PipelineStats;
27
+ }
28
+ /**
29
+ * Run phases 2–4 of the cross-page pipeline against a loaded page array.
30
+ *
31
+ * Phase 2 — Register: each hookSet scans all pages, registers named entities
32
+ * Phase 3 — Aggregate: each hookSet builds cross-page indexes from the full registry
33
+ * Phase 4 — Post-process: each hookSet enriches pages using aggregated data
34
+ *
35
+ * Hook execution is ordered: hookSets run in the order they appear in the array.
36
+ * Errors in individual hooks are caught, converted to PipelineWarning entries,
37
+ * and the pipeline continues with the next hook / page.
38
+ */
39
+ export declare function runPipeline(pages: SitePage[], hookSets: HookSet[]): Promise<PipelineResult>;
40
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EAGpB,cAAc,EACd,eAAe,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,qDAAqD;AACrD,MAAM,WAAW,OAAO;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,oBAAoB,CAAC;CAC5B;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC7B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,6EAA6E;IAC7E,UAAU,EAAE,cAAc,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,sCAAsC;IACtC,KAAK,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAChC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,cAAc,CAAC,CAqEzB"}
@@ -0,0 +1,98 @@
1
+ import { EntityRegistryImpl } from './registry.js';
2
+ /**
3
+ * Run phases 2–4 of the cross-page pipeline against a loaded page array.
4
+ *
5
+ * Phase 2 — Register: each hookSet scans all pages, registers named entities
6
+ * Phase 3 — Aggregate: each hookSet builds cross-page indexes from the full registry
7
+ * Phase 4 — Post-process: each hookSet enriches pages using aggregated data
8
+ *
9
+ * Hook execution is ordered: hookSets run in the order they appear in the array.
10
+ * Errors in individual hooks are caught, converted to PipelineWarning entries,
11
+ * and the pipeline continues with the next hook / page.
12
+ */
13
+ export async function runPipeline(pages, hookSets) {
14
+ const warnings = [];
15
+ const registry = new EntityRegistryImpl();
16
+ // Convert SitePage[] → TransformedPage[] (lightweight view, no deep copy)
17
+ const transformedPages = pages.map(pageToTransformed);
18
+ // ─── Phase 2: Register ───
19
+ for (const { packageName, hooks } of hookSets) {
20
+ if (!hooks.register)
21
+ continue;
22
+ const ctx = makeContext(warnings, 'register', packageName);
23
+ try {
24
+ hooks.register(transformedPages, registry, ctx);
25
+ }
26
+ catch (err) {
27
+ ctx.error(err.message);
28
+ }
29
+ }
30
+ // ─── Phase 3: Aggregate ───
31
+ const aggregated = {};
32
+ const frozenRegistry = registry;
33
+ for (const { packageName, hooks } of hookSets) {
34
+ if (!hooks.aggregate)
35
+ continue;
36
+ const ctx = makeContext(warnings, 'aggregate', packageName);
37
+ try {
38
+ aggregated[packageName] = hooks.aggregate(frozenRegistry, ctx);
39
+ }
40
+ catch (err) {
41
+ ctx.error(err.message);
42
+ }
43
+ }
44
+ // ─── Phase 4: Post-process ───
45
+ let working = [...transformedPages];
46
+ for (const { packageName, hooks } of hookSets) {
47
+ if (!hooks.postProcess)
48
+ continue;
49
+ working = working.map((page, i) => {
50
+ const ctx = makeContext(warnings, 'postProcess', packageName, page.url);
51
+ try {
52
+ return hooks.postProcess(page, aggregated, ctx);
53
+ }
54
+ catch (err) {
55
+ ctx.error(err.message);
56
+ return page; // return original on error
57
+ }
58
+ });
59
+ }
60
+ // Merge post-processed renderables back into the original SitePage objects.
61
+ // Cast from unknown back to RenderableTreeNodes — postProcess hooks are responsible
62
+ // for returning the same AST node type they received.
63
+ const resultPages = pages.map((page, i) => ({
64
+ ...page,
65
+ renderable: working[i].renderable,
66
+ }));
67
+ // Tally entity count across all registered types
68
+ const entityCount = registry.getTypes().reduce((sum, type) => sum + registry.getAll(type).length, 0);
69
+ const stats = {
70
+ pageCount: pages.length,
71
+ entityCount,
72
+ packageCount: hookSets.filter(hs => hs.hooks.register || hs.hooks.aggregate || hs.hooks.postProcess).length,
73
+ };
74
+ return { pages: resultPages, aggregated, warnings, stats };
75
+ }
76
+ function pageToTransformed(page) {
77
+ return {
78
+ url: page.route.url,
79
+ title: page.frontmatter.title ?? '',
80
+ headings: page.headings,
81
+ frontmatter: page.frontmatter,
82
+ renderable: page.renderable,
83
+ };
84
+ }
85
+ function makeContext(warnings, phase, packageName, url) {
86
+ return {
87
+ info(message, infoUrl) {
88
+ warnings.push({ severity: 'info', phase, packageName, url: infoUrl ?? url, message });
89
+ },
90
+ warn(message, warnUrl) {
91
+ warnings.push({ severity: 'warning', phase, packageName, url: warnUrl ?? url, message });
92
+ },
93
+ error(message, errUrl) {
94
+ warnings.push({ severity: 'error', phase, packageName, url: errUrl ?? url, message });
95
+ },
96
+ };
97
+ }
98
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { EntityRegistration, EntityRegistry } from '@refrakt-md/types';
2
+ /**
3
+ * Concrete implementation of the cross-page entity registry.
4
+ *
5
+ * Maintains two indexes for efficient lookup:
6
+ * - byTypeAndId: primary index for getAll() and getById()
7
+ * - byTypeAndUrl: secondary index for getByUrl()
8
+ *
9
+ * On collision (same type + id registered twice), the last registration wins.
10
+ */
11
+ export declare class EntityRegistryImpl implements EntityRegistry {
12
+ private byTypeAndId;
13
+ private byTypeAndUrl;
14
+ register(entry: EntityRegistration): void;
15
+ /** All entities of a given type, in registration order */
16
+ getAll(type: string): EntityRegistration[];
17
+ /** All entities of a given type registered from a specific page URL */
18
+ getByUrl(type: string, url: string): EntityRegistration[];
19
+ /** Find a specific entity by type and id */
20
+ getById(type: string, id: string): EntityRegistration | undefined;
21
+ /** All registered entity type names */
22
+ getTypes(): string[];
23
+ }
24
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE5E;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACxD,OAAO,CAAC,WAAW,CAAsD;IACzE,OAAO,CAAC,YAAY,CAAwD;IAE5E,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IA6BzC,0DAA0D;IAC1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAM1C,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAIzD,4CAA4C;IAC5C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIjE,uCAAuC;IACvC,QAAQ,IAAI,MAAM,EAAE;CAGpB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Concrete implementation of the cross-page entity registry.
3
+ *
4
+ * Maintains two indexes for efficient lookup:
5
+ * - byTypeAndId: primary index for getAll() and getById()
6
+ * - byTypeAndUrl: secondary index for getByUrl()
7
+ *
8
+ * On collision (same type + id registered twice), the last registration wins.
9
+ */
10
+ export class EntityRegistryImpl {
11
+ byTypeAndId = new Map();
12
+ byTypeAndUrl = new Map();
13
+ register(entry) {
14
+ // Primary index
15
+ let typeMap = this.byTypeAndId.get(entry.type);
16
+ if (!typeMap) {
17
+ typeMap = new Map();
18
+ this.byTypeAndId.set(entry.type, typeMap);
19
+ }
20
+ typeMap.set(entry.id, entry);
21
+ // Secondary index
22
+ let urlMap = this.byTypeAndUrl.get(entry.type);
23
+ if (!urlMap) {
24
+ urlMap = new Map();
25
+ this.byTypeAndUrl.set(entry.type, urlMap);
26
+ }
27
+ const urlList = urlMap.get(entry.sourceUrl);
28
+ if (urlList) {
29
+ // Replace existing entry with same id, or append
30
+ const idx = urlList.findIndex(e => e.id === entry.id);
31
+ if (idx >= 0) {
32
+ urlList[idx] = entry;
33
+ }
34
+ else {
35
+ urlList.push(entry);
36
+ }
37
+ }
38
+ else {
39
+ urlMap.set(entry.sourceUrl, [entry]);
40
+ }
41
+ }
42
+ /** All entities of a given type, in registration order */
43
+ getAll(type) {
44
+ const typeMap = this.byTypeAndId.get(type);
45
+ if (!typeMap)
46
+ return [];
47
+ return [...typeMap.values()];
48
+ }
49
+ /** All entities of a given type registered from a specific page URL */
50
+ getByUrl(type, url) {
51
+ return this.byTypeAndUrl.get(type)?.get(url) ?? [];
52
+ }
53
+ /** Find a specific entity by type and id */
54
+ getById(type, id) {
55
+ return this.byTypeAndId.get(type)?.get(id);
56
+ }
57
+ /** All registered entity type names */
58
+ getTypes() {
59
+ return [...this.byTypeAndId.keys()];
60
+ }
61
+ }
62
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAkB;IACtB,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;IACjE,YAAY,GAAG,IAAI,GAAG,EAA6C,CAAC;IAE5E,QAAQ,CAAC,KAAyB;QACjC,gBAAgB;QAChB,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAE7B,kBAAkB;QAClB,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACb,iDAAiD;YACjD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,IAAY;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,uEAAuE;IACvE,QAAQ,CAAC,IAAY,EAAE,GAAW;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,4CAA4C;IAC5C,OAAO,CAAC,IAAY,EAAE,EAAU;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,uCAAuC;IACvC,QAAQ;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;CACD"}
package/dist/site.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { RenderableTreeNodes, Schema } from '@markdoc/markdoc';
2
2
  import type { PageSeo, HeadingInfo } from '@refrakt-md/runes';
3
+ import type { RunePackage, PipelineWarning, AggregatedData } from '@refrakt-md/types';
4
+ import type { PipelineStats } from './pipeline.js';
3
5
  import { ContentTree } from './content-tree.js';
4
6
  import { Frontmatter } from './frontmatter.js';
5
7
  import { Route } from './router.js';
@@ -12,6 +14,12 @@ export interface Site {
12
14
  pages: SitePage[];
13
15
  /** Navigation trees found in layouts */
14
16
  navigation: NavTree[];
17
+ /** Diagnostics from the cross-page pipeline (empty when no pipeline hooks ran) */
18
+ pipelineWarnings: PipelineWarning[];
19
+ /** Build-phase statistics from the pipeline run */
20
+ pipelineStats: PipelineStats;
21
+ /** Cross-page data produced by all aggregate hooks, keyed by package name */
22
+ aggregated: AggregatedData;
15
23
  }
16
24
  export interface SitePage {
17
25
  route: Route;
@@ -24,6 +32,10 @@ export interface SitePage {
24
32
  }
25
33
  /**
26
34
  * Load a content directory and resolve all pages, routes, layouts, and navigation.
35
+ *
36
+ * When `packages` are provided, the cross-page pipeline runs after loading:
37
+ * core hooks + package hooks register entities, aggregate cross-page data,
38
+ * and post-process pages before returning.
27
39
  */
28
- export declare function loadContent(dirPath: string, basePath?: string, icons?: Record<string, Record<string, string>>, additionalTags?: Record<string, Schema>): Promise<Site>;
40
+ export declare function loadContent(dirPath: string, basePath?: string, icons?: Record<string, Record<string, string>>, additionalTags?: Record<string, Schema>, packages?: RunePackage[]): Promise<Site>;
29
41
  //# sourceMappingURL=site.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,MAAM,WAAW,IAAI;IACnB,uBAAuB;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;CACd;AAkBD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAY,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC9C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAoB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,MAAM,WAAW,IAAI;IACnB,uBAAuB;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,kFAAkF;IAClF,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,mDAAmD;IACnD,aAAa,EAAE,aAAa,CAAC;IAC7B,6EAA6E;IAC7E,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;CACd;AAkBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAY,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC9C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,QAAQ,CAAC,EAAE,WAAW,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
package/dist/site.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
- import { tags, nodes, extractHeadings, runes, extractSeo, buildSeoTypeMap } from '@refrakt-md/runes';
2
+ import { tags, nodes, extractHeadings, runes, extractSeo, buildSeoTypeMap, corePipelineHooks } from '@refrakt-md/runes';
3
3
  import { ContentTree } from './content-tree.js';
4
4
  import { parseFrontmatter } from './frontmatter.js';
5
5
  import { Router } from './router.js';
6
6
  import { resolveLayouts } from './layout.js';
7
+ import { runPipeline } from './pipeline.js';
7
8
  const seoTypeMap = buildSeoTypeMap(runes);
8
9
  function transformContent(content, path, icons, additionalTags) {
9
10
  const ast = Markdoc.parse(content);
@@ -17,8 +18,12 @@ function transformContent(content, path, icons, additionalTags) {
17
18
  }
18
19
  /**
19
20
  * Load a content directory and resolve all pages, routes, layouts, and navigation.
21
+ *
22
+ * When `packages` are provided, the cross-page pipeline runs after loading:
23
+ * core hooks + package hooks register entities, aggregate cross-page data,
24
+ * and post-process pages before returning.
20
25
  */
21
- export async function loadContent(dirPath, basePath = '/', icons, additionalTags) {
26
+ export async function loadContent(dirPath, basePath = '/', icons, additionalTags, packages) {
22
27
  const tree = await ContentTree.fromDirectory(dirPath);
23
28
  const router = new Router(basePath);
24
29
  const pages = [];
@@ -30,10 +35,21 @@ export async function loadContent(dirPath, basePath = '/', icons, additionalTags
30
35
  const seo = extractSeo(renderable, seoTypeMap, frontmatter, route.url);
31
36
  pages.push({ route, frontmatter, content, renderable, headings, layout, seo });
32
37
  }
38
+ // Build hook sets: core always runs first, then community packages in config order
39
+ const hookSets = [{ packageName: '__core__', hooks: corePipelineHooks }];
40
+ for (const pkg of packages ?? []) {
41
+ if (pkg.pipeline) {
42
+ hookSets.push({ packageName: pkg.name, hooks: pkg.pipeline });
43
+ }
44
+ }
45
+ const { pages: enrichedPages, warnings, stats, aggregated } = await runPipeline(pages, hookSets);
33
46
  return {
34
47
  tree,
35
- pages,
48
+ pages: enrichedPages,
36
49
  navigation: [], // TODO: Extract from resolved layouts
50
+ pipelineWarnings: warnings,
51
+ pipelineStats: stats,
52
+ aggregated,
37
53
  };
38
54
  }
39
55
  //# sourceMappingURL=site.js.map
package/dist/site.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"site.js","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAS,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAG7D,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AAqB1C,SAAS,gBAAgB,CACvB,OAAe,EACf,IAAY,EACZ,KAA8C,EAC9C,cAAuC;IAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;YACnD,YAAY,EAAE,IAAI,GAAG,EAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;YAClE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrC,EAAE,CAAC;IACJ,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,WAAmB,GAAG,EACtB,KAA8C,EAC9C,cAAuC;IAEvC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7F,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK;QACL,UAAU,EAAE,EAAE,EAAE,sCAAsC;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/content",
3
3
  "description": "Content loading and transformation pipeline",
4
- "version": "0.7.1",
4
+ "version": "0.7.2",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -23,8 +23,8 @@
23
23
  "build": "tsc"
24
24
  },
25
25
  "dependencies": {
26
- "@refrakt-md/runes": "0.7.1",
27
- "@refrakt-md/types": "0.7.1",
26
+ "@refrakt-md/runes": "0.7.2",
27
+ "@refrakt-md/types": "0.7.2",
28
28
  "@markdoc/markdoc": "0.4.0",
29
29
  "yaml": "^2.4.0"
30
30
  }