@hyperframes/core 0.8.139 → 0.8.141
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/beats/beatDetection.d.ts +5 -2
- package/dist/beats/beatDetection.d.ts.map +1 -1
- package/dist/beats/beatDetection.js +7 -4
- package/dist/beats/beatDetection.js.map +1 -1
- package/dist/compositionReadiness.d.ts +2 -2
- package/dist/compositionReadiness.d.ts.map +1 -1
- package/dist/compositionReadiness.js +13 -10
- package/dist/compositionReadiness.js.map +1 -1
- package/dist/fonts/deterministicFonts.d.ts +7 -0
- package/dist/fonts/deterministicFonts.d.ts.map +1 -1
- package/dist/fonts/deterministicFonts.js +63 -37
- package/dist/fonts/deterministicFonts.js.map +1 -1
- package/dist/fonts/fontDiagnostics.d.ts +37 -0
- package/dist/fonts/fontDiagnostics.d.ts.map +1 -0
- package/dist/fonts/fontDiagnostics.js +31 -0
- package/dist/fonts/fontDiagnostics.js.map +1 -0
- package/dist/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/hyperframe.runtime.iife.js +59 -59
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/previewProxyBox.d.ts +12 -0
- package/dist/previewProxyBox.d.ts.map +1 -0
- package/dist/previewProxyBox.js +28 -0
- package/dist/previewProxyBox.js.map +1 -0
- package/dist/runtime/bridge.d.ts +1 -0
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +1 -0
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/runtime/protocol.d.ts +1 -0
- package/dist/runtime/protocol.d.ts.map +1 -1
- package/dist/runtime/protocol.js +5 -0
- package/dist/runtime/protocol.js.map +1 -1
- package/dist/runtime/types.d.ts +2 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/package.json +8 -4
|
@@ -18,8 +18,11 @@ export declare function computeRmsAt(channelData: Float32Array, sampleRate: numb
|
|
|
18
18
|
/** Normalized beat strength (0–1) at an audio-file time, using a track peak. */
|
|
19
19
|
export declare function strengthAtTime(analysis: Pick<MusicBeatAnalysis, "channelData" | "sampleRate" | "peak">, time: number): number;
|
|
20
20
|
export declare function detectBeats(audioBuffer: AudioBuffer): Promise<number[]>;
|
|
21
|
-
export
|
|
21
|
+
export interface MusicAnalysisOptions {
|
|
22
|
+
pause?: () => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare function analyzeMusicFromBuffer(audioBuffer: AudioBuffer, { pause }?: MusicAnalysisOptions): Promise<MusicBeatAnalysis>;
|
|
22
25
|
export declare function detectBeatsFromUrl(url: string): Promise<number[]>;
|
|
23
|
-
export declare function analyzeMusicFromUrl(url: string): Promise<MusicBeatAnalysis>;
|
|
26
|
+
export declare function analyzeMusicFromUrl(url: string, options?: MusicAnalysisOptions): Promise<MusicBeatAnalysis>;
|
|
24
27
|
export {};
|
|
25
28
|
//# sourceMappingURL=beatDetection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beatDetection.d.ts","sourceRoot":"","sources":["../../src/beats/beatDetection.ts"],"names":[],"mappings":"AAIA,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;AAOjD,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAM,OAAO,CAAC,OAAO,CAA6B,GAC3D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAmB3B;AAKD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iFAAiF;IACjF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IAC5C;iFAC6E;IAC7E,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAID,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWhG;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC,EACxE,IAAI,EAAE,MAAM,GACX,MAAM,CAGR;AAGD,wBAAsB,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwC7E;
|
|
1
|
+
{"version":3,"file":"beatDetection.d.ts","sourceRoot":"","sources":["../../src/beats/beatDetection.ts"],"names":[],"mappings":"AAIA,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;AAOjD,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAM,OAAO,CAAC,OAAO,CAA6B,GAC3D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAmB3B;AAKD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iFAAiF;IACjF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IAC5C;iFAC6E;IAC7E,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAID,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWhG;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC,EACxE,IAAI,EAAE,MAAM,GACX,MAAM,CAGR;AAGD,wBAAsB,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwC7E;AAiGD,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAGD,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,WAAW,EACxB,EAAE,KAAK,EAAE,GAAE,oBAAyB,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAgE5B;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUvE;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAU5B"}
|
|
@@ -171,15 +171,17 @@ function gateBeatsBySilence(beats, channelData, sampleRate) {
|
|
|
171
171
|
return { times, strengths, peak };
|
|
172
172
|
}
|
|
173
173
|
// fallow-ignore-next-line complexity
|
|
174
|
-
export async function analyzeMusicFromBuffer(audioBuffer) {
|
|
174
|
+
export async function analyzeMusicFromBuffer(audioBuffer, { pause } = {}) {
|
|
175
175
|
const channelData = audioBuffer.getChannelData(0);
|
|
176
176
|
const sampleRate = audioBuffer.sampleRate;
|
|
177
177
|
const duration = audioBuffer.duration;
|
|
178
|
+
await pause?.();
|
|
178
179
|
const rawBeats = await detectBeats(audioBuffer);
|
|
179
180
|
const onsetBpm = computeBpmFromBeats(rawBeats);
|
|
180
181
|
let detectiveBpm = null;
|
|
182
|
+
const detect = await loadBpmDetective();
|
|
183
|
+
await pause?.();
|
|
181
184
|
try {
|
|
182
|
-
const detect = await loadBpmDetective();
|
|
183
185
|
if (detect)
|
|
184
186
|
detectiveBpm = detect(audioBuffer);
|
|
185
187
|
}
|
|
@@ -219,6 +221,7 @@ export async function analyzeMusicFromBuffer(audioBuffer) {
|
|
|
219
221
|
confidence = "low";
|
|
220
222
|
regularizeBpm = detectiveBpm;
|
|
221
223
|
}
|
|
224
|
+
await pause?.();
|
|
222
225
|
const gridBeats = regularizeBpm !== null ? regularizeBeats(rawBeats, regularizeBpm, duration) : rawBeats;
|
|
223
226
|
const gated = gateBeatsBySilence(gridBeats, channelData, sampleRate);
|
|
224
227
|
return {
|
|
@@ -243,13 +246,13 @@ export async function detectBeatsFromUrl(url) {
|
|
|
243
246
|
await audioContext.close();
|
|
244
247
|
}
|
|
245
248
|
}
|
|
246
|
-
export async function analyzeMusicFromUrl(url) {
|
|
249
|
+
export async function analyzeMusicFromUrl(url, options = {}) {
|
|
247
250
|
const audioContext = new AudioContext();
|
|
248
251
|
try {
|
|
249
252
|
const response = await fetch(url);
|
|
250
253
|
const arrayBuffer = await response.arrayBuffer();
|
|
251
254
|
const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
|
|
252
|
-
return analyzeMusicFromBuffer(audioBuffer);
|
|
255
|
+
return analyzeMusicFromBuffer(audioBuffer, options);
|
|
253
256
|
}
|
|
254
257
|
finally {
|
|
255
258
|
await audioContext.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beatDetection.js","sourceRoot":"","sources":["../../src/beats/beatDetection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"beatDetection.js","sourceRoot":"","sources":["../../src/beats/beatDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,8 @@ export declare function mediaReadinessInput(doc: Document, signal: AbortSignal,
|
|
|
28
28
|
export declare function computeReadinessInput(doc: Document, signal: AbortSignal): Promise<void> | null;
|
|
29
29
|
/** Composition-agnostic readiness input: waits for a frame to paint, then
|
|
30
30
|
* two consecutive quiet frame gaps — an early-out once the main thread is
|
|
31
|
-
* free
|
|
32
|
-
* what this bound does and does not cover. */
|
|
31
|
+
* free relative to its own frame cadence. See MAX_PAINT_WAIT_MS for
|
|
32
|
+
* what this bound does and does not cover. Compute and media inputs own completion. */
|
|
33
33
|
export declare function paintAndIdleReadinessInput(doc: Document, signal: AbortSignal): Promise<void> | null;
|
|
34
34
|
export interface CompositionReadinessResult {
|
|
35
35
|
timedOut: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositionReadiness.d.ts","sourceRoot":"","sources":["../src/compositionReadiness.ts"],"names":[],"mappings":"AAKA;;;;4DAI4D;AAC5D,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,aAAa,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,yBAAyC,CAAC;AAEpF,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,yBAAyB,CAAC;CACnC;AAWD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,CAI1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAM5E;AAyCD,iEAAiE;AACjE,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,QAAQ,EACb,EAAE,KAAa,EAAE,GAAE,2BAAgC,GAClD,wBAAwB,CAqC1B;AAmCD;uCACuC;AACvC,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,EACnB,EAAE,KAAa,EAAE,GAAE,2BAAgC,GAClD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAMtB;AAkBD;;;mCAGmC;AACnC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CA0B9F;
|
|
1
|
+
{"version":3,"file":"compositionReadiness.d.ts","sourceRoot":"","sources":["../src/compositionReadiness.ts"],"names":[],"mappings":"AAKA;;;;4DAI4D;AAC5D,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,aAAa,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,yBAAyC,CAAC;AAEpF,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,yBAAyB,CAAC;CACnC;AAWD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,CAI1D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAM5E;AAyCD,iEAAiE;AACjE,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,QAAQ,EACb,EAAE,KAAa,EAAE,GAAE,2BAAgC,GAClD,wBAAwB,CAqC1B;AAmCD;uCACuC;AACvC,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,EACnB,EAAE,KAAa,EAAE,GAAE,2BAAgC,GAClD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAMtB;AAkBD;;;mCAGmC;AACnC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CA0B9F;AAuCD;;;uFAGuF;AACvF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAoBtB;AAID,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;yEAKyE;AACzE,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,IAAI,EACvD,IAAI,GAAE,2BAA2B,GAAG;IAClC,MAAM,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,IAAI,CA6BN;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,IAAI,EACvD,IAAI,GAAE,IAAI,CACR,2BAA2B,GAAG;IAC5B,MAAM,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,EACD,OAAO,CACH,GACL,IAAI,CAKN"}
|
|
@@ -141,18 +141,17 @@ export function computeReadinessInput(doc, signal) {
|
|
|
141
141
|
poll();
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
//
|
|
145
|
-
// relative to a 16.7ms (60fps) frame budget — this detects a busy stretch
|
|
146
|
-
// (a mesh build, a shader compile), not ordinary frame-time variance.
|
|
144
|
+
// Gaps under this bound count as quiet on any document.
|
|
147
145
|
const IDLE_FRAME_GAP_MS = 50;
|
|
146
|
+
// Ordinary frame jitter can span 1.5x the document's shortest observed gap.
|
|
147
|
+
const IDLE_FRAME_GAP_RATIO = 1.5;
|
|
148
148
|
// Two consecutive quiet frames, not one: a single fast gap can follow
|
|
149
149
|
// directly after the busy work finishes mid-frame and says nothing about
|
|
150
150
|
// whether the next frame is also free.
|
|
151
151
|
const IDLE_FRAMES_REQUIRED = 2;
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
//
|
|
155
|
-
// before this input existed. ponytail: 1500ms is unmeasured, retune later.
|
|
152
|
+
// Bounds continuing stalls. A backgrounded document with no frames still
|
|
153
|
+
// rides the shared timeout; this budget only bounds frames that arrive.
|
|
154
|
+
// ponytail: 1500ms is unmeasured; retune with frame traces.
|
|
156
155
|
const MAX_PAINT_WAIT_MS = 1_500;
|
|
157
156
|
// Resolves with -1 on abort instead of rejecting: every caller already
|
|
158
157
|
// re-checks `signal.aborted` right after awaiting this, so a sentinel value
|
|
@@ -179,8 +178,8 @@ function nextAnimationFrame(win, signal) {
|
|
|
179
178
|
}
|
|
180
179
|
/** Composition-agnostic readiness input: waits for a frame to paint, then
|
|
181
180
|
* two consecutive quiet frame gaps — an early-out once the main thread is
|
|
182
|
-
* free
|
|
183
|
-
* what this bound does and does not cover. */
|
|
181
|
+
* free relative to its own frame cadence. See MAX_PAINT_WAIT_MS for
|
|
182
|
+
* what this bound does and does not cover. Compute and media inputs own completion. */
|
|
184
183
|
export function paintAndIdleReadinessInput(doc, signal) {
|
|
185
184
|
const win = doc.defaultView;
|
|
186
185
|
if (!win)
|
|
@@ -190,6 +189,7 @@ export function paintAndIdleReadinessInput(doc, signal) {
|
|
|
190
189
|
if (signal.aborted)
|
|
191
190
|
return;
|
|
192
191
|
let lastTs = await nextAnimationFrame(win, signal);
|
|
192
|
+
let shortestGap = lastTs - firstTs;
|
|
193
193
|
let quietStreak = 0;
|
|
194
194
|
while (!signal.aborted && quietStreak < IDLE_FRAMES_REQUIRED) {
|
|
195
195
|
if (lastTs - firstTs >= MAX_PAINT_WAIT_MS)
|
|
@@ -197,7 +197,10 @@ export function paintAndIdleReadinessInput(doc, signal) {
|
|
|
197
197
|
const ts = await nextAnimationFrame(win, signal);
|
|
198
198
|
if (signal.aborted)
|
|
199
199
|
return;
|
|
200
|
-
|
|
200
|
+
const gap = ts - lastTs;
|
|
201
|
+
shortestGap = Math.min(shortestGap, gap);
|
|
202
|
+
const quiet = gap < IDLE_FRAME_GAP_MS || gap <= shortestGap * IDLE_FRAME_GAP_RATIO;
|
|
203
|
+
quietStreak = quiet ? quietStreak + 1 : 0;
|
|
201
204
|
lastTs = ts;
|
|
202
205
|
}
|
|
203
206
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositionReadiness.js","sourceRoot":"","sources":["../src/compositionReadiness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compositionReadiness.js","sourceRoot":"","sources":["../src/compositionReadiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type FontDiagnostics } from "./fontDiagnostics.js";
|
|
2
|
+
export type { FontDiagnostics };
|
|
1
3
|
type FontFaceSpec = {
|
|
2
4
|
weight: string;
|
|
3
5
|
style?: "normal" | "italic";
|
|
@@ -79,6 +81,11 @@ export declare class FontFetchError extends Error {
|
|
|
79
81
|
readonly cause?: unknown;
|
|
80
82
|
/** Unlike `message`, holds no URLs: safe for callers that must not echo resolver output. */
|
|
81
83
|
readonly unresolvedFamilies: readonly string[];
|
|
84
|
+
/**
|
|
85
|
+
* Resolver stage record for log forwarding. Set ONLY on the per-compile Unresolved error; shared
|
|
86
|
+
* (cached or retry-exhausted) errors are never mutated. Never part of `message` or any response body.
|
|
87
|
+
*/
|
|
88
|
+
diagnostics?: FontDiagnostics;
|
|
82
89
|
constructor(familyName: string, url: string, message: string, cause?: unknown, code?: FontFetchErrorCode, unresolvedFamilies?: readonly string[]);
|
|
83
90
|
}
|
|
84
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deterministicFonts.d.ts","sourceRoot":"","sources":["../../src/fonts/deterministicFonts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deterministicFonts.d.ts","sourceRoot":"","sources":["../../src/fonts/deterministicFonts.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import postcss from "postcss";
|
|
|
9
9
|
import { EMBEDDED_FONT_DATA } from "./fontData.generated.js";
|
|
10
10
|
import { fontToDataUri } from "./fontCompression.js";
|
|
11
11
|
import { authoredGoogleFontStylesheets, withPageText } from "./authoredGoogleFonts.js";
|
|
12
|
+
import { FontDiagCollector, } from "./fontDiagnostics.js";
|
|
12
13
|
/**
|
|
13
14
|
* Family names that resolve to a host-OS font (or a CSS generic that the
|
|
14
15
|
* browser substitutes with a host-OS font). Exported so plan-time validators
|
|
@@ -591,7 +592,7 @@ async function bundledFamilyFaceRules(canonical, normalizedFamily, emitFamily, o
|
|
|
591
592
|
// `emitFamily` so the authored CSS keeps matching.
|
|
592
593
|
const canonicalFamily = resolveAliasDisplayName(normalizedFamily);
|
|
593
594
|
const googleFaces = canonicalFamily
|
|
594
|
-
? await fetchFamilyFaces(canonicalFamily, optional, options, fontText)
|
|
595
|
+
? await fetchFamilyFaces(canonicalFamily, "bundled_supplement", optional, options, fontText)
|
|
595
596
|
: [];
|
|
596
597
|
// Bundled weights only cover Latin. Keep other subsets (including
|
|
597
598
|
// text= responses without a range), even for weights already embedded.
|
|
@@ -617,7 +618,7 @@ async function bundledFamilyFaceRules(canonical, normalizedFamily, emitFamily, o
|
|
|
617
618
|
}
|
|
618
619
|
// Path 2: fetch from Google Fonts (with local cache)
|
|
619
620
|
async function googleFamilyFaceRules(lookupFamily, emitFamily, optional, options, fontText) {
|
|
620
|
-
const googleFaces = await fetchFamilyFaces(lookupFamily, optional, options, fontText);
|
|
621
|
+
const googleFaces = await fetchFamilyFaces(lookupFamily, "direct_google", optional, options, fontText);
|
|
621
622
|
if (googleFaces.length === 0)
|
|
622
623
|
return null;
|
|
623
624
|
return googleFaces.map((face) => buildFontFaceRule(emitFamily, face.dataUri, face.weight, face.style, face.unicodeRange));
|
|
@@ -817,9 +818,11 @@ async function buildFontFaceCss(requestedFamilies, options, declaredFamilies, fo
|
|
|
817
818
|
// Required families fetch first, so optional ones cannot spend the shared fetch budget before them.
|
|
818
819
|
const requiredFirst = [...requestedFamilies].sort(([, a], [, b]) => Number(a.optional) - Number(b.optional));
|
|
819
820
|
for (const [normalizedFamily, { family: originalCaseFamily, optional }] of requiredFirst) {
|
|
821
|
+
options.diag.beginFamily(!optional);
|
|
820
822
|
const familyRules = (await resolveFamilyFaceRules(normalizedFamily, originalCaseFamily, originalCaseFamily, optional, options, fontText)) ??
|
|
821
823
|
// Last, so a family that already resolves keeps exactly the faces it had.
|
|
822
824
|
(await resolveDeclaredFamilyAlias(originalCaseFamily, declaredFamilies(), optional, options, fontText));
|
|
825
|
+
options.diag.endFamily(Boolean(familyRules));
|
|
823
826
|
if (familyRules) {
|
|
824
827
|
rules.push(...familyRules);
|
|
825
828
|
continue;
|
|
@@ -1083,9 +1086,12 @@ async function fetchFontResource(url, init, readBody, familyName, what, options)
|
|
|
1083
1086
|
* (4xx) so the caller skips that face. Throws {@link FontFetchError} on
|
|
1084
1087
|
* transient (5xx / network) failures when `failClosedFontFetch` is set.
|
|
1085
1088
|
*/
|
|
1086
|
-
async function ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style, options) {
|
|
1089
|
+
async function ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style, options, tally) {
|
|
1090
|
+
tally.total += 1;
|
|
1087
1091
|
try {
|
|
1088
|
-
|
|
1092
|
+
const cached = `data:font/woff2;base64,${readFileSync(cachePath).toString("base64")}`;
|
|
1093
|
+
tally.diskCacheHit += 1;
|
|
1094
|
+
return cached;
|
|
1089
1095
|
}
|
|
1090
1096
|
catch {
|
|
1091
1097
|
// Not cached yet — fall through to fetch.
|
|
@@ -1093,11 +1099,15 @@ async function ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style
|
|
|
1093
1099
|
const woff2What = `Google Fonts woff2 (${weight}/${style})`;
|
|
1094
1100
|
try {
|
|
1095
1101
|
const fontResult = await fetchFontResource(woff2Url, undefined, (response) => response.arrayBuffer(), familyName, woff2What, options);
|
|
1096
|
-
if (!fontResult.ok)
|
|
1102
|
+
if (!fontResult.ok) {
|
|
1103
|
+
const status = String(fontResult.response.status);
|
|
1104
|
+
tally.nonOk[status] = (tally.nonOk[status] ?? 0) + 1;
|
|
1097
1105
|
return null;
|
|
1106
|
+
}
|
|
1098
1107
|
// wx = O_CREAT|O_EXCL: atomic create, rejects symlinks, fails with
|
|
1099
1108
|
// EEXIST if a concurrent call cached it between our read and write.
|
|
1100
1109
|
writeFileSync(cachePath, Buffer.from(fontResult.body), { flag: "wx", mode: 0o644 });
|
|
1110
|
+
tally.fetchedOk += 1;
|
|
1101
1111
|
}
|
|
1102
1112
|
catch (err) {
|
|
1103
1113
|
throwIfCallerAborted(options.abortSignal);
|
|
@@ -1105,6 +1115,7 @@ async function ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style
|
|
|
1105
1115
|
throw err;
|
|
1106
1116
|
if (err.code === "EEXIST") {
|
|
1107
1117
|
// Concurrent call wrote it — read their result below.
|
|
1118
|
+
tally.diskCacheHit += 1;
|
|
1108
1119
|
}
|
|
1109
1120
|
else if (options.failClosedFontFetch) {
|
|
1110
1121
|
throw fontFetchError(familyName, woff2Url, woff2What, { error: err });
|
|
@@ -1115,9 +1126,6 @@ async function ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style
|
|
|
1115
1126
|
}
|
|
1116
1127
|
return `data:font/woff2;base64,${readFileSync(cachePath).toString("base64")}`;
|
|
1117
1128
|
}
|
|
1118
|
-
// Per-process cache for Google Fonts CSS lookups, keyed by request URL —
|
|
1119
|
-
// repeat compiles of the same family reuse one network round trip. A
|
|
1120
|
-
// rejected lookup evicts itself so a later call still retries.
|
|
1121
1129
|
const googleFontCssCache = new Map();
|
|
1122
1130
|
/** Test-only reset — the cache is otherwise process-lifetime, shared across calls. */
|
|
1123
1131
|
export function _clearGoogleFontCssCacheForTests() {
|
|
@@ -1135,21 +1143,22 @@ function raceAgainstAbort(promise, signal) {
|
|
|
1135
1143
|
promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
|
|
1136
1144
|
});
|
|
1137
1145
|
}
|
|
1138
|
-
function fetchGoogleFontCss(url, familyName, options) {
|
|
1146
|
+
function fetchGoogleFontCss(url, familyName, options, attempt) {
|
|
1139
1147
|
// Retries decide the outcome, so only callers with the same mode and attempt count share an entry.
|
|
1140
1148
|
const mode = options.failClosedFontFetch ? `closed${options.retryPolicy.maxAttempts}` : "open";
|
|
1141
1149
|
const key = `${mode}:${url}`;
|
|
1142
1150
|
let shared = googleFontCssCache.get(key);
|
|
1151
|
+
attempt.cssCache = shared ? "hit" : "fresh";
|
|
1143
1152
|
if (!shared) {
|
|
1144
1153
|
// The shared fetch must not carry any one caller's abortSignal, or that
|
|
1145
1154
|
// caller cancelling would fail the lookup for every other waiter.
|
|
1146
1155
|
shared = fetchFontResource(url, { headers: { "User-Agent": WOFF2_USER_AGENT } }, (response) => response.text(), familyName, "Google Fonts CSS", { ...options, abortSignal: undefined }).then((result) => {
|
|
1147
1156
|
if (result.ok)
|
|
1148
|
-
return { ok: true, body: result.body };
|
|
1157
|
+
return { ok: true, body: result.body, status: result.response.status };
|
|
1149
1158
|
// A transient status must not stick for the process lifetime.
|
|
1150
1159
|
if (isRetryableFontFetchStatus(result.response.status))
|
|
1151
1160
|
googleFontCssCache.delete(key);
|
|
1152
|
-
return { ok: false };
|
|
1161
|
+
return { ok: false, status: result.response.status };
|
|
1153
1162
|
});
|
|
1154
1163
|
googleFontCssCache.set(key, shared);
|
|
1155
1164
|
shared.catch(() => googleFontCssCache.delete(key));
|
|
@@ -1164,7 +1173,7 @@ function declaredFaceFamily(block) {
|
|
|
1164
1173
|
return found?.[1];
|
|
1165
1174
|
}
|
|
1166
1175
|
// fallow-ignore-next-line complexity
|
|
1167
|
-
async function fetchGoogleFont(familyName, options, fontText) {
|
|
1176
|
+
async function fetchGoogleFont(familyName, path, options, fontText) {
|
|
1168
1177
|
// Agents sometimes copy the `family=` value from a Google Fonts URL into
|
|
1169
1178
|
// CSS, where `+` remains a literal character instead of being decoded as a
|
|
1170
1179
|
// space. Resolve that URL-style spelling through the canonical Google family
|
|
@@ -1182,26 +1191,36 @@ async function fetchGoogleFont(familyName, options, fontText) {
|
|
|
1182
1191
|
: options.authoredStylesheets.get(normalizedFamily);
|
|
1183
1192
|
// `text=` asks Google for only the characters on the page. A CJK family
|
|
1184
1193
|
// without it is a hundred files, and the compile's font budget is 20s.
|
|
1185
|
-
const
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
];
|
|
1190
|
-
const faces = [];
|
|
1191
|
-
for (const url of urls) {
|
|
1192
|
-
faces.push(...(await fetchGoogleFontStylesheet(googleFamilyName, url, options)));
|
|
1194
|
+
const defaultUrl = `https://fonts.googleapis.com/css2?family=${encodedFamily}:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,700${textParam}`;
|
|
1195
|
+
const fetchStylesheet = (url, urlSource) => fetchGoogleFontStylesheet(googleFamilyName, url, options, options.diag.startAttempt(path, urlSource, /[?&]text=/.test(url) ? "present" : "absent"));
|
|
1196
|
+
if (!authoredStylesheet) {
|
|
1197
|
+
return (await fetchStylesheet(defaultUrl, "default")).faces;
|
|
1193
1198
|
}
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1199
|
+
const faces = [];
|
|
1200
|
+
const outcomes = [];
|
|
1201
|
+
for (const url of authoredStylesheet) {
|
|
1202
|
+
const result = await fetchStylesheet(withPageText(url, fontText), "authored");
|
|
1203
|
+
faces.push(...result.faces);
|
|
1204
|
+
if (result.faces.length === 0)
|
|
1205
|
+
outcomes.push(result.status ? `http_${result.status}` : "no_faces");
|
|
1206
|
+
}
|
|
1207
|
+
if (faces.length > 0)
|
|
1208
|
+
return faces;
|
|
1209
|
+
const fallback = (await fetchStylesheet(defaultUrl, "default")).faces;
|
|
1210
|
+
options.log.warn(`[Compiler] google_font_link_fallback family="${familyName}" link_outcomes=${outcomes.join(",")} ` +
|
|
1211
|
+
`fallback_faces=${fallback.length}`);
|
|
1212
|
+
return fallback;
|
|
1213
|
+
}
|
|
1214
|
+
async function readGoogleFontStylesheet(familyName, url, options, attempt) {
|
|
1197
1215
|
try {
|
|
1198
|
-
const cssResult = await fetchGoogleFontCss(url, familyName, options);
|
|
1216
|
+
const cssResult = await fetchGoogleFontCss(url, familyName, options, attempt);
|
|
1217
|
+
attempt.cssStatus = cssResult.status;
|
|
1199
1218
|
if (!cssResult.ok) {
|
|
1200
1219
|
// Missing families are deterministic; transient failures follow the
|
|
1201
1220
|
// caller's retry and fail-closed policy.
|
|
1202
|
-
return null;
|
|
1221
|
+
return { css: null, status: cssResult.status };
|
|
1203
1222
|
}
|
|
1204
|
-
return cssResult.body;
|
|
1223
|
+
return { css: cssResult.body };
|
|
1205
1224
|
}
|
|
1206
1225
|
catch (err) {
|
|
1207
1226
|
// Rethrow typed error untouched. Network / DNS / fetch-throws are
|
|
@@ -1213,7 +1232,7 @@ async function readGoogleFontStylesheet(familyName, url, options) {
|
|
|
1213
1232
|
if (options.failClosedFontFetch) {
|
|
1214
1233
|
throw fontFetchError(familyName, url, "Google Fonts CSS", { error: err });
|
|
1215
1234
|
}
|
|
1216
|
-
return null;
|
|
1235
|
+
return { css: null };
|
|
1217
1236
|
}
|
|
1218
1237
|
}
|
|
1219
1238
|
function parseGoogleFontSource(match, familyName) {
|
|
@@ -1230,11 +1249,13 @@ function parseGoogleFontSource(match, familyName) {
|
|
|
1230
1249
|
unicodeRange: match[4]?.trim() || undefined,
|
|
1231
1250
|
};
|
|
1232
1251
|
}
|
|
1233
|
-
async function fetchGoogleFontStylesheet(familyName, url, options) {
|
|
1252
|
+
async function fetchGoogleFontStylesheet(familyName, url, options, attempt) {
|
|
1234
1253
|
const slug = fontSlug(familyName);
|
|
1235
|
-
const
|
|
1236
|
-
if (
|
|
1237
|
-
return [];
|
|
1254
|
+
const read = await readGoogleFontStylesheet(familyName, url, options, attempt);
|
|
1255
|
+
if (read.css === null)
|
|
1256
|
+
return { faces: [], status: read.status };
|
|
1257
|
+
const cssText = read.css;
|
|
1258
|
+
attempt.blocksTotal = (cssText.match(/@font-face\s*\{/gi) ?? []).length;
|
|
1238
1259
|
// Parse @font-face blocks from the CSS response. The optional trailing
|
|
1239
1260
|
// capture grabs each face's `unicode-range` (Google emits it after `src`)
|
|
1240
1261
|
// so the injected face only claims the codepoints the subset actually
|
|
@@ -1244,27 +1265,28 @@ async function fetchGoogleFontStylesheet(familyName, url, options) {
|
|
|
1244
1265
|
const faceRegex = /@font-face\s*\{[^}]*font-style:\s*(normal|italic|oblique(?:\s+-?\d+(?:\.\d+)?deg){0,2})\s*;[^}]*font-weight:\s*(\d+(?:\s+\d+)?)[^}]*src:\s*url\(([^)]+)\)\s*format\(['"]woff2['"]\)(?:[^}]*?unicode-range:\s*([^;}]+))?[^}]*\}/gi;
|
|
1245
1266
|
const faces = [];
|
|
1246
1267
|
for (const match of cssText.matchAll(faceRegex)) {
|
|
1268
|
+
attempt.regexMatches += 1;
|
|
1247
1269
|
const source = parseGoogleFontSource(match, familyName);
|
|
1248
1270
|
if (!source)
|
|
1249
1271
|
continue;
|
|
1250
1272
|
const { weight, style, unicodeRange, url: woff2Url } = source;
|
|
1251
1273
|
const cachePath = cachedWoff2Path(slug, weight, style, subsetToken(woff2Url));
|
|
1252
|
-
const dataUri = await ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style, options);
|
|
1274
|
+
const dataUri = await ensureWoff2DataUri(cachePath, woff2Url, familyName, weight, style, options, attempt.assets);
|
|
1253
1275
|
if (dataUri)
|
|
1254
1276
|
faces.push({ weight, style, dataUri, unicodeRange });
|
|
1255
1277
|
}
|
|
1256
1278
|
if (faces.length > 0) {
|
|
1257
1279
|
options.log.info(`[Compiler] Fetched ${faces.length} font face(s) for "${familyName}" from Google Fonts (cached to ${fontCacheDir(slug)})`);
|
|
1258
1280
|
}
|
|
1259
|
-
return faces;
|
|
1281
|
+
return { faces };
|
|
1260
1282
|
}
|
|
1261
1283
|
/** An optional family gets one retry on a transient failure, then renders its fallback with a warning. */
|
|
1262
|
-
async function fetchFamilyFaces(familyName, optional, options, fontText) {
|
|
1284
|
+
async function fetchFamilyFaces(familyName, path, optional, options, fontText) {
|
|
1263
1285
|
if (!optional)
|
|
1264
|
-
return fetchGoogleFont(familyName, options, fontText);
|
|
1286
|
+
return fetchGoogleFont(familyName, path, options, fontText);
|
|
1265
1287
|
const maxAttempts = Math.min(options.retryPolicy.maxAttempts, 2);
|
|
1266
1288
|
try {
|
|
1267
|
-
return await fetchGoogleFont(familyName, { ...options, retryPolicy: { ...options.retryPolicy, maxAttempts } }, fontText);
|
|
1289
|
+
return await fetchGoogleFont(familyName, path, { ...options, retryPolicy: { ...options.retryPolicy, maxAttempts } }, fontText);
|
|
1268
1290
|
}
|
|
1269
1291
|
catch (err) {
|
|
1270
1292
|
if (!(err instanceof FontFetchUnavailableError))
|
|
@@ -1422,6 +1444,7 @@ function placeAfterEveryStylesheet(document, head, styleEl) {
|
|
|
1422
1444
|
head.appendChild(styleEl);
|
|
1423
1445
|
}
|
|
1424
1446
|
export async function injectDeterministicFontFaces(html, options = {}) {
|
|
1447
|
+
const diag = new FontDiagCollector();
|
|
1425
1448
|
const failClosedFontFetch = options.failClosedFontFetch === true;
|
|
1426
1449
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
1427
1450
|
const allowSystemFontCapture = options.allowSystemFontCapture !== false;
|
|
@@ -1435,6 +1458,7 @@ export async function injectDeterministicFontFaces(html, options = {}) {
|
|
|
1435
1458
|
retryPolicy,
|
|
1436
1459
|
retryDeadlineMs: Date.now() + retryPolicy.maxElapsedMs,
|
|
1437
1460
|
authoredStylesheets: authoredGoogleFontStylesheets(html),
|
|
1461
|
+
diag,
|
|
1438
1462
|
};
|
|
1439
1463
|
const existingFaces = extractExistingFontFaces(html);
|
|
1440
1464
|
const requestedFamilies = extractRequestedFontFamilies(html);
|
|
@@ -1452,8 +1476,10 @@ export async function injectDeterministicFontFaces(html, options = {}) {
|
|
|
1452
1476
|
// An optional family that no source serves, or that stayed unavailable, is tolerated.
|
|
1453
1477
|
const required = unresolved.filter((family) => !pendingFamilies.get(family.toLowerCase())?.optional);
|
|
1454
1478
|
if (required.length > 0 && options.failClosedFontFetch) {
|
|
1455
|
-
|
|
1479
|
+
const unresolvedError = new FontFetchError(required.join(", "), "", `[Compiler] Unresolved fonts in fail-closed mode: ${required.join(", ")}. ` +
|
|
1456
1480
|
`Distributed renders require all fonts to be resolvable.`, undefined, FONT_FETCH_FAILED, unresolved);
|
|
1481
|
+
unresolvedError.diagnostics = diag.snapshot();
|
|
1482
|
+
throw unresolvedError;
|
|
1457
1483
|
}
|
|
1458
1484
|
if (!css) {
|
|
1459
1485
|
if (unresolved.length > 0) {
|