@hyperframes/core 0.8.126 → 0.8.128

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.
@@ -0,0 +1,3 @@
1
+ export declare function authoredGoogleFontStylesheets(html: string): Map<string, string[]>;
2
+ export declare function withPageText(url: string, fontText: string | undefined): string;
3
+ //# sourceMappingURL=authoredGoogleFonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoredGoogleFonts.d.ts","sourceRoot":"","sources":["../../src/fonts/authoredGoogleFonts.ts"],"names":[],"mappings":"AAiEA,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAYjF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM9E"}
@@ -0,0 +1,84 @@
1
+ import { parseHTML } from "linkedom";
2
+ import postcss from "postcss";
3
+ function screenStylesheet(media) {
4
+ return !media?.trim() || media.split(",").some((query) => /^(all|screen)$/i.test(query.trim()));
5
+ }
6
+ function googleStylesheetFamilies(urlText) {
7
+ let parsed;
8
+ try {
9
+ parsed = new URL(urlText);
10
+ }
11
+ catch {
12
+ return [];
13
+ }
14
+ if (parsed.protocol !== "https:" || parsed.hostname !== "fonts.googleapis.com")
15
+ return [];
16
+ return parsed.searchParams
17
+ .getAll("family")
18
+ .flatMap((family) => family.split("|"))
19
+ .map((family) => family.split(":")[0]?.trim().toLowerCase() ?? "")
20
+ .filter(Boolean);
21
+ }
22
+ function importUrls(css) {
23
+ let root;
24
+ try {
25
+ root = postcss.parse(css);
26
+ }
27
+ catch {
28
+ return [];
29
+ }
30
+ const urls = [];
31
+ for (const node of root.nodes) {
32
+ if (node.type !== "atrule" || node.name.toLowerCase() !== "import")
33
+ continue;
34
+ const url = unconditionalImportUrl(node.params);
35
+ if (url)
36
+ urls.push(url);
37
+ }
38
+ return urls;
39
+ }
40
+ function unconditionalImportUrl(params) {
41
+ const match = /^(?:url\(\s*['"]?([^'")\s]+)['"]?\s*\)|['"]([^'"]+)['"])\s*(.*)$/i.exec(params);
42
+ if (!match || !screenStylesheet(match[3] ?? null))
43
+ return undefined;
44
+ return match[1] ?? match[2];
45
+ }
46
+ function activeStylesheet(element) {
47
+ if (element.hasAttribute("disabled") || !screenStylesheet(element.getAttribute("media")))
48
+ return false;
49
+ const type = element.getAttribute("type")?.trim().toLowerCase();
50
+ return !type || type === "text/css";
51
+ }
52
+ function stylesheetUrls(element) {
53
+ if (!activeStylesheet(element))
54
+ return [];
55
+ if (element.localName !== "link")
56
+ return importUrls(element.textContent ?? "");
57
+ const rel = (element.getAttribute("rel") ?? "").toLowerCase().split(/\s+/);
58
+ if (!rel.includes("stylesheet") || rel.includes("alternate"))
59
+ return [];
60
+ const href = element.getAttribute("href");
61
+ return href ? [href] : [];
62
+ }
63
+ export function authoredGoogleFontStylesheets(html) {
64
+ const byFamily = new Map();
65
+ const { document } = parseHTML(html);
66
+ for (const element of document.querySelectorAll("link, style")) {
67
+ for (const url of stylesheetUrls(element)) {
68
+ for (const family of googleStylesheetFamilies(url)) {
69
+ const previous = byFamily.get(family) ?? [];
70
+ byFamily.set(family, [...previous.filter((existing) => existing !== url), url]);
71
+ }
72
+ }
73
+ }
74
+ return byFamily;
75
+ }
76
+ export function withPageText(url, fontText) {
77
+ const parsed = new URL(url);
78
+ if (!fontText || parsed.searchParams.has("text"))
79
+ return url;
80
+ const withoutFragment = url.split("#")[0] ?? url;
81
+ const joiner = parsed.search ? "&" : "?";
82
+ return `${withoutFragment}${joiner}text=${encodeURIComponent(fontText)}${parsed.hash}`;
83
+ }
84
+ //# sourceMappingURL=authoredGoogleFonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoredGoogleFonts.js","sourceRoot":"","sources":["../../src/fonts/authoredGoogleFonts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ type FontFaceSpec = {
2
+ weight: string;
3
+ style?: "normal" | "italic";
4
+ };
5
+ type CanonicalFontSpec = {
6
+ packageName: string;
7
+ faces: FontFaceSpec[];
8
+ };
9
+ /**
10
+ * Family names that resolve to a host-OS font (or a CSS generic that the
11
+ * browser substitutes with a host-OS font). Exported so plan-time validators
12
+ * can reject them as primary families in distributed renders.
13
+ *
14
+ * Lower-cased — call `normalizeFamilyName` on declared values before lookup.
15
+ */
16
+ export declare const GENERIC_FAMILIES: ReadonlySet<string>;
17
+ /**
18
+ * Parse a single `font-family` value (e.g. `"Inter", -apple-system,
19
+ * sans-serif`) into a list of unquoted family names in declaration order.
20
+ * Whitespace and surrounding `"…"` / `'…'` quotes are stripped; case is
21
+ * preserved. Pass each name through `normalizeFamilyName` for case-
22
+ * insensitive comparisons.
23
+ *
24
+ * Only top-level commas split: a `var(--x, fallback)` expression stays one
25
+ * token, as does a comma inside a quoted family name.
26
+ */
27
+ export declare function parseFontFamilyValue(value: string): string[];
28
+ /**
29
+ * Import/generated HTML often uses host UI stacks such as
30
+ * `-apple-system, BlinkMacSystemFont, sans-serif` as a primary family. That is
31
+ * fine on the author's machine but not in distributed render workers, where
32
+ * host fonts differ by OS. Promote a bundled deterministic family to the
33
+ * primary slot while preserving the original stack as fallbacks.
34
+ */
35
+ export declare function normalizeSystemFontPrimaryFamilies(html: string, deterministicPrimary?: string): string;
36
+ /** Surfaces font-family is declared on in served HTML. */
37
+ export type FontFamilySurface = "font-family" | "data-font-family";
38
+ export type FontFamilyDeclaration = {
39
+ surface: FontFamilySurface;
40
+ declaration: string;
41
+ families: string[];
42
+ };
43
+ /**
44
+ * Collect simple CSS custom-property font aliases from style blocks and inline
45
+ * styles. CSS cascade is richer than this map, but for compiler-generated
46
+ * imports the common shape is `--font: Inter, sans-serif` paired with
47
+ * `font-family: var(--font)`.
48
+ */
49
+ export declare function collectFontFamilyCustomProperties(html: string): Map<string, string>;
50
+ export declare function resolveFontFamilyDeclarationFamilies(declaration: string, customProperties: ReadonlyMap<string, string>): string[];
51
+ /**
52
+ * Iterate every font-family declaration in a compiled HTML document. Yields
53
+ * each declaration's surface (CSS property vs HTML attribute), raw value,
54
+ * and the parsed family list. Used by both the @font-face injector and the
55
+ * plan-time validator so they read the same surface area.
56
+ */
57
+ export declare function iterateFontFamilyDeclarations(html: string): Generator<FontFamilyDeclaration, void, void>;
58
+ declare const CANONICAL_FONTS: Record<string, CanonicalFontSpec>;
59
+ export declare const FONT_ALIASES: Record<string, keyof typeof CANONICAL_FONTS>;
60
+ export { FONT_ALIAS_KEYS } from "./aliases.js";
61
+ export { fontToDataUri } from "./fontCompression.js";
62
+ export declare function fontFormatHint(src: string): "collection" | "woff2";
63
+ /**
64
+ * Typed codes let distributed workflow adapters distinguish deterministic
65
+ * resolution failures from temporary upstream unavailability.
66
+ */
67
+ export declare const FONT_FETCH_FAILED = "FONT_FETCH_FAILED";
68
+ export declare const FONT_FETCH_UNAVAILABLE = "FONT_FETCH_UNAVAILABLE";
69
+ export type FontFetchErrorCode = typeof FONT_FETCH_FAILED | typeof FONT_FETCH_UNAVAILABLE;
70
+ /**
71
+ * Typed error thrown by {@link injectDeterministicFontFaces} when
72
+ * `failClosedFontFetch === true` and deterministic font resolution fails.
73
+ * The default (swallow + warn) preserves the in-process behavior.
74
+ */
75
+ export declare class FontFetchError extends Error {
76
+ readonly code: FontFetchErrorCode;
77
+ readonly familyName: string;
78
+ readonly url: string;
79
+ readonly cause?: unknown;
80
+ /** Unlike `message`, holds no URLs: safe for callers that must not echo resolver output. */
81
+ readonly unresolvedFamilies: readonly string[];
82
+ constructor(familyName: string, url: string, message: string, cause?: unknown, code?: FontFetchErrorCode, unresolvedFamilies?: readonly string[]);
83
+ }
84
+ /**
85
+ * Retryable font-fetch failure. Distributed adapters map this code to an
86
+ * unavailable response so the workflow can retry the plan activity.
87
+ */
88
+ export declare class FontFetchUnavailableError extends FontFetchError {
89
+ constructor(familyName: string, url: string, message: string, cause?: unknown);
90
+ }
91
+ export interface FontFetchRetryPolicy {
92
+ /** Total fetch attempts for one CSS or woff2 URL. Default: 2. */
93
+ maxAttempts: number;
94
+ /** Timeout for each individual fetch attempt. Default: 8 seconds. */
95
+ attemptTimeoutMs: number;
96
+ /** Shared wall-clock budget for all Google Fonts requests in one compile. Default: 20 seconds. */
97
+ maxElapsedMs: number;
98
+ /** Initial full-jitter backoff ceiling. Default: 250 ms. */
99
+ baseDelayMs: number;
100
+ }
101
+ /** Test-only reset — the cache is otherwise process-lifetime, shared across calls. */
102
+ export declare function _clearGoogleFontCssCacheForTests(): void;
103
+ /**
104
+ * Options for {@link injectDeterministicFontFaces}.
105
+ */
106
+ export interface FontLogger {
107
+ warn(message: string): void;
108
+ info(message: string): void;
109
+ }
110
+ export interface InjectDeterministicFontFacesOptions {
111
+ logger?: FontLogger;
112
+ /**
113
+ * When `true`, exhausted transient fetch failures of a required family throw
114
+ * {@link FontFetchUnavailableError} with code `FONT_FETCH_UNAVAILABLE`;
115
+ * deterministic resolution failures retain `FONT_FETCH_FAILED`.
116
+ *
117
+ * Default `false`: failed fetches are silently swallowed; the composition
118
+ * falls back to system fonts via `warnUnresolvedFonts`. This preserves the
119
+ * in-process behavior.
120
+ *
121
+ * Distributed callers pass `true` so font availability is part of the
122
+ * planDir's content-addressed hash and failures surface as typed errors.
123
+ */
124
+ failClosedFontFetch?: boolean;
125
+ /**
126
+ * Injectable `fetch` implementation. Defaults to the global `fetch`.
127
+ * Tests pass a stub to simulate fetch failures without going over the
128
+ * network.
129
+ */
130
+ fetchImpl?: typeof fetch;
131
+ /** Caller cancellation propagated through fetch attempts and retry waits. */
132
+ abortSignal?: AbortSignal;
133
+ /**
134
+ * Optional retry tuning. Defaults are deliberately bounded for composition
135
+ * planning; tests may lower delays and timeouts without replacing timers.
136
+ */
137
+ fontFetchRetryPolicy?: Partial<FontFetchRetryPolicy>;
138
+ /**
139
+ * When `true` (default for local renders), fonts that aren't resolved by
140
+ * the bundled alias map or Google Fonts are located on the local filesystem,
141
+ * compressed to woff2, and embedded as data URIs. Set to `false` for
142
+ * distributed/Lambda renders where the host filesystem is not guaranteed
143
+ * to contain the same fonts as the authoring machine.
144
+ */
145
+ allowSystemFontCapture?: boolean;
146
+ }
147
+ export declare function injectDeterministicFontFaces(html: string, options?: InjectDeterministicFontFacesOptions): Promise<string>;
148
+ //# sourceMappingURL=deterministicFonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministicFonts.d.ts","sourceRoot":"","sources":["../../src/fonts/deterministicFonts.ts"],"names":[],"mappings":"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"}