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
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { joinPaths, prependForwardSlash } from "../../../core/path.js";
|
|
2
2
|
import { createPlaceholderURL, stringifyPlaceholderURL } from "../../utils/url.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
3
|
+
class DevUrlResolver {
|
|
4
|
+
#resolved = false;
|
|
5
|
+
#base;
|
|
6
|
+
#searchParams;
|
|
7
|
+
constructor({
|
|
8
|
+
base,
|
|
9
|
+
searchParams
|
|
10
|
+
}) {
|
|
11
|
+
this.#base = base;
|
|
12
|
+
this.#searchParams = searchParams;
|
|
13
|
+
}
|
|
14
|
+
resolve(hash) {
|
|
15
|
+
this.#resolved ||= true;
|
|
16
|
+
const urlPath = prependForwardSlash(joinPaths(this.#base, hash));
|
|
17
|
+
const url = createPlaceholderURL(urlPath);
|
|
18
|
+
this.#searchParams.forEach((value, key) => {
|
|
19
|
+
url.searchParams.set(key, value);
|
|
20
|
+
});
|
|
21
|
+
return stringifyPlaceholderURL(url);
|
|
22
|
+
}
|
|
23
|
+
get cspResources() {
|
|
24
|
+
return this.#resolved ? ["'self'"] : [];
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
export {
|
|
24
|
-
|
|
28
|
+
DevUrlResolver
|
|
25
29
|
};
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { FontTypeExtractor } from '../definitions.js';
|
|
2
|
-
|
|
2
|
+
import type { FontType } from '../types.js';
|
|
3
|
+
export declare class RealFontTypeExtractor implements FontTypeExtractor {
|
|
4
|
+
extract(url: string): FontType;
|
|
5
|
+
}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import { extname } from "node:path";
|
|
2
2
|
import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
|
|
3
3
|
import { isFontType } from "../utils.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
return extension;
|
|
4
|
+
class RealFontTypeExtractor {
|
|
5
|
+
extract(url) {
|
|
6
|
+
const extension = extname(url).slice(1);
|
|
7
|
+
if (!isFontType(extension)) {
|
|
8
|
+
throw new AstroError(
|
|
9
|
+
{
|
|
10
|
+
...AstroErrorData.CannotExtractFontType,
|
|
11
|
+
message: AstroErrorData.CannotExtractFontType.message(url)
|
|
12
|
+
},
|
|
13
|
+
{ cause: `Unexpected extension, got "${extension}"` }
|
|
14
|
+
);
|
|
18
15
|
}
|
|
19
|
-
|
|
16
|
+
return extension;
|
|
17
|
+
}
|
|
20
18
|
}
|
|
21
19
|
export {
|
|
22
|
-
|
|
20
|
+
RealFontTypeExtractor
|
|
23
21
|
};
|
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
import type { FontFileReader } from '../definitions.js';
|
|
2
|
-
|
|
2
|
+
import type { Style } from '../types.js';
|
|
3
|
+
export declare class FontaceFontFileReader implements FontFileReader {
|
|
4
|
+
extract({ family, url }: {
|
|
5
|
+
family: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}): {
|
|
8
|
+
weight: string;
|
|
9
|
+
style: Style;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { fontace } from "fontace";
|
|
3
3
|
import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
21
|
-
}
|
|
4
|
+
class FontaceFontFileReader {
|
|
5
|
+
extract({ family, url }) {
|
|
6
|
+
try {
|
|
7
|
+
const data = fontace(readFileSync(url));
|
|
8
|
+
return {
|
|
9
|
+
weight: data.weight,
|
|
10
|
+
style: data.style
|
|
11
|
+
};
|
|
12
|
+
} catch (cause) {
|
|
13
|
+
throw new AstroError(
|
|
14
|
+
{
|
|
15
|
+
...AstroErrorData.CannotDetermineWeightAndStyleFromFontFile,
|
|
16
|
+
message: AstroErrorData.CannotDetermineWeightAndStyleFromFontFile.message(family, url)
|
|
17
|
+
},
|
|
18
|
+
{ cause }
|
|
19
|
+
);
|
|
22
20
|
}
|
|
23
|
-
}
|
|
21
|
+
}
|
|
24
22
|
}
|
|
25
23
|
export {
|
|
26
|
-
|
|
24
|
+
FontaceFontFileReader
|
|
27
25
|
};
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { StringMatcher } from '../definitions.js';
|
|
2
|
-
export declare
|
|
2
|
+
export declare class LevenshteinStringMatcher implements StringMatcher {
|
|
3
|
+
#private;
|
|
4
|
+
getClosestMatch(target: string, candidates: Array<string>): string;
|
|
5
|
+
}
|
|
@@ -1,65 +1,99 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
for (i = 0; i < m; i++) {
|
|
14
|
-
let eq = peq[b.charCodeAt(i)];
|
|
15
|
-
const xv = eq | mv;
|
|
16
|
-
eq |= (eq & pv) + pv ^ pv;
|
|
17
|
-
mv |= ~(eq | pv);
|
|
18
|
-
pv &= eq;
|
|
19
|
-
if (mv & lst) {
|
|
20
|
-
sc++;
|
|
1
|
+
class LevenshteinStringMatcher {
|
|
2
|
+
#peq = new Uint32Array(65536);
|
|
3
|
+
#myers_32(a, b) {
|
|
4
|
+
const n = a.length;
|
|
5
|
+
const m = b.length;
|
|
6
|
+
const lst = 1 << n - 1;
|
|
7
|
+
let pv = -1;
|
|
8
|
+
let mv = 0;
|
|
9
|
+
let sc = n;
|
|
10
|
+
let i = n;
|
|
11
|
+
while (i--) {
|
|
12
|
+
this.#peq[a.charCodeAt(i)] |= 1 << i;
|
|
21
13
|
}
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
for (i = 0; i < m; i++) {
|
|
15
|
+
let eq = this.#peq[b.charCodeAt(i)];
|
|
16
|
+
const xv = eq | mv;
|
|
17
|
+
eq |= (eq & pv) + pv ^ pv;
|
|
18
|
+
mv |= ~(eq | pv);
|
|
19
|
+
pv &= eq;
|
|
20
|
+
if (mv & lst) {
|
|
21
|
+
sc++;
|
|
22
|
+
}
|
|
23
|
+
if (pv & lst) {
|
|
24
|
+
sc--;
|
|
25
|
+
}
|
|
26
|
+
mv = mv << 1 | 1;
|
|
27
|
+
pv = pv << 1 | ~(xv | mv);
|
|
28
|
+
mv &= xv;
|
|
24
29
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
while (i--) {
|
|
31
|
-
peq[a.charCodeAt(i)] = 0;
|
|
32
|
-
}
|
|
33
|
-
return sc;
|
|
34
|
-
};
|
|
35
|
-
const myers_x = (b, a) => {
|
|
36
|
-
const n = a.length;
|
|
37
|
-
const m = b.length;
|
|
38
|
-
const mhc = [];
|
|
39
|
-
const phc = [];
|
|
40
|
-
const hsize = Math.ceil(n / 32);
|
|
41
|
-
const vsize = Math.ceil(m / 32);
|
|
42
|
-
for (let i = 0; i < hsize; i++) {
|
|
43
|
-
phc[i] = -1;
|
|
44
|
-
mhc[i] = 0;
|
|
30
|
+
i = n;
|
|
31
|
+
while (i--) {
|
|
32
|
+
this.#peq[a.charCodeAt(i)] = 0;
|
|
33
|
+
}
|
|
34
|
+
return sc;
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
36
|
+
#myers_x(b, a) {
|
|
37
|
+
const n = a.length;
|
|
38
|
+
const m = b.length;
|
|
39
|
+
const mhc = [];
|
|
40
|
+
const phc = [];
|
|
41
|
+
const hsize = Math.ceil(n / 32);
|
|
42
|
+
const vsize = Math.ceil(m / 32);
|
|
43
|
+
for (let i = 0; i < hsize; i++) {
|
|
44
|
+
phc[i] = -1;
|
|
45
|
+
mhc[i] = 0;
|
|
46
|
+
}
|
|
47
|
+
let j = 0;
|
|
48
|
+
for (; j < vsize - 1; j++) {
|
|
49
|
+
let mv2 = 0;
|
|
50
|
+
let pv2 = -1;
|
|
51
|
+
const start2 = j * 32;
|
|
52
|
+
const vlen2 = Math.min(32, m) + start2;
|
|
53
|
+
for (let k = start2; k < vlen2; k++) {
|
|
54
|
+
this.#peq[b.charCodeAt(k)] |= 1 << k;
|
|
55
|
+
}
|
|
56
|
+
for (let i = 0; i < n; i++) {
|
|
57
|
+
const eq = this.#peq[a.charCodeAt(i)];
|
|
58
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
59
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
60
|
+
const xv = eq | mv2;
|
|
61
|
+
const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
|
|
62
|
+
let ph = mv2 | ~(xh | pv2);
|
|
63
|
+
let mh = pv2 & xh;
|
|
64
|
+
if (ph >>> 31 ^ pb) {
|
|
65
|
+
phc[i / 32 | 0] ^= 1 << i;
|
|
66
|
+
}
|
|
67
|
+
if (mh >>> 31 ^ mb) {
|
|
68
|
+
mhc[i / 32 | 0] ^= 1 << i;
|
|
69
|
+
}
|
|
70
|
+
ph = ph << 1 | pb;
|
|
71
|
+
mh = mh << 1 | mb;
|
|
72
|
+
pv2 = mh | ~(xv | ph);
|
|
73
|
+
mv2 = ph & xv;
|
|
74
|
+
}
|
|
75
|
+
for (let k = start2; k < vlen2; k++) {
|
|
76
|
+
this.#peq[b.charCodeAt(k)] = 0;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
let mv = 0;
|
|
80
|
+
let pv = -1;
|
|
81
|
+
const start = j * 32;
|
|
82
|
+
const vlen = Math.min(32, m - start) + start;
|
|
83
|
+
for (let k = start; k < vlen; k++) {
|
|
84
|
+
this.#peq[b.charCodeAt(k)] |= 1 << k;
|
|
54
85
|
}
|
|
86
|
+
let score = m;
|
|
55
87
|
for (let i = 0; i < n; i++) {
|
|
56
|
-
const eq = peq[a.charCodeAt(i)];
|
|
88
|
+
const eq = this.#peq[a.charCodeAt(i)];
|
|
57
89
|
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
58
90
|
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
59
|
-
const xv = eq |
|
|
60
|
-
const xh = ((eq | mb) &
|
|
61
|
-
let ph =
|
|
62
|
-
let mh =
|
|
91
|
+
const xv = eq | mv;
|
|
92
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
93
|
+
let ph = mv | ~(xh | pv);
|
|
94
|
+
let mh = pv & xh;
|
|
95
|
+
score += ph >>> m - 1 & 1;
|
|
96
|
+
score -= mh >>> m - 1 & 1;
|
|
63
97
|
if (ph >>> 31 ^ pb) {
|
|
64
98
|
phc[i / 32 | 0] ^= 1 << i;
|
|
65
99
|
}
|
|
@@ -68,80 +102,44 @@ const myers_x = (b, a) => {
|
|
|
68
102
|
}
|
|
69
103
|
ph = ph << 1 | pb;
|
|
70
104
|
mh = mh << 1 | mb;
|
|
71
|
-
|
|
72
|
-
|
|
105
|
+
pv = mh | ~(xv | ph);
|
|
106
|
+
mv = ph & xv;
|
|
73
107
|
}
|
|
74
|
-
for (let k =
|
|
75
|
-
peq[b.charCodeAt(k)] = 0;
|
|
108
|
+
for (let k = start; k < vlen; k++) {
|
|
109
|
+
this.#peq[b.charCodeAt(k)] = 0;
|
|
76
110
|
}
|
|
111
|
+
return score;
|
|
77
112
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
peq[b.charCodeAt(k)] |= 1 << k;
|
|
84
|
-
}
|
|
85
|
-
let score = m;
|
|
86
|
-
for (let i = 0; i < n; i++) {
|
|
87
|
-
const eq = peq[a.charCodeAt(i)];
|
|
88
|
-
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
89
|
-
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
90
|
-
const xv = eq | mv;
|
|
91
|
-
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
92
|
-
let ph = mv | ~(xh | pv);
|
|
93
|
-
let mh = pv & xh;
|
|
94
|
-
score += ph >>> m - 1 & 1;
|
|
95
|
-
score -= mh >>> m - 1 & 1;
|
|
96
|
-
if (ph >>> 31 ^ pb) {
|
|
97
|
-
phc[i / 32 | 0] ^= 1 << i;
|
|
113
|
+
#distance(a, b) {
|
|
114
|
+
if (a.length < b.length) {
|
|
115
|
+
const tmp = b;
|
|
116
|
+
b = a;
|
|
117
|
+
a = tmp;
|
|
98
118
|
}
|
|
99
|
-
if (
|
|
100
|
-
|
|
119
|
+
if (b.length === 0) {
|
|
120
|
+
return a.length;
|
|
101
121
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
pv = mh | ~(xv | ph);
|
|
105
|
-
mv = ph & xv;
|
|
106
|
-
}
|
|
107
|
-
for (let k = start; k < vlen; k++) {
|
|
108
|
-
peq[b.charCodeAt(k)] = 0;
|
|
109
|
-
}
|
|
110
|
-
return score;
|
|
111
|
-
};
|
|
112
|
-
const distance = (a, b) => {
|
|
113
|
-
if (a.length < b.length) {
|
|
114
|
-
const tmp = b;
|
|
115
|
-
b = a;
|
|
116
|
-
a = tmp;
|
|
117
|
-
}
|
|
118
|
-
if (b.length === 0) {
|
|
119
|
-
return a.length;
|
|
120
|
-
}
|
|
121
|
-
if (a.length <= 32) {
|
|
122
|
-
return myers_32(a, b);
|
|
123
|
-
}
|
|
124
|
-
return myers_x(a, b);
|
|
125
|
-
};
|
|
126
|
-
const closest = (str, arr) => {
|
|
127
|
-
let min_distance = Infinity;
|
|
128
|
-
let min_index = 0;
|
|
129
|
-
for (let i = 0; i < arr.length; i++) {
|
|
130
|
-
const dist = distance(str, arr[i]);
|
|
131
|
-
if (dist < min_distance) {
|
|
132
|
-
min_distance = dist;
|
|
133
|
-
min_index = i;
|
|
122
|
+
if (a.length <= 32) {
|
|
123
|
+
return this.#myers_32(a, b);
|
|
134
124
|
}
|
|
125
|
+
return this.#myers_x(a, b);
|
|
135
126
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
127
|
+
#closest(str, arr) {
|
|
128
|
+
let min_distance = Infinity;
|
|
129
|
+
let min_index = 0;
|
|
130
|
+
for (let i = 0; i < arr.length; i++) {
|
|
131
|
+
const dist = this.#distance(str, arr[i]);
|
|
132
|
+
if (dist < min_distance) {
|
|
133
|
+
min_distance = dist;
|
|
134
|
+
min_index = i;
|
|
135
|
+
}
|
|
142
136
|
}
|
|
143
|
-
|
|
137
|
+
return arr[min_index];
|
|
138
|
+
}
|
|
139
|
+
getClosestMatch(target, candidates) {
|
|
140
|
+
return this.#closest(target, candidates);
|
|
141
|
+
}
|
|
144
142
|
}
|
|
145
143
|
export {
|
|
146
|
-
|
|
144
|
+
LevenshteinStringMatcher
|
|
147
145
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
|
|
3
|
+
class LocalUrlProxyContentResolver {
|
|
4
|
+
resolve(url) {
|
|
5
|
+
try {
|
|
6
|
+
return url + readFileSync(url, "utf-8");
|
|
7
|
+
} catch (cause) {
|
|
8
|
+
throw new AstroError(AstroErrorData.UnknownFilesystemError, { cause });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
LocalUrlProxyContentResolver
|
|
14
|
+
};
|
|
@@ -4,6 +4,11 @@ export declare function renderCssVariable(key: string, values: Array<string>, mi
|
|
|
4
4
|
export declare function withFamily(family: string, properties: CssProperties): CssProperties;
|
|
5
5
|
/** If the value contains spaces (which would be incorrectly interpreted), we wrap it in quotes. */
|
|
6
6
|
export declare function handleValueWithSpaces(value: string): string;
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
}
|
|
7
|
+
export declare class MinifiableCssRenderer implements CssRenderer {
|
|
8
|
+
#private;
|
|
9
|
+
constructor({ minify }: {
|
|
10
|
+
minify: boolean;
|
|
11
|
+
});
|
|
12
|
+
generateFontFace(family: string, properties: CssProperties): string;
|
|
13
|
+
generateCssVariable(key: string, values: Array<string>): string;
|
|
14
|
+
}
|
|
@@ -23,18 +23,20 @@ function handleValueWithSpaces(value) {
|
|
|
23
23
|
}
|
|
24
24
|
return value;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
class MinifiableCssRenderer {
|
|
27
|
+
#minify;
|
|
28
|
+
constructor({ minify }) {
|
|
29
|
+
this.#minify = minify;
|
|
30
|
+
}
|
|
31
|
+
generateFontFace(family, properties) {
|
|
32
|
+
return renderFontFace(withFamily(family, properties), this.#minify);
|
|
33
|
+
}
|
|
34
|
+
generateCssVariable(key, values) {
|
|
35
|
+
return renderCssVariable(key, values, this.#minify);
|
|
36
|
+
}
|
|
35
37
|
}
|
|
36
38
|
export {
|
|
37
|
-
|
|
39
|
+
MinifiableCssRenderer,
|
|
38
40
|
handleValueWithSpaces,
|
|
39
41
|
renderCssVariable,
|
|
40
42
|
renderFontFace,
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { RemoteFontProviderModResolver, RemoteFontProviderResolver } from '../definitions.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
2
|
+
import type { AstroFontProvider, ResolvedFontProvider } from '../types.js';
|
|
3
|
+
export declare class RealRemoteFontProviderResolver implements RemoteFontProviderResolver {
|
|
4
|
+
#private;
|
|
5
|
+
constructor({ root, modResolver, }: {
|
|
6
|
+
root: URL;
|
|
7
|
+
modResolver: RemoteFontProviderModResolver;
|
|
8
|
+
});
|
|
9
|
+
resolve({ entrypoint, config }: AstroFontProvider): Promise<ResolvedFontProvider>;
|
|
10
|
+
}
|
|
@@ -1,45 +1,49 @@
|
|
|
1
1
|
import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
|
|
2
2
|
import { resolveEntrypoint } from "../utils.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
throw new Error(`Invalid provider export in module, expected a function.`);
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
provider: mod.provider
|
|
16
|
-
};
|
|
17
|
-
} catch (cause) {
|
|
18
|
-
throw new AstroError(
|
|
19
|
-
{
|
|
20
|
-
...AstroErrorData.CannotLoadFontProvider,
|
|
21
|
-
message: AstroErrorData.CannotLoadFontProvider.message(entrypoint)
|
|
22
|
-
},
|
|
23
|
-
{ cause }
|
|
24
|
-
);
|
|
3
|
+
class RealRemoteFontProviderResolver {
|
|
4
|
+
#root;
|
|
5
|
+
#modResolver;
|
|
6
|
+
constructor({
|
|
7
|
+
root,
|
|
8
|
+
modResolver
|
|
9
|
+
}) {
|
|
10
|
+
this.#root = root;
|
|
11
|
+
this.#modResolver = modResolver;
|
|
25
12
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
13
|
+
#validateMod({
|
|
14
|
+
mod,
|
|
15
|
+
entrypoint
|
|
16
|
+
}) {
|
|
17
|
+
try {
|
|
18
|
+
if (typeof mod !== "object" || mod === null) {
|
|
19
|
+
throw new Error(`Expected an object for the module, but received ${typeof mod}.`);
|
|
20
|
+
}
|
|
21
|
+
if (typeof mod.provider !== "function") {
|
|
22
|
+
throw new Error(`Invalid provider export in module, expected a function.`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
provider: mod.provider
|
|
26
|
+
};
|
|
27
|
+
} catch (cause) {
|
|
28
|
+
throw new AstroError(
|
|
29
|
+
{
|
|
30
|
+
...AstroErrorData.CannotLoadFontProvider,
|
|
31
|
+
message: AstroErrorData.CannotLoadFontProvider.message(entrypoint)
|
|
32
|
+
},
|
|
33
|
+
{ cause }
|
|
34
|
+
);
|
|
40
35
|
}
|
|
41
|
-
}
|
|
36
|
+
}
|
|
37
|
+
async resolve({ entrypoint, config }) {
|
|
38
|
+
const id = resolveEntrypoint(this.#root, entrypoint.toString()).href;
|
|
39
|
+
const mod = await this.#modResolver.resolve(id);
|
|
40
|
+
const { provider } = this.#validateMod({
|
|
41
|
+
mod,
|
|
42
|
+
entrypoint: id
|
|
43
|
+
});
|
|
44
|
+
return { config, provider };
|
|
45
|
+
}
|
|
42
46
|
}
|
|
43
47
|
export {
|
|
44
|
-
|
|
48
|
+
RealRemoteFontProviderResolver
|
|
45
49
|
};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { LocalProviderUrlResolver } from '../definitions.js';
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
intercept
|
|
5
|
-
|
|
2
|
+
export declare class RequireLocalProviderUrlResolver implements LocalProviderUrlResolver {
|
|
3
|
+
#private;
|
|
4
|
+
constructor({ root, intercept, }: {
|
|
5
|
+
root: URL;
|
|
6
|
+
intercept?: ((path: string) => void) | undefined;
|
|
7
|
+
});
|
|
8
|
+
resolve(input: string): string;
|
|
9
|
+
}
|