@refrakt-md/content 0.11.3 → 0.14.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.
@@ -9,6 +9,23 @@ export interface Frontmatter {
9
9
  author?: string;
10
10
  tags?: string[];
11
11
  image?: string;
12
+ /** Icon name resolvable by the `{% icon %}` rune. Used by `nav layout="cards"`
13
+ * to render an icon on each child page card. */
14
+ icon?: string;
15
+ /** Named tint preset to apply for this page (or subtree, when set in a
16
+ * `_layout.md`). Cascades down the layout chain; explicit `null` resets
17
+ * to inherit from the layer above. See SPEC-052. */
18
+ tint?: string | null;
19
+ /** Initial colour-scheme behaviour for this page (or subtree, when set in
20
+ * a `_layout.md`). `'auto'` follows user preference and system pref;
21
+ * `'light'` / `'dark'` lock the SSR-emitted mode. Cascades down the
22
+ * layout chain. */
23
+ 'tint-mode'?: 'auto' | 'light' | 'dark';
24
+ /** When `true`, the page (or subtree) ignores user theme preference and
25
+ * hides the theme-toggle UI — used for marketing surfaces where the
26
+ * brand should look the same to every visitor. Cascades down the layout
27
+ * chain. See SPEC-052. */
28
+ 'tint-lock'?: boolean;
12
29
  [key: string]: unknown;
13
30
  }
14
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAW3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtF"}
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;qDACiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;yDAEqD;IACrD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;wBAGoB;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC;;;+BAG2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAW3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAExE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAgB,IAAI,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAwB,EAAE,OAAe;IAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,QAAQ,OAAO,UAAU,OAAO,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAiCxB;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAExE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAgB,IAAI,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAwB,EAAE,OAAe;IAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,QAAQ,OAAO,UAAU,OAAO,EAAE,CAAC;AAC5C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,15 @@ export { ContentTree, type ContentNode, type ContentPage, type ContentDirectory,
2
2
  export { parseFrontmatter, serializeFrontmatter, type Frontmatter } from './frontmatter.js';
3
3
  export { Router, type Route } from './router.js';
4
4
  export { resolveLayouts, type ResolvedLayout, type Region } from './layout.js';
5
+ export { resolveTintCascade, type ResolvedTintCascade, type CascadeRootDefaults, } from './tint-cascade.js';
6
+ export { htmlTintAttributes, colorSchemeMetaContent, prePaintScript } from './tint-ssr.js';
5
7
  export { buildNavigation, type NavTree, type NavGroup, type NavItem } from './navigation.js';
6
- export { loadContent, type Site, type SitePage } from './site.js';
7
- export { createSiteLoader, type SiteLoader, type SiteLoaderOptions } from './loader.js';
8
+ export { loadContent, loadContentFromTree, type Site, type SitePage, type LoadContentFromTreeOptions, type VirtualReader } from './site.js';
9
+ export { createSiteLoader, createVirtualSiteLoader, type SiteLoader, type SiteLoaderOptions, type VirtualSiteLoaderOptions } from './loader.js';
8
10
  export { generateSitemap, type SitemapEntry } from './sitemap.js';
9
11
  export { collectRuneTypes, analyzeRuneUsage, type RuneUsageReport } from './analyze.js';
10
12
  export { getGitTimestamps, getStatTimestamps, resolveTimestamps, type FileTimestamps } from './timestamps.js';
11
13
  export { EntityRegistryImpl } from './registry.js';
12
- export { createRefraktLoader, type RefraktLoader, type RefraktLoaderOptions } from './refract-loader.js';
14
+ export { createRefraktLoader, createVirtualRefraktLoader, buildHighlightOptions, type RefraktLoader, type RefraktLoaderOptions, type VirtualRefraktLoaderOptions } from './refract-loader.js';
13
15
  export { runPipeline, type HookSet, type PipelineResult, type PipelineStats } from './pipeline.js';
14
16
  //# 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,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7H,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,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxF,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,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,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,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7H,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,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,0BAA0B,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAChJ,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,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC9L,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -2,13 +2,15 @@ export { ContentTree } from './content-tree.js';
2
2
  export { parseFrontmatter, serializeFrontmatter } from './frontmatter.js';
3
3
  export { Router } from './router.js';
4
4
  export { resolveLayouts } from './layout.js';
5
+ export { resolveTintCascade, } from './tint-cascade.js';
6
+ export { htmlTintAttributes, colorSchemeMetaContent, prePaintScript } from './tint-ssr.js';
5
7
  export { buildNavigation } from './navigation.js';
6
- export { loadContent } from './site.js';
7
- export { createSiteLoader } from './loader.js';
8
+ export { loadContent, loadContentFromTree } from './site.js';
9
+ export { createSiteLoader, createVirtualSiteLoader } from './loader.js';
8
10
  export { generateSitemap } from './sitemap.js';
9
11
  export { collectRuneTypes, analyzeRuneUsage } from './analyze.js';
10
12
  export { getGitTimestamps, getStatTimestamps, resolveTimestamps } from './timestamps.js';
11
13
  export { EntityRegistryImpl } from './registry.js';
12
- export { createRefraktLoader } from './refract-loader.js';
14
+ export { createRefraktLoader, createVirtualRefraktLoader, buildHighlightOptions } from './refract-loader.js';
13
15
  export { runPipeline } from './pipeline.js';
14
16
  //# 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,EAA+E,MAAM,mBAAmB,CAAC;AAC7H,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,gBAAgB,EAA2C,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAiD,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAyD,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA+E,MAAM,mBAAmB,CAAC;AAC7H,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,EACL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,eAAe,EAA6C,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAiF,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAA0E,MAAM,aAAa,CAAC;AAChJ,OAAO,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAmF,MAAM,qBAAqB,CAAC;AAC9L,OAAO,EAAE,WAAW,EAAyD,MAAM,eAAe,CAAC"}
package/dist/loader.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import type { Schema } from '@markdoc/markdoc';
2
- import type { RunePackage } from '@refrakt-md/types';
3
- import { type Site } from './site.js';
2
+ import type { Plugin, SecurityPolicy } from '@refrakt-md/types';
3
+ import { type Site, type VirtualReader } from './site.js';
4
+ import type { ContentTree } from './content-tree.js';
4
5
  export interface SiteLoaderOptions {
5
6
  dirPath: string;
6
7
  basePath?: string;
7
8
  icons?: Record<string, Record<string, string>>;
8
9
  additionalTags?: Record<string, Schema>;
9
- packages?: RunePackage[];
10
+ plugins?: Plugin[];
10
11
  sandboxExamplesDir?: string;
11
12
  /** Site-wide Markdoc variables available in content via {% $name %} syntax. */
12
13
  variables?: Record<string, unknown>;
@@ -20,4 +21,30 @@ export interface SiteLoader {
20
21
  invalidate(): void;
21
22
  }
22
23
  export declare function createSiteLoader(options: SiteLoaderOptions): SiteLoader;
24
+ export interface VirtualSiteLoaderOptions {
25
+ /** Pre-built content tree. The page corpus, layouts, and partials are read
26
+ * from here — there is no filesystem fallback. */
27
+ tree: ContentTree;
28
+ basePath?: string;
29
+ icons?: Record<string, Record<string, string>>;
30
+ additionalTags?: Record<string, Schema>;
31
+ plugins?: Plugin[];
32
+ /** Site-wide Markdoc variables available in content via {% $name %} syntax. */
33
+ variables?: Record<string, unknown>;
34
+ /** Security policy for sandbox runes. Default: `'trusted'`. */
35
+ securityPolicy?: SecurityPolicy;
36
+ /** Optional async reader for ad-hoc lookups. Forward-compatibility hook —
37
+ * see `LoadContentFromTreeOptions.reader` for details. */
38
+ reader?: VirtualReader;
39
+ /** When true, every load() call re-runs the pipeline against the current
40
+ * tree (no caching). Use when the host swaps the tree's contents in place. */
41
+ dev?: boolean;
42
+ }
43
+ /**
44
+ * Site loader for hosted (non-filesystem) environments. Wraps
45
+ * {@link loadContentFromTree} with the same caching semantics as
46
+ * {@link createSiteLoader}: the result is memoized until `invalidate()` is
47
+ * called, unless `dev: true`.
48
+ */
49
+ export declare function createVirtualSiteLoader(options: VirtualSiteLoaderOptions): SiteLoader;
23
50
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,oFAAoF;IACpF,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IAC1B,0DAA0D;IAC1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,sEAAsE;IACtE,UAAU,IAAI,IAAI,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAsBvE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAoC,KAAK,IAAI,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,oFAAoF;IACpF,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IAC1B,0DAA0D;IAC1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,sEAAsE;IACtE,UAAU,IAAI,IAAI,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAsBvE;AAED,MAAM,WAAW,wBAAwB;IACxC;uDACmD;IACnD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;+DAC2D;IAC3D,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;mFAC+E;IAC/E,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,UAAU,CAsBrF"}
package/dist/loader.js CHANGED
@@ -1,11 +1,41 @@
1
- import { loadContent } from './site.js';
1
+ import { loadContent, loadContentFromTree } from './site.js';
2
2
  export function createSiteLoader(options) {
3
3
  let cached = null;
4
4
  return {
5
5
  load() {
6
6
  if (!options.dev && cached)
7
7
  return cached;
8
- const promise = loadContent(options.dirPath, options.basePath, options.icons, options.additionalTags, options.packages, options.sandboxExamplesDir, options.variables);
8
+ const promise = loadContent(options.dirPath, options.basePath, options.icons, options.additionalTags, options.plugins, options.sandboxExamplesDir, options.variables);
9
+ if (!options.dev)
10
+ cached = promise;
11
+ return promise;
12
+ },
13
+ invalidate() {
14
+ cached = null;
15
+ },
16
+ };
17
+ }
18
+ /**
19
+ * Site loader for hosted (non-filesystem) environments. Wraps
20
+ * {@link loadContentFromTree} with the same caching semantics as
21
+ * {@link createSiteLoader}: the result is memoized until `invalidate()` is
22
+ * called, unless `dev: true`.
23
+ */
24
+ export function createVirtualSiteLoader(options) {
25
+ let cached = null;
26
+ return {
27
+ load() {
28
+ if (!options.dev && cached)
29
+ return cached;
30
+ const promise = loadContentFromTree(options.tree, {
31
+ basePath: options.basePath,
32
+ icons: options.icons,
33
+ additionalTags: options.additionalTags,
34
+ plugins: options.plugins,
35
+ variables: options.variables,
36
+ securityPolicy: options.securityPolicy,
37
+ reader: options.reader,
38
+ });
9
39
  if (!options.dev)
10
40
  cached = promise;
11
41
  return promise;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAa,MAAM,WAAW,CAAC;AAsBnD,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IAC1D,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC,OAAO;QACN,IAAI;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1C,MAAM,OAAO,GAAG,WAAW,CAC1B,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,CACjB,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,MAAM,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,UAAU;YACT,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAiC,MAAM,WAAW,CAAC;AAuB5F,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IAC1D,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC,OAAO;QACN,IAAI;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1C,MAAM,OAAO,GAAG,WAAW,CAC1B,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,CACjB,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,MAAM,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,UAAU;YACT,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;KACD,CAAC;AACH,CAAC;AAsBD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAiC;IACxE,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC,OAAO;QACN,IAAI;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1C,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,MAAM,GAAG,OAAO,CAAC;YACnC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,UAAU;YACT,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,9 +1,9 @@
1
- import type { PackagePipelineHooks, AggregatedData, PipelineWarning } from '@refrakt-md/types';
1
+ import type { PluginPipelineHooks, AggregatedData, PipelineWarning } from '@refrakt-md/types';
2
2
  import type { SitePage } from './site.js';
3
3
  /** A package and its pipeline hooks, ready to run */
4
4
  export interface HookSet {
5
- packageName: string;
6
- hooks: PackagePipelineHooks;
5
+ pluginName: string;
6
+ hooks: PluginPipelineHooks;
7
7
  }
8
8
  /** Build-phase statistics from the pipeline run */
9
9
  export interface PipelineStats {
@@ -1 +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"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EAGnB,cAAc,EACd,eAAe,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,qDAAqD;AACrD,MAAM,WAAW,OAAO;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,mBAAmB,CAAC;CAC3B;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"}
package/dist/pipeline.js CHANGED
@@ -16,10 +16,10 @@ export async function runPipeline(pages, hookSets) {
16
16
  // Convert SitePage[] → TransformedPage[] (lightweight view, no deep copy)
17
17
  const transformedPages = pages.map(pageToTransformed);
18
18
  // ─── Phase 2: Register ───
19
- for (const { packageName, hooks } of hookSets) {
19
+ for (const { pluginName, hooks } of hookSets) {
20
20
  if (!hooks.register)
21
21
  continue;
22
- const ctx = makeContext(warnings, 'register', packageName);
22
+ const ctx = makeContext(warnings, 'register', pluginName);
23
23
  try {
24
24
  hooks.register(transformedPages, registry, ctx);
25
25
  }
@@ -30,12 +30,12 @@ export async function runPipeline(pages, hookSets) {
30
30
  // ─── Phase 3: Aggregate ───
31
31
  const aggregated = {};
32
32
  const frozenRegistry = registry;
33
- for (const { packageName, hooks } of hookSets) {
33
+ for (const { pluginName, hooks } of hookSets) {
34
34
  if (!hooks.aggregate)
35
35
  continue;
36
- const ctx = makeContext(warnings, 'aggregate', packageName);
36
+ const ctx = makeContext(warnings, 'aggregate', pluginName);
37
37
  try {
38
- aggregated[packageName] = hooks.aggregate(frozenRegistry, ctx);
38
+ aggregated[pluginName] = hooks.aggregate(frozenRegistry, ctx);
39
39
  }
40
40
  catch (err) {
41
41
  ctx.error(err.message);
@@ -43,11 +43,11 @@ export async function runPipeline(pages, hookSets) {
43
43
  }
44
44
  // ─── Phase 4: Post-process ───
45
45
  let working = [...transformedPages];
46
- for (const { packageName, hooks } of hookSets) {
46
+ for (const { pluginName, hooks } of hookSets) {
47
47
  if (!hooks.postProcess)
48
48
  continue;
49
49
  working = working.map((page, i) => {
50
- const ctx = makeContext(warnings, 'postProcess', packageName, page.url);
50
+ const ctx = makeContext(warnings, 'postProcess', pluginName, page.url);
51
51
  try {
52
52
  return hooks.postProcess(page, aggregated, ctx);
53
53
  }
@@ -82,16 +82,16 @@ function pageToTransformed(page) {
82
82
  renderable: page.renderable,
83
83
  };
84
84
  }
85
- function makeContext(warnings, phase, packageName, url) {
85
+ function makeContext(warnings, phase, pluginName, url) {
86
86
  return {
87
87
  info(message, infoUrl) {
88
- warnings.push({ severity: 'info', phase, packageName, url: infoUrl ?? url, message });
88
+ warnings.push({ severity: 'info', phase, pluginName, url: infoUrl ?? url, message });
89
89
  },
90
90
  warn(message, warnUrl) {
91
- warnings.push({ severity: 'warning', phase, packageName, url: warnUrl ?? url, message });
91
+ warnings.push({ severity: 'warning', phase, pluginName, url: warnUrl ?? url, message });
92
92
  },
93
93
  error(message, errUrl) {
94
- warnings.push({ severity: 'error', phase, packageName, url: errUrl ?? url, message });
94
+ warnings.push({ severity: 'error', phase, pluginName, url: errUrl ?? url, message });
95
95
  },
96
96
  };
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import type { Site } from './site.js';
1
+ import type { SiteConfig } from '@refrakt-md/types';
2
+ import type { ContentTree } from './content-tree.js';
3
+ import type { Site, VirtualReader } from './site.js';
2
4
  export interface RefraktLoaderOptions {
3
5
  /** Path to refrakt.config.json. Default: './refrakt.config.json' */
4
6
  configPath?: string;
@@ -23,5 +25,55 @@ export interface RefraktLoader {
23
25
  /** Clears the cached site so the next getSite() re-reads from disk. */
24
26
  invalidateSite(): void;
25
27
  }
28
+ /** Compose the options bag handed to `createHighlightTransform`. Merges the
29
+ * site's `highlight.*` block with theme-level code settings (`theme.code.*`)
30
+ * so a single object reaches the transform — keeps adapter call sites tidy
31
+ * and lets the highlight package stay unaware of where each option comes
32
+ * from. Exported so non-SvelteKit adapters (HTML build script, Astro setup,
33
+ * custom hosts) can compose options the same way. */
34
+ export declare function buildHighlightOptions(site: SiteConfig): {
35
+ codeColorScheme?: "auto" | "light" | "dark" | undefined;
36
+ theme?: string | {
37
+ light: string;
38
+ dark: string;
39
+ };
40
+ };
26
41
  export declare function createRefraktLoader(options?: RefraktLoaderOptions): RefraktLoader;
42
+ export interface VirtualRefraktLoaderOptions {
43
+ /** Pre-resolved per-site configuration. The caller is responsible for
44
+ * selecting the site (e.g., via `resolveSite()`) and normalizing any
45
+ * config-relative paths. Filesystem paths inside this config (`theme`,
46
+ * `contentDir`, plugin specifiers) are still resolved through the Node
47
+ * module loader where applicable; only authoring content is virtualized. */
48
+ site: SiteConfig;
49
+ /** Pre-built content tree. Required — the page corpus, layouts, and
50
+ * partials all come from here. */
51
+ tree: ContentTree;
52
+ /** Optional async reader for ad-hoc lookups. Reserved; see
53
+ * {@link VirtualReader}. */
54
+ reader?: VirtualReader;
55
+ /** Markdoc variables available in content via {% $name %} syntax. */
56
+ variables?: Record<string, unknown>;
57
+ /** URL base path for the Router. Default: `'/'`. */
58
+ basePath?: string;
59
+ /** Skip caching — re-run the pipeline on every load(). Default: false. */
60
+ dev?: boolean;
61
+ }
62
+ /**
63
+ * Refrakt loader for hosted (non-filesystem) environments. Sibling to
64
+ * {@link createRefraktLoader}.
65
+ *
66
+ * Differences:
67
+ * - Accepts a pre-resolved {@link SiteConfig} instead of reading
68
+ * `refrakt.config.json` from disk. The caller is expected to source and
69
+ * normalize the config however suits their host (env, DB, GitHub, etc.).
70
+ * - Drives content from a pre-built {@link ContentTree} rather than walking
71
+ * the filesystem. Combine with a `reader` for forward-compatibility with
72
+ * future async lookup paths.
73
+ *
74
+ * Theme module and plugin specifiers are still resolved through Node's module
75
+ * loader, so the theme package and any plugins must be reachable as installed
76
+ * dependencies in the host environment.
77
+ */
78
+ export declare function createVirtualRefraktLoader(options: VirtualRefraktLoaderOptions): RefraktLoader;
27
79
  //# sourceMappingURL=refract-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refract-loader.d.ts","sourceRoot":"","sources":["../src/refract-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,oBAAoB;IACpC,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;2DACuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,wDAAwD;IACxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,yDAAyD;IACzD,YAAY,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,qBAAqB,IAAI,OAAO,CAAC;QAAE,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,uEAAuE;IACvE,cAAc,IAAI,IAAI,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAkGjF"}
1
+ {"version":3,"file":"refract-loader.d.ts","sourceRoot":"","sources":["../src/refract-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACpC,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;2DACuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,wDAAwD;IACxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,yDAAyD;IACzD,YAAY,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,qBAAqB,IAAI,OAAO,CAAC;QAAE,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,uEAAuE;IACvE,cAAc,IAAI,IAAI,CAAC;CACvB;AASD;;;;;sDAKsD;AACtD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU;;;;;;EAQrD;AA0DD,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAuDjF;AAED,MAAM,WAAW,2BAA2B;IAC3C;;;;iFAI6E;IAC7E,IAAI,EAAE,UAAU,CAAC;IACjB;uCACmC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB;iCAC6B;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,aAAa,CAkD9F"}
@@ -1,7 +1,69 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { dirname, resolve } from 'node:path';
3
+ import { getThemePackage } from '@refrakt-md/types';
3
4
  import { normalizeRefraktConfig, resolveSite } from '@refrakt-md/transform/node';
4
- import { createSiteLoader } from './loader.js';
5
+ import { createSiteLoader, createVirtualSiteLoader, } from './loader.js';
6
+ /** Compose the options bag handed to `createHighlightTransform`. Merges the
7
+ * site's `highlight.*` block with theme-level code settings (`theme.code.*`)
8
+ * so a single object reaches the transform — keeps adapter call sites tidy
9
+ * and lets the highlight package stay unaware of where each option comes
10
+ * from. Exported so non-SvelteKit adapters (HTML build script, Astro setup,
11
+ * custom hosts) can compose options the same way. */
12
+ export function buildHighlightOptions(site) {
13
+ const themeCode = typeof site.theme === 'object' && site.theme !== null
14
+ ? site.theme.code
15
+ : undefined;
16
+ return {
17
+ ...(site.highlight ?? {}),
18
+ ...(themeCode?.colorScheme ? { codeColorScheme: themeCode.colorScheme } : {}),
19
+ };
20
+ }
21
+ /** Resolve a site's theme module + plugin merges into a single context object.
22
+ * Shared between the FS loader and the virtual loader so both produce
23
+ * byte-identical transforms from the same SiteConfig. */
24
+ async function assembleSiteContext(site) {
25
+ const themePackage = getThemePackage(site.theme);
26
+ const themeModule = await import(/* @vite-ignore */ themePackage + '/transform');
27
+ const themeConfig = themeModule.themeConfig ?? themeModule.luminaConfig ?? themeModule.default;
28
+ const icons = {
29
+ ...themeConfig.icons,
30
+ global: { ...(themeConfig.icons?.global ?? {}), ...(site.icons ?? {}) },
31
+ };
32
+ const { assembleThemeConfig, createTransform } = await import('@refrakt-md/transform');
33
+ const pluginNames = site.plugins ?? [];
34
+ if (pluginNames.length === 0) {
35
+ return {
36
+ transform: createTransform(themeConfig),
37
+ communityTags: undefined,
38
+ communityPackages: undefined,
39
+ icons,
40
+ };
41
+ }
42
+ const { loadPlugin, mergePlugins, runes: coreRunes } = await import('@refrakt-md/runes');
43
+ const loaded = await Promise.all(pluginNames.map((name) => loadPlugin(name)));
44
+ const coreRuneNames = new Set(Object.keys(coreRunes));
45
+ const merged = mergePlugins(loaded, coreRuneNames, site.runes?.prefer);
46
+ const { config: assembledConfig } = assembleThemeConfig({
47
+ coreConfig: themeConfig,
48
+ pluginRunes: merged.themeRunes,
49
+ pluginIcons: merged.themeIcons,
50
+ pluginBackgrounds: merged.themeBackgrounds,
51
+ extensions: merged.extensions,
52
+ provenance: merged.provenance,
53
+ });
54
+ if (site.tints) {
55
+ assembledConfig.tints = { ...assembledConfig.tints, ...site.tints };
56
+ }
57
+ if (site.backgrounds) {
58
+ assembledConfig.backgrounds = { ...assembledConfig.backgrounds, ...site.backgrounds };
59
+ }
60
+ return {
61
+ transform: createTransform(assembledConfig),
62
+ communityTags: Object.keys(merged.tags).length > 0 ? merged.tags : undefined,
63
+ communityPackages: merged.plugins,
64
+ icons,
65
+ };
66
+ }
5
67
  export function createRefraktLoader(options) {
6
68
  const configPath = resolve(options?.configPath ?? './refrakt.config.json');
7
69
  const rawConfig = JSON.parse(readFileSync(configPath, 'utf-8'));
@@ -12,55 +74,20 @@ export function createRefraktLoader(options) {
12
74
  const contentDir = resolve(site.contentDir);
13
75
  let _initPromise = null;
14
76
  let _transform = null;
15
- let _communityTags;
16
- let _communityPackages;
17
77
  let _loader = null;
18
78
  let _hl = null;
19
79
  async function init() {
20
80
  if (_initPromise)
21
81
  return _initPromise;
22
82
  _initPromise = (async () => {
23
- // Dynamically import theme transform module
24
- const themeModule = await import(/* @vite-ignore */ site.theme + '/transform');
25
- const themeConfig = themeModule.themeConfig ?? themeModule.luminaConfig ?? themeModule.default;
26
- const icons = {
27
- ...themeConfig.icons,
28
- global: { ...(themeConfig.icons?.global ?? {}), ...(site.icons ?? {}) },
29
- };
30
- const { assembleThemeConfig, createTransform } = await import('@refrakt-md/transform');
31
- const packageNames = site.packages ?? [];
32
- if (packageNames.length === 0) {
33
- _transform = createTransform(themeConfig);
34
- }
35
- else {
36
- const { loadRunePackage, mergePackages, runes: coreRunes } = await import('@refrakt-md/runes');
37
- const loaded = await Promise.all(packageNames.map((name) => loadRunePackage(name)));
38
- const coreRuneNames = new Set(Object.keys(coreRunes));
39
- const merged = mergePackages(loaded, coreRuneNames, site.runes?.prefer);
40
- _communityTags = Object.keys(merged.tags).length > 0 ? merged.tags : undefined;
41
- _communityPackages = merged.packages;
42
- const { config: assembledConfig } = assembleThemeConfig({
43
- coreConfig: themeConfig,
44
- packageRunes: merged.themeRunes,
45
- packageIcons: merged.themeIcons,
46
- packageBackgrounds: merged.themeBackgrounds,
47
- extensions: merged.extensions,
48
- provenance: merged.provenance,
49
- });
50
- if (site.tints) {
51
- assembledConfig.tints = { ...assembledConfig.tints, ...site.tints };
52
- }
53
- if (site.backgrounds) {
54
- assembledConfig.backgrounds = { ...assembledConfig.backgrounds, ...site.backgrounds };
55
- }
56
- _transform = createTransform(assembledConfig);
57
- }
83
+ const ctx = await assembleSiteContext(site);
84
+ _transform = ctx.transform;
58
85
  _loader = createSiteLoader({
59
86
  dirPath: contentDir,
60
87
  basePath: '/',
61
- icons,
62
- additionalTags: _communityTags,
63
- packages: _communityPackages,
88
+ icons: ctx.icons,
89
+ additionalTags: ctx.communityTags,
90
+ plugins: ctx.communityPackages,
64
91
  variables: options?.variables,
65
92
  dev: options?.dev ?? false,
66
93
  });
@@ -80,7 +107,69 @@ export function createRefraktLoader(options) {
80
107
  if (_hl)
81
108
  return _hl;
82
109
  const { createHighlightTransform } = await import('@refrakt-md/highlight');
83
- _hl = await createHighlightTransform(site.highlight);
110
+ _hl = await createHighlightTransform(buildHighlightOptions(site));
111
+ return _hl;
112
+ },
113
+ invalidateSite() {
114
+ _loader?.invalidate();
115
+ },
116
+ };
117
+ }
118
+ /**
119
+ * Refrakt loader for hosted (non-filesystem) environments. Sibling to
120
+ * {@link createRefraktLoader}.
121
+ *
122
+ * Differences:
123
+ * - Accepts a pre-resolved {@link SiteConfig} instead of reading
124
+ * `refrakt.config.json` from disk. The caller is expected to source and
125
+ * normalize the config however suits their host (env, DB, GitHub, etc.).
126
+ * - Drives content from a pre-built {@link ContentTree} rather than walking
127
+ * the filesystem. Combine with a `reader` for forward-compatibility with
128
+ * future async lookup paths.
129
+ *
130
+ * Theme module and plugin specifiers are still resolved through Node's module
131
+ * loader, so the theme package and any plugins must be reachable as installed
132
+ * dependencies in the host environment.
133
+ */
134
+ export function createVirtualRefraktLoader(options) {
135
+ const { site, tree, reader, variables, basePath, dev } = options;
136
+ let _initPromise = null;
137
+ let _transform = null;
138
+ let _loader = null;
139
+ let _hl = null;
140
+ async function init() {
141
+ if (_initPromise)
142
+ return _initPromise;
143
+ _initPromise = (async () => {
144
+ const ctx = await assembleSiteContext(site);
145
+ _transform = ctx.transform;
146
+ _loader = createVirtualSiteLoader({
147
+ tree,
148
+ basePath: basePath ?? '/',
149
+ icons: ctx.icons,
150
+ additionalTags: ctx.communityTags,
151
+ plugins: ctx.communityPackages,
152
+ variables,
153
+ reader,
154
+ dev: dev ?? false,
155
+ });
156
+ })();
157
+ return _initPromise;
158
+ }
159
+ return {
160
+ async getSite() {
161
+ await init();
162
+ return _loader.load();
163
+ },
164
+ async getTransform() {
165
+ await init();
166
+ return _transform;
167
+ },
168
+ async getHighlightTransform() {
169
+ if (_hl)
170
+ return _hl;
171
+ const { createHighlightTransform } = await import('@refrakt-md/highlight');
172
+ _hl = await createHighlightTransform(buildHighlightOptions(site));
84
173
  return _hl;
85
174
  },
86
175
  invalidateSite() {
@@ -1 +1 @@
1
- {"version":3,"file":"refract-loader.js","sourceRoot":"","sources":["../src/refract-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refract-loader.js","sourceRoot":"","sources":["../src/refract-loader.ts"],"names":[],"mappings":"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"}