@timber-js/app 0.2.0-alpha.8 → 0.2.0-alpha.9

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
@@ -173,8 +173,6 @@ export interface PluginContext {
173
173
  buildManifest: BuildManifest | null;
174
174
  /** Startup timer for profiling cold start phases (active in dev, no-op in prod) */
175
175
  timer: StartupTimer;
176
- /** URL path to font CSS file, set by timber-fonts when fonts are registered */
177
- fontCssUrl?: string;
178
176
  }
179
177
  /**
180
178
  * Resolve the app directory. Checks (in order):
@@ -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
@@ -11935,8 +11935,7 @@ function generateConfigModule(ctx) {
11935
11935
  cookieSecrets,
11936
11936
  topLoader: ctx.config.topLoader,
11937
11937
  responseCache: ctx.config.responseCache,
11938
- debug: ctx.config.debug ?? false,
11939
- fontCssUrl: ctx.fontCssUrl ?? null
11938
+ debug: ctx.config.debug ?? false
11940
11939
  };
11941
11940
  return [
11942
11941
  "// Auto-generated runtime config — do not edit.",
@@ -13360,8 +13359,15 @@ var VIRTUAL_GOOGLE = "@timber/fonts/google";
13360
13359
  var VIRTUAL_LOCAL = "@timber/fonts/local";
13361
13360
  var RESOLVED_GOOGLE = "\0@timber/fonts/google";
13362
13361
  var RESOLVED_LOCAL = "\0@timber/fonts/local";
13363
- /** URL path where font CSS is served (dev middleware and prod asset). */
13364
- var FONT_CSS_PATH = "/_timber/fonts/fonts.css";
13362
+ /**
13363
+ * Virtual module that exports the combined font CSS string.
13364
+ *
13365
+ * The RSC entry imports this module and inlines it as a <style> tag.
13366
+ * Unlike a config-based approach, this module is loaded lazily (on first
13367
+ * request), so it always has up-to-date font data from the registry.
13368
+ */
13369
+ var VIRTUAL_FONT_CSS = "virtual:timber-font-css";
13370
+ var RESOLVED_FONT_CSS = "\0virtual:timber-font-css";
13365
13371
  /**
13366
13372
  * Convert a font family name to a PascalCase export name.
13367
13373
  * e.g. "JetBrains Mono" → "JetBrains_Mono"
@@ -13509,6 +13515,24 @@ function generateLocalVirtualModule() {
13509
13515
  ].join("\n");
13510
13516
  }
13511
13517
  /**
13518
+ * Generate CSS for a single extracted font.
13519
+ *
13520
+ * Includes @font-face rules (for local fonts), fallback @font-face,
13521
+ * and the scoped class rule.
13522
+ */
13523
+ function generateFontCss(font) {
13524
+ const cssParts = [];
13525
+ if (font.provider === "local" && font.localSources) {
13526
+ const faceCss = generateFontFaces(generateLocalFontFaces(font.family, font.localSources, font.display));
13527
+ if (faceCss) cssParts.push(faceCss);
13528
+ }
13529
+ const fallbackCss = generateFallbackCss(font.family);
13530
+ if (fallbackCss) cssParts.push(fallbackCss);
13531
+ if (font.variable) cssParts.push(generateVariableClass(font.className, font.variable, font.fontFamily));
13532
+ else cssParts.push(generateFontFamilyClass(font.className, font.fontFamily));
13533
+ return cssParts.join("\n\n");
13534
+ }
13535
+ /**
13512
13536
  * Generate the CSS output for all extracted fonts.
13513
13537
  *
13514
13538
  * Includes @font-face rules for local fonts, fallback @font-face rules,
@@ -13516,16 +13540,7 @@ function generateLocalVirtualModule() {
13516
13540
  */
13517
13541
  function generateAllFontCss(registry) {
13518
13542
  const cssParts = [];
13519
- for (const font of registry.values()) {
13520
- if (font.provider === "local" && font.localSources) {
13521
- const faceCss = generateFontFaces(generateLocalFontFaces(font.family, font.localSources, font.display));
13522
- if (faceCss) cssParts.push(faceCss);
13523
- }
13524
- const fallbackCss = generateFallbackCss(font.family);
13525
- if (fallbackCss) cssParts.push(fallbackCss);
13526
- if (font.variable) cssParts.push(generateVariableClass(font.className, font.variable, font.fontFamily));
13527
- else cssParts.push(generateFontFamilyClass(font.className, font.fontFamily));
13528
- }
13543
+ for (const font of registry.values()) cssParts.push(generateFontCss(font));
13529
13544
  return cssParts.join("\n\n");
13530
13545
  }
13531
13546
  /**
@@ -13581,11 +13596,16 @@ function timberFonts(ctx) {
13581
13596
  resolveId(id) {
13582
13597
  if (id === VIRTUAL_GOOGLE) return RESOLVED_GOOGLE;
13583
13598
  if (id === VIRTUAL_LOCAL) return RESOLVED_LOCAL;
13599
+ if (id === VIRTUAL_FONT_CSS) return RESOLVED_FONT_CSS;
13584
13600
  return null;
13585
13601
  },
13586
13602
  load(id) {
13587
13603
  if (id === RESOLVED_GOOGLE) return generateGoogleVirtualModule(registry);
13588
13604
  if (id === RESOLVED_LOCAL) return generateLocalVirtualModule();
13605
+ if (id === RESOLVED_FONT_CSS) {
13606
+ const css = generateAllFontCss(registry);
13607
+ return `export default ${JSON.stringify(css)};`;
13608
+ }
13589
13609
  return null;
13590
13610
  },
13591
13611
  configureServer(server) {
@@ -13598,13 +13618,6 @@ function timberFonts(ctx) {
13598
13618
  res.end("Bad request");
13599
13619
  return;
13600
13620
  }
13601
- if (requestedFilename === "fonts.css") {
13602
- const css = generateAllFontCss(registry);
13603
- res.setHeader("Content-Type", "text/css");
13604
- res.setHeader("Cache-Control", "no-cache");
13605
- res.end(css);
13606
- return;
13607
- }
13608
13621
  for (const font of registry.values()) {
13609
13622
  if (font.provider !== "local" || !font.localSources) continue;
13610
13623
  for (const src of font.localSources) if ((src.path.split("/").pop() ?? "") === requestedFilename) {
@@ -13687,13 +13700,10 @@ function timberFonts(ctx) {
13687
13700
  }
13688
13701
  }
13689
13702
  if (hasLocalImport) transformedCode = transformLocalFonts(transformedCode, code, id, registry, this.error.bind(this));
13690
- if (transformedCode !== code) {
13691
- if (registry.size > 0 && !ctx.fontCssUrl) ctx.fontCssUrl = FONT_CSS_PATH;
13692
- return {
13693
- code: transformedCode,
13694
- map: null
13695
- };
13696
- }
13703
+ if (transformedCode !== code) return {
13704
+ code: transformedCode,
13705
+ map: null
13706
+ };
13697
13707
  return null;
13698
13708
  },
13699
13709
  generateBundle() {
@@ -13719,12 +13729,6 @@ function timberFonts(ctx) {
13719
13729
  });
13720
13730
  }
13721
13731
  }
13722
- const fontCss = generateAllFontCss(registry);
13723
- if (fontCss) this.emitFile({
13724
- type: "asset",
13725
- fileName: "_timber/fonts/fonts.css",
13726
- source: fontCss
13727
- });
13728
13732
  if (!ctx.buildManifest) return;
13729
13733
  const cachedByFamily = /* @__PURE__ */ new Map();
13730
13734
  for (const cf of cachedFonts) {