astro 5.16.2 → 5.16.4

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.
Files changed (65) hide show
  1. package/dist/actions/runtime/server.d.ts +5 -4
  2. package/dist/actions/runtime/server.js +0 -1
  3. package/dist/assets/fonts/definitions.d.ts +8 -3
  4. package/dist/assets/fonts/infra/build-remote-font-provider-mod-resolver.d.ts +3 -1
  5. package/dist/assets/fonts/infra/build-remote-font-provider-mod-resolver.js +5 -7
  6. package/dist/assets/fonts/infra/build-url-proxy-hash-resolver.d.ts +15 -5
  7. package/dist/assets/fonts/infra/build-url-proxy-hash-resolver.js +17 -10
  8. package/dist/assets/fonts/infra/build-url-resolver.d.ts +10 -5
  9. package/dist/assets/fonts/infra/build-url-resolver.js +33 -27
  10. package/dist/assets/fonts/infra/cached-font-fetcher.d.ts +11 -7
  11. package/dist/assets/fonts/infra/cached-font-fetcher.js +35 -29
  12. package/dist/assets/fonts/infra/capsize-font-metrics-resolver.d.ts +18 -5
  13. package/dist/assets/fonts/infra/capsize-font-metrics-resolver.js +45 -40
  14. package/dist/assets/fonts/infra/data-collector.d.ts +10 -3
  15. package/dist/assets/fonts/infra/data-collector.js +30 -16
  16. package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.d.ts +7 -3
  17. package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.js +11 -9
  18. package/dist/assets/fonts/infra/dev-url-proxy-hash-resolver.d.ts +15 -5
  19. package/dist/assets/fonts/infra/dev-url-proxy-hash-resolver.js +31 -22
  20. package/dist/assets/fonts/infra/dev-url-resolver.d.ts +9 -4
  21. package/dist/assets/fonts/infra/dev-url-resolver.js +24 -20
  22. package/dist/assets/fonts/infra/font-type-extractor.d.ts +4 -1
  23. package/dist/assets/fonts/infra/font-type-extractor.js +14 -16
  24. package/dist/assets/fonts/infra/fontace-font-file-reader.d.ts +10 -1
  25. package/dist/assets/fonts/infra/fontace-font-file-reader.js +18 -20
  26. package/dist/assets/fonts/infra/levenshtein-string-matcher.d.ts +4 -1
  27. package/dist/assets/fonts/infra/levenshtein-string-matcher.js +119 -121
  28. package/dist/assets/fonts/infra/local-url-proxy-content-resolver.d.ts +4 -0
  29. package/dist/assets/fonts/infra/local-url-proxy-content-resolver.js +14 -0
  30. package/dist/assets/fonts/infra/minifiable-css-renderer.d.ts +8 -3
  31. package/dist/assets/fonts/infra/minifiable-css-renderer.js +12 -10
  32. package/dist/assets/fonts/infra/remote-font-provider-resolver.d.ts +9 -4
  33. package/dist/assets/fonts/infra/remote-font-provider-resolver.js +42 -38
  34. package/dist/assets/fonts/infra/remote-url-proxy-content-resolver.d.ts +4 -0
  35. package/dist/assets/fonts/infra/remote-url-proxy-content-resolver.js +9 -0
  36. package/dist/assets/fonts/infra/require-local-provider-url-resolver.d.ts +8 -4
  37. package/dist/assets/fonts/infra/require-local-provider-url-resolver.js +17 -12
  38. package/dist/assets/fonts/infra/system-fallbacks-provider.d.ts +5 -10
  39. package/dist/assets/fonts/infra/system-fallbacks-provider.js +8 -11
  40. package/dist/assets/fonts/infra/unstorage-fs-storage.d.ts +11 -0
  41. package/dist/assets/fonts/infra/unstorage-fs-storage.js +26 -0
  42. package/dist/assets/fonts/infra/url-proxy.d.ts +16 -7
  43. package/dist/assets/fonts/infra/url-proxy.js +46 -27
  44. package/dist/assets/fonts/infra/xxhash-hasher.d.ts +6 -1
  45. package/dist/assets/fonts/infra/xxhash-hasher.js +13 -9
  46. package/dist/assets/fonts/orchestrate.d.ts +1 -2
  47. package/dist/assets/fonts/utils.d.ts +1 -2
  48. package/dist/assets/fonts/vite-plugin-fonts.js +43 -46
  49. package/dist/cli/infra/build-time-astro-version-provider.js +1 -1
  50. package/dist/content/content-layer.js +3 -3
  51. package/dist/core/app/index.js +8 -2
  52. package/dist/core/constants.js +1 -1
  53. package/dist/core/csp/runtime.d.ts +11 -0
  54. package/dist/core/csp/runtime.js +35 -0
  55. package/dist/core/dev/dev.js +1 -1
  56. package/dist/core/messages.js +2 -2
  57. package/dist/core/render-context.js +25 -5
  58. package/dist/core/util/pathname.d.ts +10 -0
  59. package/dist/core/util/pathname.js +17 -0
  60. package/dist/vite-plugin-astro-server/request.js +9 -2
  61. package/package.json +2 -2
  62. package/dist/assets/fonts/infra/fs-storage.d.ts +0 -4
  63. package/dist/assets/fonts/infra/fs-storage.js +0 -14
  64. package/dist/assets/fonts/infra/url-proxy-content-resolver.d.ts +0 -3
  65. package/dist/assets/fonts/infra/url-proxy-content-resolver.js +0 -23
@@ -6,19 +6,20 @@ export * from './shared.js';
6
6
  export type ActionAccept = 'form' | 'json';
7
7
  export type ActionHandler<TInputSchema, TOutput> = TInputSchema extends z.ZodType ? (input: z.infer<TInputSchema>, context: ActionAPIContext) => MaybePromise<TOutput> : (input: any, context: ActionAPIContext) => MaybePromise<TOutput>;
8
8
  export type ActionReturnType<T extends ActionHandler<any, any>> = Awaited<ReturnType<T>>;
9
- declare const inferSymbol: unique symbol;
9
+ export type InferKey = '__internalInfer';
10
10
  /**
11
11
  * Infers the type of an action's input based on its Zod schema
12
12
  *
13
13
  * @see https://docs.astro.build/en/reference/modules/astro-actions/#actioninputschema
14
14
  */
15
15
  export type ActionInputSchema<T extends ActionClient<any, any, any>> = T extends {
16
- [inferSymbol]: any;
17
- } ? T[typeof inferSymbol] : never;
16
+ [key in InferKey]: any;
17
+ } ? T[InferKey] : never;
18
18
  export type ActionClient<TOutput, TAccept extends ActionAccept | undefined, TInputSchema extends z.ZodType | undefined> = TInputSchema extends z.ZodType ? ((input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<SafeResult<z.input<TInputSchema> extends ErrorInferenceObject ? z.input<TInputSchema> : ErrorInferenceObject, Awaited<TOutput>>>) & {
19
19
  queryString: string;
20
20
  orThrow: (input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<Awaited<TOutput>>;
21
- [inferSymbol]: TInputSchema;
21
+ } & {
22
+ [key in InferKey]: TInputSchema;
22
23
  } : ((input?: any) => Promise<SafeResult<never, Awaited<TOutput>>>) & {
23
24
  orThrow: (input?: any) => Promise<Awaited<TOutput>>;
24
25
  };
@@ -20,7 +20,6 @@ import {
20
20
  isActionAPIContext
21
21
  } from "./utils.js";
22
22
  export * from "./shared.js";
23
- const inferSymbol = Symbol("#infer");
24
23
  function defineAction({
25
24
  accept,
26
25
  input: inputSchema,
@@ -14,7 +14,7 @@ export interface RemoteFontProviderResolver {
14
14
  export interface LocalProviderUrlResolver {
15
15
  resolve: (input: string) => string;
16
16
  }
17
- interface ProxyData {
17
+ export interface ProxyData {
18
18
  weight: unifont.FontFaceData['weight'];
19
19
  style: unifont.FontFaceData['style'];
20
20
  subset: NonNullable<unifont.FontFaceData['meta']>['subset'];
@@ -28,7 +28,7 @@ export interface UrlProxy {
28
28
  }
29
29
  export interface UrlResolver {
30
30
  resolve: (hash: string) => string;
31
- getCspResources: () => Array<string>;
31
+ readonly cspResources: Array<string>;
32
32
  }
33
33
  export interface UrlProxyContentResolver {
34
34
  resolve: (url: string) => string;
@@ -84,4 +84,9 @@ export interface UrlProxyHashResolver {
84
84
  export interface StringMatcher {
85
85
  getClosestMatch: (target: string, candidates: Array<string>) => string;
86
86
  }
87
- export {};
87
+ export interface Storage {
88
+ getItem: (key: string) => Promise<any | null>;
89
+ getItemRaw: (key: string) => Promise<Buffer | null>;
90
+ setItem: (key: string, value: any) => Promise<void>;
91
+ setItemRaw: (key: string, value: any) => Promise<void>;
92
+ }
@@ -1,2 +1,4 @@
1
1
  import type { RemoteFontProviderModResolver } from '../definitions.js';
2
- export declare function createBuildRemoteFontProviderModResolver(): RemoteFontProviderModResolver;
2
+ export declare class BuildRemoteFontProviderModResolver implements RemoteFontProviderModResolver {
3
+ resolve(id: string): Promise<any>;
4
+ }
@@ -1,10 +1,8 @@
1
- function createBuildRemoteFontProviderModResolver() {
2
- return {
3
- resolve(id) {
4
- return import(id);
5
- }
6
- };
1
+ class BuildRemoteFontProviderModResolver {
2
+ async resolve(id) {
3
+ return await import(id);
4
+ }
7
5
  }
8
6
  export {
9
- createBuildRemoteFontProviderModResolver
7
+ BuildRemoteFontProviderModResolver
10
8
  };
@@ -1,5 +1,15 @@
1
- import type { Hasher, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
2
- export declare function createBuildUrlProxyHashResolver({ hasher, contentResolver, }: {
3
- hasher: Hasher;
4
- contentResolver: UrlProxyContentResolver;
5
- }): UrlProxyHashResolver;
1
+ import type { Hasher, ProxyData, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
2
+ import type { FontType } from '../types.js';
3
+ export declare class BuildUrlProxyHashResolver implements UrlProxyHashResolver {
4
+ #private;
5
+ constructor({ hasher, contentResolver, }: {
6
+ hasher: Hasher;
7
+ contentResolver: UrlProxyContentResolver;
8
+ });
9
+ resolve({ originalUrl, type, }: {
10
+ originalUrl: string;
11
+ type: FontType;
12
+ cssVariable: string;
13
+ data: ProxyData;
14
+ }): string;
15
+ }
@@ -1,13 +1,20 @@
1
- function createBuildUrlProxyHashResolver({
2
- hasher,
3
- contentResolver
4
- }) {
5
- return {
6
- resolve({ originalUrl, type }) {
7
- return `${hasher.hashString(contentResolver.resolve(originalUrl))}.${type}`;
8
- }
9
- };
1
+ class BuildUrlProxyHashResolver {
2
+ #hasher;
3
+ #contentResolver;
4
+ constructor({
5
+ hasher,
6
+ contentResolver
7
+ }) {
8
+ this.#hasher = hasher;
9
+ this.#contentResolver = contentResolver;
10
+ }
11
+ resolve({
12
+ originalUrl,
13
+ type
14
+ }) {
15
+ return `${this.#hasher.hashString(this.#contentResolver.resolve(originalUrl))}.${type}`;
16
+ }
10
17
  }
11
18
  export {
12
- createBuildUrlProxyHashResolver
19
+ BuildUrlProxyHashResolver
13
20
  };
@@ -1,7 +1,12 @@
1
1
  import type { AssetsPrefix } from '../../../types/public/index.js';
2
2
  import type { UrlResolver } from '../definitions.js';
3
- export declare function createBuildUrlResolver({ base, assetsPrefix, searchParams, }: {
4
- base: string;
5
- assetsPrefix: AssetsPrefix;
6
- searchParams: URLSearchParams;
7
- }): UrlResolver;
3
+ export declare class BuildUrlResolver implements UrlResolver {
4
+ #private;
5
+ constructor({ base, assetsPrefix, searchParams, }: {
6
+ base: string;
7
+ assetsPrefix: AssetsPrefix;
8
+ searchParams: URLSearchParams;
9
+ });
10
+ resolve(hash: string): string;
11
+ get cspResources(): Array<string>;
12
+ }
@@ -1,34 +1,40 @@
1
1
  import { fileExtension, joinPaths, prependForwardSlash } from "../../../core/path.js";
2
2
  import { getAssetsPrefix } from "../../utils/getAssetsPrefix.js";
3
3
  import { createPlaceholderURL, stringifyPlaceholderURL } from "../../utils/url.js";
4
- function createBuildUrlResolver({
5
- base,
6
- assetsPrefix,
7
- searchParams
8
- }) {
9
- const resources = /* @__PURE__ */ new Set();
10
- return {
11
- resolve(hash) {
12
- const prefix = assetsPrefix ? getAssetsPrefix(fileExtension(hash), assetsPrefix) : void 0;
13
- let urlPath;
14
- if (prefix) {
15
- resources.add(prefix);
16
- urlPath = joinPaths(prefix, base, hash);
17
- } else {
18
- resources.add("'self'");
19
- urlPath = prependForwardSlash(joinPaths(base, hash));
20
- }
21
- const url = createPlaceholderURL(urlPath);
22
- searchParams.forEach((value, key) => {
23
- url.searchParams.set(key, value);
24
- });
25
- return stringifyPlaceholderURL(url);
26
- },
27
- getCspResources() {
28
- return Array.from(resources);
4
+ class BuildUrlResolver {
5
+ #resources = /* @__PURE__ */ new Set();
6
+ #base;
7
+ #assetsPrefix;
8
+ #searchParams;
9
+ constructor({
10
+ base,
11
+ assetsPrefix,
12
+ searchParams
13
+ }) {
14
+ this.#base = base;
15
+ this.#assetsPrefix = assetsPrefix;
16
+ this.#searchParams = searchParams;
17
+ }
18
+ resolve(hash) {
19
+ const prefix = this.#assetsPrefix ? getAssetsPrefix(fileExtension(hash), this.#assetsPrefix) : void 0;
20
+ let urlPath;
21
+ if (prefix) {
22
+ this.#resources.add(prefix);
23
+ urlPath = joinPaths(prefix, this.#base, hash);
24
+ } else {
25
+ this.#resources.add("'self'");
26
+ urlPath = prependForwardSlash(joinPaths(this.#base, hash));
29
27
  }
30
- };
28
+ const url = createPlaceholderURL(urlPath);
29
+ this.#searchParams.forEach((value, key) => {
30
+ url.searchParams.set(key, value);
31
+ });
32
+ return stringifyPlaceholderURL(url);
33
+ }
34
+ get cspResources() {
35
+ return Array.from(this.#resources);
36
+ }
31
37
  }
32
38
  export {
33
- createBuildUrlResolver
39
+ BuildUrlResolver
34
40
  };
@@ -1,7 +1,11 @@
1
- import type { Storage } from 'unstorage';
2
- import type { FontFetcher } from '../definitions.js';
3
- export declare function createCachedFontFetcher({ storage, fetch, readFile, }: {
4
- storage: Storage;
5
- fetch: (url: string, init?: RequestInit) => Promise<Response>;
6
- readFile: (url: string) => Promise<Buffer>;
7
- }): FontFetcher;
1
+ import type { FontFetcher, Storage } from '../definitions.js';
2
+ import type { FontFileData } from '../types.js';
3
+ export declare class CachedFontFetcher implements FontFetcher {
4
+ #private;
5
+ constructor({ storage, fetch, readFile, }: {
6
+ storage: Storage;
7
+ fetch: (url: string, init?: RequestInit) => Promise<Response>;
8
+ readFile: (url: string) => Promise<Buffer>;
9
+ });
10
+ fetch({ hash, url, init }: FontFileData): Promise<Buffer>;
11
+ }
@@ -1,36 +1,42 @@
1
1
  import { isAbsolute } from "node:path";
2
2
  import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
3
3
  import { cache } from "../utils.js";
4
- function createCachedFontFetcher({
5
- storage,
6
- fetch,
7
- readFile
8
- }) {
9
- return {
10
- async fetch({ hash, url, init }) {
11
- return await cache(storage, hash, async () => {
12
- try {
13
- if (isAbsolute(url)) {
14
- return await readFile(url);
15
- }
16
- const response = await fetch(url, init ?? void 0);
17
- if (!response.ok) {
18
- throw new Error(`Response was not successful, received status code ${response.status}`);
19
- }
20
- return Buffer.from(await response.arrayBuffer());
21
- } catch (cause) {
22
- throw new AstroError(
23
- {
24
- ...AstroErrorData.CannotFetchFontFile,
25
- message: AstroErrorData.CannotFetchFontFile.message(url)
26
- },
27
- { cause }
28
- );
4
+ class CachedFontFetcher {
5
+ #storage;
6
+ #fetch;
7
+ #readFile;
8
+ constructor({
9
+ storage,
10
+ fetch,
11
+ readFile
12
+ }) {
13
+ this.#storage = storage;
14
+ this.#fetch = fetch;
15
+ this.#readFile = readFile;
16
+ }
17
+ async fetch({ hash, url, init }) {
18
+ return await cache(this.#storage, hash, async () => {
19
+ try {
20
+ if (isAbsolute(url)) {
21
+ return await this.#readFile(url);
29
22
  }
30
- });
31
- }
32
- };
23
+ const response = await this.#fetch(url, init ?? void 0);
24
+ if (!response.ok) {
25
+ throw new Error(`Response was not successful, received status code ${response.status}`);
26
+ }
27
+ return Buffer.from(await response.arrayBuffer());
28
+ } catch (cause) {
29
+ throw new AstroError(
30
+ {
31
+ ...AstroErrorData.CannotFetchFontFile,
32
+ message: AstroErrorData.CannotFetchFontFile.message(url)
33
+ },
34
+ { cause }
35
+ );
36
+ }
37
+ });
38
+ }
33
39
  }
34
40
  export {
35
- createCachedFontFetcher
41
+ CachedFontFetcher
36
42
  };
@@ -1,5 +1,18 @@
1
- import type { CssRenderer, FontFetcher, FontMetricsResolver } from '../definitions.js';
2
- export declare function createCapsizeFontMetricsResolver({ fontFetcher, cssRenderer, }: {
3
- fontFetcher: FontFetcher;
4
- cssRenderer: CssRenderer;
5
- }): FontMetricsResolver;
1
+ import type { CollectedFontForMetrics } from '../core/optimize-fallbacks.js';
2
+ import type { CssProperties, CssRenderer, FontFetcher, FontMetricsResolver } from '../definitions.js';
3
+ import type { FontFaceMetrics } from '../types.js';
4
+ export declare class CapsizeFontMetricsResolver implements FontMetricsResolver {
5
+ #private;
6
+ constructor({ fontFetcher, cssRenderer, }: {
7
+ fontFetcher: FontFetcher;
8
+ cssRenderer: CssRenderer;
9
+ });
10
+ getMetrics(name: string, font: CollectedFontForMetrics): Promise<FontFaceMetrics>;
11
+ generateFontFace({ metrics, fallbackMetrics, name: fallbackName, font: fallbackFontName, properties, }: {
12
+ metrics: FontFaceMetrics;
13
+ fallbackMetrics: FontFaceMetrics;
14
+ name: string;
15
+ font: string;
16
+ properties: CssProperties;
17
+ }): string;
18
+ }
@@ -21,46 +21,51 @@ function round(value) {
21
21
  function toPercentString(value) {
22
22
  return `${round(value * 100)}%`;
23
23
  }
24
- function createCapsizeFontMetricsResolver({
25
- fontFetcher,
26
- cssRenderer
27
- }) {
28
- const cache = {};
29
- return {
30
- async getMetrics(name, input) {
31
- cache[name] ??= filterRequiredMetrics(await fromBuffer(await fontFetcher.fetch(input)));
32
- return cache[name];
33
- },
34
- // Adapted from Capsize
35
- // Source: https://github.com/seek-oss/capsize/blob/b752693428b45994442433f7e3476ca4e3e3c507/packages/core/src/createFontStack.ts
36
- generateFontFace({
37
- metrics,
38
- fallbackMetrics,
39
- name: fallbackName,
40
- font: fallbackFontName,
41
- properties
42
- }) {
43
- const preferredFontXAvgRatio = metrics.xWidthAvg / metrics.unitsPerEm;
44
- const fallbackFontXAvgRatio = fallbackMetrics.xWidthAvg / fallbackMetrics.unitsPerEm;
45
- const sizeAdjust = preferredFontXAvgRatio && fallbackFontXAvgRatio ? preferredFontXAvgRatio / fallbackFontXAvgRatio : 1;
46
- const adjustedEmSquare = metrics.unitsPerEm * sizeAdjust;
47
- const ascentOverride = metrics.ascent / adjustedEmSquare;
48
- const descentOverride = Math.abs(metrics.descent) / adjustedEmSquare;
49
- const lineGapOverride = metrics.lineGap / adjustedEmSquare;
50
- const fallbackAscentOverride = fallbackMetrics.ascent / adjustedEmSquare;
51
- const fallbackDescentOverride = Math.abs(fallbackMetrics.descent) / adjustedEmSquare;
52
- const fallbackLineGapOverride = fallbackMetrics.lineGap / adjustedEmSquare;
53
- return cssRenderer.generateFontFace(fallbackName, {
54
- ...properties,
55
- src: renderFontSrc([{ name: fallbackFontName }]),
56
- "size-adjust": sizeAdjust && sizeAdjust !== 1 ? toPercentString(sizeAdjust) : void 0,
57
- "ascent-override": ascentOverride && ascentOverride !== fallbackAscentOverride ? toPercentString(ascentOverride) : void 0,
58
- "descent-override": descentOverride && descentOverride !== fallbackDescentOverride ? toPercentString(descentOverride) : void 0,
59
- "line-gap-override": lineGapOverride !== fallbackLineGapOverride ? toPercentString(lineGapOverride) : void 0
60
- });
61
- }
62
- };
24
+ class CapsizeFontMetricsResolver {
25
+ #cache = {};
26
+ #fontFetcher;
27
+ #cssRenderer;
28
+ constructor({
29
+ fontFetcher,
30
+ cssRenderer
31
+ }) {
32
+ this.#fontFetcher = fontFetcher;
33
+ this.#cssRenderer = cssRenderer;
34
+ }
35
+ async getMetrics(name, font) {
36
+ return this.#cache[name] ??= filterRequiredMetrics(
37
+ await fromBuffer(await this.#fontFetcher.fetch(font))
38
+ );
39
+ }
40
+ // Adapted from Capsize
41
+ // Source: https://github.com/seek-oss/capsize/blob/b752693428b45994442433f7e3476ca4e3e3c507/packages/core/src/createFontStack.ts
42
+ generateFontFace({
43
+ metrics,
44
+ fallbackMetrics,
45
+ name: fallbackName,
46
+ font: fallbackFontName,
47
+ properties
48
+ }) {
49
+ const preferredFontXAvgRatio = metrics.xWidthAvg / metrics.unitsPerEm;
50
+ const fallbackFontXAvgRatio = fallbackMetrics.xWidthAvg / fallbackMetrics.unitsPerEm;
51
+ const sizeAdjust = preferredFontXAvgRatio && fallbackFontXAvgRatio ? preferredFontXAvgRatio / fallbackFontXAvgRatio : 1;
52
+ const adjustedEmSquare = metrics.unitsPerEm * sizeAdjust;
53
+ const ascentOverride = metrics.ascent / adjustedEmSquare;
54
+ const descentOverride = Math.abs(metrics.descent) / adjustedEmSquare;
55
+ const lineGapOverride = metrics.lineGap / adjustedEmSquare;
56
+ const fallbackAscentOverride = fallbackMetrics.ascent / adjustedEmSquare;
57
+ const fallbackDescentOverride = Math.abs(fallbackMetrics.descent) / adjustedEmSquare;
58
+ const fallbackLineGapOverride = fallbackMetrics.lineGap / adjustedEmSquare;
59
+ return this.#cssRenderer.generateFontFace(fallbackName, {
60
+ ...properties,
61
+ src: renderFontSrc([{ name: fallbackFontName }]),
62
+ "size-adjust": sizeAdjust && sizeAdjust !== 1 ? toPercentString(sizeAdjust) : void 0,
63
+ "ascent-override": ascentOverride && ascentOverride !== fallbackAscentOverride ? toPercentString(ascentOverride) : void 0,
64
+ "descent-override": descentOverride && descentOverride !== fallbackDescentOverride ? toPercentString(descentOverride) : void 0,
65
+ "line-gap-override": lineGapOverride !== fallbackLineGapOverride ? toPercentString(lineGapOverride) : void 0
66
+ });
67
+ }
63
68
  }
64
69
  export {
65
- createCapsizeFontMetricsResolver
70
+ CapsizeFontMetricsResolver
66
71
  };
@@ -1,3 +1,10 @@
1
- import type { DataCollector } from '../definitions.js';
2
- import type { CreateUrlProxyParams } from '../types.js';
3
- export declare function createDataCollector({ hasUrl, saveUrl, savePreload, saveFontData, }: Pick<CreateUrlProxyParams, 'hasUrl' | 'saveUrl' | 'savePreload' | 'saveFontData'>): DataCollector;
1
+ import type { DataCollector, ProxyData } from '../definitions.js';
2
+ import type { CreateUrlProxyParams, FontFileData, PreloadData } from '../types.js';
3
+ export declare class RealDataCollector implements DataCollector {
4
+ #private;
5
+ constructor({ hasUrl, saveUrl, savePreload, saveFontData, }: Pick<CreateUrlProxyParams, 'hasUrl' | 'saveUrl' | 'savePreload' | 'saveFontData'>);
6
+ collect({ hash, url, init, preload, data, }: FontFileData & {
7
+ data: ProxyData;
8
+ preload: PreloadData | null;
9
+ }): void;
10
+ }
@@ -1,21 +1,35 @@
1
- function createDataCollector({
2
- hasUrl,
3
- saveUrl,
4
- savePreload,
5
- saveFontData
6
- }) {
7
- return {
8
- collect({ hash, url, init, preload, data }) {
9
- if (!hasUrl(hash)) {
10
- saveUrl({ hash, url, init });
11
- if (preload) {
12
- savePreload(preload);
13
- }
1
+ class RealDataCollector {
2
+ #hasUrl;
3
+ #saveUrl;
4
+ #savePreload;
5
+ #saveFontData;
6
+ constructor({
7
+ hasUrl,
8
+ saveUrl,
9
+ savePreload,
10
+ saveFontData
11
+ }) {
12
+ this.#hasUrl = hasUrl;
13
+ this.#saveUrl = saveUrl;
14
+ this.#savePreload = savePreload;
15
+ this.#saveFontData = saveFontData;
16
+ }
17
+ collect({
18
+ hash,
19
+ url,
20
+ init,
21
+ preload,
22
+ data
23
+ }) {
24
+ if (!this.#hasUrl(hash)) {
25
+ this.#saveUrl({ hash, url, init });
26
+ if (preload) {
27
+ this.#savePreload(preload);
14
28
  }
15
- saveFontData({ hash, url, data, init });
16
29
  }
17
- };
30
+ this.#saveFontData({ hash, url, data, init });
31
+ }
18
32
  }
19
33
  export {
20
- createDataCollector
34
+ RealDataCollector
21
35
  };
@@ -1,5 +1,9 @@
1
1
  import type { ViteDevServer } from 'vite';
2
2
  import type { RemoteFontProviderModResolver } from '../definitions.js';
3
- export declare function createDevServerRemoteFontProviderModResolver({ server, }: {
4
- server: ViteDevServer;
5
- }): RemoteFontProviderModResolver;
3
+ export declare class DevServerRemoteFontProviderModResolver implements RemoteFontProviderModResolver {
4
+ #private;
5
+ constructor({ server, }: {
6
+ server: ViteDevServer;
7
+ });
8
+ resolve(id: string): Promise<any>;
9
+ }
@@ -1,12 +1,14 @@
1
- function createDevServerRemoteFontProviderModResolver({
2
- server
3
- }) {
4
- return {
5
- resolve(id) {
6
- return server.ssrLoadModule(id);
7
- }
8
- };
1
+ class DevServerRemoteFontProviderModResolver {
2
+ #server;
3
+ constructor({
4
+ server
5
+ }) {
6
+ this.#server = server;
7
+ }
8
+ async resolve(id) {
9
+ return await this.#server.ssrLoadModule(id);
10
+ }
9
11
  }
10
12
  export {
11
- createDevServerRemoteFontProviderModResolver
13
+ DevServerRemoteFontProviderModResolver
12
14
  };
@@ -1,5 +1,15 @@
1
- import type { Hasher, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
2
- export declare function createDevUrlProxyHashResolver({ hasher, contentResolver, }: {
3
- hasher: Hasher;
4
- contentResolver: UrlProxyContentResolver;
5
- }): UrlProxyHashResolver;
1
+ import type { Hasher, ProxyData, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
2
+ import type { FontType } from '../types.js';
3
+ export declare class DevUrlProxyHashResolver implements UrlProxyHashResolver {
4
+ #private;
5
+ constructor({ hasher, contentResolver, }: {
6
+ hasher: Hasher;
7
+ contentResolver: UrlProxyContentResolver;
8
+ });
9
+ resolve({ cssVariable, data, originalUrl, type, }: {
10
+ originalUrl: string;
11
+ type: FontType;
12
+ cssVariable: string;
13
+ data: ProxyData;
14
+ }): string;
15
+ }
@@ -1,28 +1,37 @@
1
- function createDevUrlProxyHashResolver({
2
- hasher,
3
- contentResolver
4
- }) {
5
- return {
6
- resolve({ cssVariable, data, originalUrl, type }) {
7
- return [
8
- cssVariable.slice(2),
9
- formatWeight(data.weight),
10
- data.style,
11
- data.subset,
12
- `${hasher.hashString(contentResolver.resolve(originalUrl))}.${type}`
13
- ].filter(Boolean).join("-");
1
+ class DevUrlProxyHashResolver {
2
+ #hasher;
3
+ #contentResolver;
4
+ constructor({
5
+ hasher,
6
+ contentResolver
7
+ }) {
8
+ this.#hasher = hasher;
9
+ this.#contentResolver = contentResolver;
10
+ }
11
+ #formatWeight(weight) {
12
+ if (Array.isArray(weight)) {
13
+ return weight.join("-");
14
14
  }
15
- };
16
- }
17
- function formatWeight(weight) {
18
- if (Array.isArray(weight)) {
19
- return weight.join("-");
15
+ if (typeof weight === "number") {
16
+ return weight.toString();
17
+ }
18
+ return weight?.replace(/\s+/g, "-");
20
19
  }
21
- if (typeof weight === "number") {
22
- return weight.toString();
20
+ resolve({
21
+ cssVariable,
22
+ data,
23
+ originalUrl,
24
+ type
25
+ }) {
26
+ return [
27
+ cssVariable.slice(2),
28
+ this.#formatWeight(data.weight),
29
+ data.style,
30
+ data.subset,
31
+ `${this.#hasher.hashString(this.#contentResolver.resolve(originalUrl))}.${type}`
32
+ ].filter(Boolean).join("-");
23
33
  }
24
- return weight?.replace(/\s+/g, "-");
25
34
  }
26
35
  export {
27
- createDevUrlProxyHashResolver
36
+ DevUrlProxyHashResolver
28
37
  };
@@ -1,5 +1,10 @@
1
1
  import type { UrlResolver } from '../definitions.js';
2
- export declare function createDevUrlResolver({ base, searchParams, }: {
3
- base: string;
4
- searchParams: URLSearchParams;
5
- }): UrlResolver;
2
+ export declare class DevUrlResolver implements UrlResolver {
3
+ #private;
4
+ constructor({ base, searchParams, }: {
5
+ base: string;
6
+ searchParams: URLSearchParams;
7
+ });
8
+ resolve(hash: string): string;
9
+ get cspResources(): Array<string>;
10
+ }