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.
- package/dist/actions/runtime/server.d.ts +5 -4
- package/dist/actions/runtime/server.js +0 -1
- package/dist/assets/fonts/definitions.d.ts +8 -3
- package/dist/assets/fonts/infra/build-remote-font-provider-mod-resolver.d.ts +3 -1
- package/dist/assets/fonts/infra/build-remote-font-provider-mod-resolver.js +5 -7
- package/dist/assets/fonts/infra/build-url-proxy-hash-resolver.d.ts +15 -5
- package/dist/assets/fonts/infra/build-url-proxy-hash-resolver.js +17 -10
- package/dist/assets/fonts/infra/build-url-resolver.d.ts +10 -5
- package/dist/assets/fonts/infra/build-url-resolver.js +33 -27
- package/dist/assets/fonts/infra/cached-font-fetcher.d.ts +11 -7
- package/dist/assets/fonts/infra/cached-font-fetcher.js +35 -29
- package/dist/assets/fonts/infra/capsize-font-metrics-resolver.d.ts +18 -5
- package/dist/assets/fonts/infra/capsize-font-metrics-resolver.js +45 -40
- package/dist/assets/fonts/infra/data-collector.d.ts +10 -3
- package/dist/assets/fonts/infra/data-collector.js +30 -16
- package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.d.ts +7 -3
- package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.js +11 -9
- package/dist/assets/fonts/infra/dev-url-proxy-hash-resolver.d.ts +15 -5
- package/dist/assets/fonts/infra/dev-url-proxy-hash-resolver.js +31 -22
- package/dist/assets/fonts/infra/dev-url-resolver.d.ts +9 -4
- package/dist/assets/fonts/infra/dev-url-resolver.js +24 -20
- package/dist/assets/fonts/infra/font-type-extractor.d.ts +4 -1
- package/dist/assets/fonts/infra/font-type-extractor.js +14 -16
- package/dist/assets/fonts/infra/fontace-font-file-reader.d.ts +10 -1
- package/dist/assets/fonts/infra/fontace-font-file-reader.js +18 -20
- package/dist/assets/fonts/infra/levenshtein-string-matcher.d.ts +4 -1
- package/dist/assets/fonts/infra/levenshtein-string-matcher.js +119 -121
- package/dist/assets/fonts/infra/local-url-proxy-content-resolver.d.ts +4 -0
- package/dist/assets/fonts/infra/local-url-proxy-content-resolver.js +14 -0
- package/dist/assets/fonts/infra/minifiable-css-renderer.d.ts +8 -3
- package/dist/assets/fonts/infra/minifiable-css-renderer.js +12 -10
- package/dist/assets/fonts/infra/remote-font-provider-resolver.d.ts +9 -4
- package/dist/assets/fonts/infra/remote-font-provider-resolver.js +42 -38
- package/dist/assets/fonts/infra/remote-url-proxy-content-resolver.d.ts +4 -0
- package/dist/assets/fonts/infra/remote-url-proxy-content-resolver.js +9 -0
- package/dist/assets/fonts/infra/require-local-provider-url-resolver.d.ts +8 -4
- package/dist/assets/fonts/infra/require-local-provider-url-resolver.js +17 -12
- package/dist/assets/fonts/infra/system-fallbacks-provider.d.ts +5 -10
- package/dist/assets/fonts/infra/system-fallbacks-provider.js +8 -11
- package/dist/assets/fonts/infra/unstorage-fs-storage.d.ts +11 -0
- package/dist/assets/fonts/infra/unstorage-fs-storage.js +26 -0
- package/dist/assets/fonts/infra/url-proxy.d.ts +16 -7
- package/dist/assets/fonts/infra/url-proxy.js +46 -27
- package/dist/assets/fonts/infra/xxhash-hasher.d.ts +6 -1
- package/dist/assets/fonts/infra/xxhash-hasher.js +13 -9
- package/dist/assets/fonts/orchestrate.d.ts +1 -2
- package/dist/assets/fonts/utils.d.ts +1 -2
- package/dist/assets/fonts/vite-plugin-fonts.js +43 -46
- package/dist/cli/infra/build-time-astro-version-provider.js +1 -1
- package/dist/content/content-layer.js +3 -3
- package/dist/core/app/index.js +8 -2
- package/dist/core/constants.js +1 -1
- package/dist/core/csp/runtime.d.ts +11 -0
- package/dist/core/csp/runtime.js +35 -0
- package/dist/core/dev/dev.js +1 -1
- package/dist/core/messages.js +2 -2
- package/dist/core/render-context.js +25 -5
- package/dist/core/util/pathname.d.ts +10 -0
- package/dist/core/util/pathname.js +17 -0
- package/dist/vite-plugin-astro-server/request.js +9 -2
- package/package.json +2 -2
- package/dist/assets/fonts/infra/fs-storage.d.ts +0 -4
- package/dist/assets/fonts/infra/fs-storage.js +0 -14
- package/dist/assets/fonts/infra/url-proxy-content-resolver.d.ts +0 -3
- 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
|
-
|
|
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
|
-
[
|
|
17
|
-
} ? T[
|
|
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
|
-
|
|
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
|
};
|
|
@@ -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
|
-
|
|
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
|
|
2
|
+
export declare class BuildRemoteFontProviderModResolver implements RemoteFontProviderModResolver {
|
|
3
|
+
resolve(id: string): Promise<any>;
|
|
4
|
+
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
};
|
|
1
|
+
class BuildRemoteFontProviderModResolver {
|
|
2
|
+
async resolve(id) {
|
|
3
|
+
return await import(id);
|
|
4
|
+
}
|
|
7
5
|
}
|
|
8
6
|
export {
|
|
9
|
-
|
|
7
|
+
BuildRemoteFontProviderModResolver
|
|
10
8
|
};
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import type { Hasher, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
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
|
-
|
|
2
|
-
hasher
|
|
3
|
-
contentResolver
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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
|
|
4
|
-
|
|
5
|
-
assetsPrefix:
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
39
|
+
BuildUrlResolver
|
|
34
40
|
};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import type { Storage } from '
|
|
2
|
-
import type {
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
5
|
-
storage
|
|
6
|
-
fetch
|
|
7
|
-
readFile
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
41
|
+
CachedFontFetcher
|
|
36
42
|
};
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2
|
-
hasUrl
|
|
3
|
-
saveUrl
|
|
4
|
-
savePreload
|
|
5
|
-
saveFontData
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
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
|
|
4
|
-
|
|
5
|
-
}
|
|
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
|
-
|
|
2
|
-
server
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
13
|
+
DevServerRemoteFontProviderModResolver
|
|
12
14
|
};
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import type { Hasher, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
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
|
-
|
|
2
|
-
hasher
|
|
3
|
-
contentResolver
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
return weight.join("-");
|
|
15
|
+
if (typeof weight === "number") {
|
|
16
|
+
return weight.toString();
|
|
17
|
+
}
|
|
18
|
+
return weight?.replace(/\s+/g, "-");
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
36
|
+
DevUrlProxyHashResolver
|
|
28
37
|
};
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { UrlResolver } from '../definitions.js';
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
searchParams:
|
|
5
|
-
|
|
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
|
+
}
|