@pyreon/zero 0.12.2 → 0.12.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/lib/actions.js +97 -0
- package/lib/actions.js.map +1 -0
- package/lib/ai.js +503 -0
- package/lib/ai.js.map +1 -0
- package/lib/api-routes.js +137 -0
- package/lib/api-routes.js.map +1 -0
- package/lib/compression.js +80 -0
- package/lib/compression.js.map +1 -0
- package/lib/cors.js +57 -0
- package/lib/cors.js.map +1 -0
- package/lib/csp.js +119 -0
- package/lib/csp.js.map +1 -0
- package/lib/env.js +217 -0
- package/lib/env.js.map +1 -0
- package/lib/favicon.js +424 -0
- package/lib/favicon.js.map +1 -0
- package/lib/i18n-routing.js +167 -0
- package/lib/i18n-routing.js.map +1 -0
- package/lib/index.js +340 -4015
- package/lib/index.js.map +1 -1
- package/lib/link.js +5 -0
- package/lib/link.js.map +1 -1
- package/lib/logger.js +78 -0
- package/lib/logger.js.map +1 -0
- package/lib/meta.js +310 -0
- package/lib/meta.js.map +1 -0
- package/lib/middleware.js +53 -0
- package/lib/middleware.js.map +1 -0
- package/lib/og-image.js +233 -0
- package/lib/og-image.js.map +1 -0
- package/lib/rate-limit.js +76 -0
- package/lib/rate-limit.js.map +1 -0
- package/lib/server.js +1534 -0
- package/lib/server.js.map +1 -0
- package/lib/testing.js +179 -0
- package/lib/testing.js.map +1 -0
- package/lib/theme.js +11 -2
- package/lib/theme.js.map +1 -1
- package/lib/types/actions.d.ts +27 -24
- package/lib/types/actions.d.ts.map +1 -1
- package/lib/types/ai.d.ts +76 -95
- package/lib/types/ai.d.ts.map +1 -1
- package/lib/types/api-routes.d.ts +37 -33
- package/lib/types/api-routes.d.ts.map +1 -1
- package/lib/types/cache.d.ts +26 -22
- package/lib/types/cache.d.ts.map +1 -1
- package/lib/types/client.d.ts +13 -9
- package/lib/types/client.d.ts.map +1 -1
- package/lib/types/compression.d.ts +14 -10
- package/lib/types/compression.d.ts.map +1 -1
- package/lib/types/config.d.ts +39 -4
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/cors.d.ts +20 -16
- package/lib/types/cors.d.ts.map +1 -1
- package/lib/types/csp.d.ts +42 -61
- package/lib/types/csp.d.ts.map +1 -1
- package/lib/types/env.d.ts +26 -26
- package/lib/types/env.d.ts.map +1 -1
- package/lib/types/favicon.d.ts +58 -54
- package/lib/types/favicon.d.ts.map +1 -1
- package/lib/types/font.d.ts +68 -65
- package/lib/types/font.d.ts.map +1 -1
- package/lib/types/i18n-routing.d.ts +43 -37
- package/lib/types/i18n-routing.d.ts.map +1 -1
- package/lib/types/image-plugin.d.ts +49 -45
- package/lib/types/image-plugin.d.ts.map +1 -1
- package/lib/types/image.d.ts +47 -36
- package/lib/types/image.d.ts.map +1 -1
- package/lib/types/index.d.ts +594 -56
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/link.d.ts +61 -56
- package/lib/types/link.d.ts.map +1 -1
- package/lib/types/logger.d.ts +37 -48
- package/lib/types/logger.d.ts.map +1 -1
- package/lib/types/meta.d.ts +145 -105
- package/lib/types/meta.d.ts.map +1 -1
- package/lib/types/middleware.d.ts +8 -4
- package/lib/types/middleware.d.ts.map +1 -1
- package/lib/types/og-image.d.ts +63 -59
- package/lib/types/og-image.d.ts.map +1 -1
- package/lib/types/rate-limit.d.ts +20 -16
- package/lib/types/rate-limit.d.ts.map +1 -1
- package/lib/types/script.d.ts +23 -19
- package/lib/types/script.d.ts.map +1 -1
- package/lib/types/seo.d.ts +47 -43
- package/lib/types/seo.d.ts.map +1 -1
- package/lib/types/server.d.ts +455 -0
- package/lib/types/server.d.ts.map +1 -0
- package/lib/types/testing.d.ts +64 -27
- package/lib/types/testing.d.ts.map +1 -1
- package/lib/types/theme.d.ts +22 -12
- package/lib/types/theme.d.ts.map +1 -1
- package/package.json +17 -12
- package/src/actions.ts +1 -3
- package/src/adapters/bun.ts +2 -0
- package/src/adapters/cloudflare.ts +2 -0
- package/src/adapters/netlify.ts +2 -0
- package/src/adapters/node.ts +2 -0
- package/src/adapters/validate.ts +16 -0
- package/src/adapters/vercel.ts +2 -0
- package/src/compression.ts +19 -3
- package/src/entry-server.ts +28 -5
- package/src/index.ts +20 -182
- package/src/link.tsx +6 -0
- package/src/meta.tsx +78 -16
- package/src/rate-limit.ts +11 -9
- package/src/server.ts +70 -0
- package/src/theme.tsx +12 -1
- package/src/vite-plugin.ts +5 -1
- package/lib/fs-router-Dil4IKZR.js +0 -290
- package/lib/fs-router-Dil4IKZR.js.map +0 -1
- package/lib/types/adapters/bun.d.ts +0 -6
- package/lib/types/adapters/bun.d.ts.map +0 -1
- package/lib/types/adapters/cloudflare.d.ts +0 -26
- package/lib/types/adapters/cloudflare.d.ts.map +0 -1
- package/lib/types/adapters/index.d.ts +0 -13
- package/lib/types/adapters/index.d.ts.map +0 -1
- package/lib/types/adapters/netlify.d.ts +0 -21
- package/lib/types/adapters/netlify.d.ts.map +0 -1
- package/lib/types/adapters/node.d.ts +0 -6
- package/lib/types/adapters/node.d.ts.map +0 -1
- package/lib/types/adapters/static.d.ts +0 -7
- package/lib/types/adapters/static.d.ts.map +0 -1
- package/lib/types/adapters/vercel.d.ts +0 -21
- package/lib/types/adapters/vercel.d.ts.map +0 -1
- package/lib/types/app.d.ts +0 -24
- package/lib/types/app.d.ts.map +0 -1
- package/lib/types/entry-server.d.ts +0 -37
- package/lib/types/entry-server.d.ts.map +0 -1
- package/lib/types/error-overlay.d.ts +0 -6
- package/lib/types/error-overlay.d.ts.map +0 -1
- package/lib/types/fs-router.d.ts +0 -47
- package/lib/types/fs-router.d.ts.map +0 -1
- package/lib/types/isr.d.ts +0 -9
- package/lib/types/isr.d.ts.map +0 -1
- package/lib/types/not-found.d.ts +0 -7
- package/lib/types/not-found.d.ts.map +0 -1
- package/lib/types/types.d.ts +0 -111
- package/lib/types/types.d.ts.map +0 -1
- package/lib/types/utils/use-intersection-observer.d.ts +0 -10
- package/lib/types/utils/use-intersection-observer.d.ts.map +0 -1
- package/lib/types/utils/with-headers.d.ts +0 -6
- package/lib/types/utils/with-headers.d.ts.map +0 -1
- package/lib/types/vite-plugin.d.ts +0 -17
- package/lib/types/vite-plugin.d.ts.map +0 -1
package/lib/types/csp.d.ts
CHANGED
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Generates a CSP header from a typed configuration object.
|
|
5
|
-
* Supports all CSP directives, nonces for inline scripts,
|
|
6
|
-
* and report-only mode for testing.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { cspMiddleware } from "@pyreon/zero"
|
|
11
|
-
*
|
|
12
|
-
* const csp = cspMiddleware({
|
|
13
|
-
* directives: {
|
|
14
|
-
* defaultSrc: ["'self'"],
|
|
15
|
-
* scriptSrc: ["'self'", "'nonce'"],
|
|
16
|
-
* styleSrc: ["'self'", "'unsafe-inline'"],
|
|
17
|
-
* imgSrc: ["'self'", "data:", "https:"],
|
|
18
|
-
* connectSrc: ["'self'", "https://api.example.com"],
|
|
19
|
-
* },
|
|
20
|
-
* reportOnly: false,
|
|
21
|
-
* })
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
import type { Middleware } from '@pyreon/server';
|
|
1
|
+
import { Middleware } from "@pyreon/server";
|
|
2
|
+
|
|
3
|
+
//#region src/csp.d.ts
|
|
25
4
|
/**
|
|
26
5
|
* Read the current CSP nonce in a component.
|
|
27
6
|
*
|
|
@@ -39,47 +18,47 @@ import type { Middleware } from '@pyreon/server';
|
|
|
39
18
|
* }
|
|
40
19
|
* ```
|
|
41
20
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
21
|
+
declare function useNonce(): string;
|
|
22
|
+
interface CspDirectives {
|
|
23
|
+
defaultSrc?: string[];
|
|
24
|
+
scriptSrc?: string[];
|
|
25
|
+
styleSrc?: string[];
|
|
26
|
+
imgSrc?: string[];
|
|
27
|
+
fontSrc?: string[];
|
|
28
|
+
connectSrc?: string[];
|
|
29
|
+
mediaSrc?: string[];
|
|
30
|
+
objectSrc?: string[];
|
|
31
|
+
frameSrc?: string[];
|
|
32
|
+
childSrc?: string[];
|
|
33
|
+
workerSrc?: string[];
|
|
34
|
+
frameAncestors?: string[];
|
|
35
|
+
formAction?: string[];
|
|
36
|
+
baseUri?: string[];
|
|
37
|
+
manifestSrc?: string[];
|
|
38
|
+
/** Reporting endpoint URL. */
|
|
39
|
+
reportUri?: string;
|
|
40
|
+
/** Reporting endpoint name (CSP Level 3). */
|
|
41
|
+
reportTo?: string;
|
|
42
|
+
/** Upgrade insecure requests. */
|
|
43
|
+
upgradeInsecureRequests?: boolean;
|
|
44
|
+
/** Block all mixed content. */
|
|
45
|
+
blockAllMixedContent?: boolean;
|
|
67
46
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
47
|
+
interface CspConfig {
|
|
48
|
+
/** CSP directives. */
|
|
49
|
+
directives: CspDirectives;
|
|
50
|
+
/**
|
|
51
|
+
* Report-only mode — logs violations without blocking.
|
|
52
|
+
* Uses Content-Security-Policy-Report-Only header instead.
|
|
53
|
+
* Default: false
|
|
54
|
+
*/
|
|
55
|
+
reportOnly?: boolean;
|
|
77
56
|
}
|
|
78
57
|
/**
|
|
79
58
|
* Build a CSP header string from directives.
|
|
80
59
|
* Exported for testing.
|
|
81
60
|
*/
|
|
82
|
-
|
|
61
|
+
declare function buildCspHeader(directives: CspDirectives, nonce?: string): string;
|
|
83
62
|
/**
|
|
84
63
|
* CSP middleware — sets Content-Security-Policy header.
|
|
85
64
|
*
|
|
@@ -103,5 +82,7 @@ export declare function buildCspHeader(directives: CspDirectives, nonce?: string
|
|
|
103
82
|
* })
|
|
104
83
|
* ```
|
|
105
84
|
*/
|
|
106
|
-
|
|
107
|
-
//#
|
|
85
|
+
declare function cspMiddleware(config: CspConfig): Middleware;
|
|
86
|
+
//#endregion
|
|
87
|
+
export { CspConfig, CspDirectives, buildCspHeader, cspMiddleware, useNonce };
|
|
88
|
+
//# sourceMappingURL=csp2.d.ts.map
|
package/lib/types/csp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"csp2.d.ts","names":[],"sources":["../../../src/csp.ts"],"mappings":";;;;;;;;;;;;AA8EA;;;;;;;;iBAhCgB,QAAA,CAAA;AAAA,UAMC,aAAA;EACf,UAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,QAAA;EACA,SAAA;EACA,QAAA;EACA,QAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;EACA,OAAA;EACA,WAAA;EAmH0D;EAjH1D,SAAA;;EAEA,QAAA;;EAEA,uBAAA;;EAEA,oBAAA;AAAA;AAAA,UAGe,SAAA;;EAEf,UAAA,EAAY,aAAA;;;;;;EAMZ,UAAA;AAAA;;;;;iBA2Bc,cAAA,CAAe,UAAA,EAAY,aAAA,EAAe,KAAA;;;;;;;;;;;;;;;;;;;;;;;;iBAqE1C,aAAA,CAAc,MAAA,EAAQ,SAAA,GAAY,UAAA"}
|
package/lib/types/env.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/env.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Environment variable validation.
|
|
3
4
|
*
|
|
@@ -19,47 +20,45 @@
|
|
|
19
20
|
* })
|
|
20
21
|
* ```
|
|
21
22
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
interface EnvValidatorOptions<T = string> {
|
|
24
|
+
/** Whether this variable is required. Default: true */
|
|
25
|
+
required?: boolean;
|
|
26
|
+
/** Default value when not set. Makes the variable optional. */
|
|
27
|
+
default?: T;
|
|
28
|
+
/** Human-readable description for error messages. */
|
|
29
|
+
description?: string;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
interface EnvValidator<T> {
|
|
32
|
+
__type: 'env-validator';
|
|
33
|
+
parse: (raw: string | undefined, key: string) => T;
|
|
34
|
+
required: boolean;
|
|
35
|
+
defaultValue?: T | undefined;
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* String validator — accepts any non-empty string.
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
|
+
declare function str(options?: EnvValidatorOptions<string>): EnvValidator<string>;
|
|
40
41
|
/**
|
|
41
42
|
* Number validator — parses to a number, rejects NaN.
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
|
+
declare function num(options?: EnvValidatorOptions<number>): EnvValidator<number>;
|
|
44
45
|
/**
|
|
45
46
|
* Boolean validator — accepts "true"/"1" as true, "false"/"0" as false.
|
|
46
47
|
*/
|
|
47
|
-
|
|
48
|
+
declare function bool(options?: EnvValidatorOptions<boolean>): EnvValidator<boolean>;
|
|
48
49
|
/**
|
|
49
50
|
* URL validator — validates that the value is a valid URL.
|
|
50
51
|
*/
|
|
51
|
-
|
|
52
|
+
declare function url(options?: EnvValidatorOptions<string>): EnvValidator<string>;
|
|
52
53
|
/**
|
|
53
54
|
* Enum validator — value must be one of the allowed values.
|
|
54
55
|
*/
|
|
55
|
-
|
|
56
|
+
declare function oneOf<T extends string>(values: readonly T[], options?: EnvValidatorOptions<T>): EnvValidator<T>;
|
|
56
57
|
/** Schema entry: plain value, constructor, or explicit validator. */
|
|
57
58
|
type SchemaEntry = string | number | boolean | StringConstructor | NumberConstructor | BooleanConstructor | EnvValidator<any>;
|
|
58
59
|
/** Infer the output type from a schema entry. */
|
|
59
60
|
type InferEntry<T> = T extends EnvValidator<infer V> ? V : T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends string ? string : T extends number ? number : T extends boolean ? boolean : never;
|
|
60
|
-
type InferEnvSchema<T> = {
|
|
61
|
-
[K in keyof T]: InferEntry<T[K]>;
|
|
62
|
-
};
|
|
61
|
+
type InferEnvSchema<T> = { [K in keyof T]: InferEntry<T[K]> };
|
|
63
62
|
/**
|
|
64
63
|
* Validate environment variables.
|
|
65
64
|
*
|
|
@@ -82,7 +81,7 @@ type InferEnvSchema<T> = {
|
|
|
82
81
|
* })
|
|
83
82
|
* ```
|
|
84
83
|
*/
|
|
85
|
-
|
|
84
|
+
declare function validateEnv<T extends Record<string, SchemaEntry>>(schema: T, source?: Record<string, string | undefined>): InferEnvSchema<T>;
|
|
86
85
|
/**
|
|
87
86
|
* Extract public environment variables (prefixed with `ZERO_PUBLIC_`).
|
|
88
87
|
*
|
|
@@ -95,8 +94,8 @@ export declare function validateEnv<T extends Record<string, SchemaEntry>>(schem
|
|
|
95
94
|
* // → validated against ZERO_PUBLIC_API_URL, ZERO_PUBLIC_APP_NAME
|
|
96
95
|
* ```
|
|
97
96
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
declare function publicEnv(): Record<string, string>;
|
|
98
|
+
declare function publicEnv<T extends Record<string, SchemaEntry>>(schema: T): InferEnvSchema<T>;
|
|
100
99
|
/**
|
|
101
100
|
* Create an env validator from a custom parse function.
|
|
102
101
|
* Use this to integrate any schema library (Zod, Valibot, ArkType, etc.).
|
|
@@ -113,6 +112,7 @@ export declare function publicEnv<T extends Record<string, SchemaEntry>>(schema:
|
|
|
113
112
|
* })
|
|
114
113
|
* ```
|
|
115
114
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
declare function schema<T>(parse: (raw: string) => T): EnvValidator<T>;
|
|
116
|
+
//#endregion
|
|
117
|
+
export { EnvValidator, EnvValidatorOptions, bool, num, oneOf, publicEnv, schema, str, url, validateEnv };
|
|
118
|
+
//# sourceMappingURL=env2.d.ts.map
|
package/lib/types/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"env2.d.ts","names":[],"sources":["../../../src/env.ts"],"mappings":";;AAsBA;;;;;;;;;;;AASA;;;;;;;;;UATiB,mBAAA;EAYf;EAVA,QAAA;EAWe;EATf,OAAA,GAAU,CAAA;EASM;EAPhB,WAAA;AAAA;AAAA,UAGe,YAAA;EACf,MAAA;EACA,KAAA,GAAQ,GAAA,sBAAyB,GAAA,aAAgB,CAAA;EACjD,QAAA;EACA,YAAA,GAAe,CAAA;AAAA;;AA2BjB;;iBAnBgB,GAAA,CAAI,OAAA,GAAU,mBAAA,WAA8B,YAAA;;;;iBAmB5C,GAAA,CAAI,OAAA,GAAU,mBAAA,WAA8B,YAAA;;;AAuB5D;iBAAgB,IAAA,CAAK,OAAA,GAAU,mBAAA,YAA+B,YAAA;;;;iBAsB9C,GAAA,CAAI,OAAA,GAAU,mBAAA,WAA8B,YAAA;;;;iBAwB5C,KAAA,kBAAA,CACd,MAAA,WAAiB,CAAA,IACjB,OAAA,GAAU,mBAAA,CAAoB,CAAA,IAC7B,YAAA,CAAa,CAAA;;KAmEX,WAAA,+BAED,iBAAA,GAAoB,iBAAA,GAAoB,kBAAA,GACxC,YAAA;;KAGC,UAAA,MACH,CAAA,SAAU,YAAA,YAAwB,CAAA,GAClC,CAAA,SAAU,iBAAA,YACV,CAAA,SAAU,iBAAA,YACV,CAAA,SAAU,kBAAA,aACV,CAAA,2BACA,CAAA,2BACA,CAAA;AAAA,KAGG,cAAA,oBACS,CAAA,GAAI,UAAA,CAAW,CAAA,CAAE,CAAA;;AAvF/B;;;;;;;;;;;;;;;;;;;;AAwBC;iBA0Fe,WAAA,WAAsB,MAAA,SAAe,WAAA,EAAA,CACnD,MAAA,EAAQ,CAAA,EACR,MAAA,GAAS,MAAA,+BACR,cAAA,CAAe,CAAA;;;;;;;;;;;;;iBAqCF,SAAA,CAAA,GAAa,MAAA;AAAA,iBACb,SAAA,WAAoB,MAAA,SAAe,WAAA,EAAA,CAAc,MAAA,EAAQ,CAAA,GAAI,cAAA,CAAe,CAAA;;;;;;;;;;;;;;;;;iBAwC5E,MAAA,GAAA,CAAU,KAAA,GAAQ,GAAA,aAAgB,CAAA,GAAI,YAAA,CAAa,CAAA"}
|
package/lib/types/favicon.d.ts
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/favicon.d.ts
|
|
4
|
+
interface FaviconLocaleConfig {
|
|
5
|
+
/** Locale-specific source icon (SVG or PNG). */
|
|
6
|
+
source: string;
|
|
7
|
+
/** Optional dark mode variant for this locale. */
|
|
8
|
+
darkSource?: string;
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
10
|
+
interface FaviconPluginConfig {
|
|
11
|
+
/** Path to the source icon (SVG or PNG, at least 512x512 for PNG). */
|
|
12
|
+
source: string;
|
|
13
|
+
/** Theme color for web manifest. Default: "#ffffff" */
|
|
14
|
+
themeColor?: string;
|
|
15
|
+
/** Background color for web manifest. Default: "#ffffff" */
|
|
16
|
+
backgroundColor?: string;
|
|
17
|
+
/** App name for web manifest. Uses package.json name if not set. */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Generate web manifest. Default: true */
|
|
20
|
+
manifest?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Dark mode favicon (SVG only).
|
|
23
|
+
* When provided, the SVG favicon uses prefers-color-scheme media query
|
|
24
|
+
* to switch between light and dark variants.
|
|
25
|
+
*/
|
|
26
|
+
darkSource?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Locale-specific icon overrides. Each key is a locale code,
|
|
29
|
+
* value is a source icon (and optional dark variant).
|
|
30
|
+
* Locales not in this map use the base `source`.
|
|
31
|
+
*
|
|
32
|
+
* Generated files are placed under `/{locale}/` prefix:
|
|
33
|
+
* /de/favicon.svg, /de/favicon-32x32.png, etc.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* faviconPlugin({
|
|
38
|
+
* source: "./icon.svg",
|
|
39
|
+
* locales: {
|
|
40
|
+
* de: { source: "./icon-de.svg" },
|
|
41
|
+
* cs: { source: "./icon-cs.svg" },
|
|
42
|
+
* },
|
|
43
|
+
* })
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
locales?: Record<string, FaviconLocaleConfig>;
|
|
45
47
|
}
|
|
46
48
|
/**
|
|
47
49
|
* Favicon generation Vite plugin.
|
|
@@ -59,7 +61,7 @@ export interface FaviconPluginConfig {
|
|
|
59
61
|
* }
|
|
60
62
|
* ```
|
|
61
63
|
*/
|
|
62
|
-
|
|
64
|
+
declare function faviconPlugin(config: FaviconPluginConfig): Plugin;
|
|
63
65
|
/**
|
|
64
66
|
* Get favicon link tags for a specific locale.
|
|
65
67
|
* Returns link objects suitable for `useHead()` or direct HTML injection.
|
|
@@ -70,16 +72,18 @@ export declare function faviconPlugin(config: FaviconPluginConfig): Plugin;
|
|
|
70
72
|
* // → [{ rel: "icon", type: "image/svg+xml", href: "/de/favicon.svg" }, ...]
|
|
71
73
|
* ```
|
|
72
74
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
declare function faviconLinks(locale: string | undefined, config: FaviconPluginConfig): Array<{
|
|
76
|
+
rel: string;
|
|
77
|
+
type?: string;
|
|
78
|
+
sizes?: string;
|
|
79
|
+
href: string;
|
|
78
80
|
}>;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
interface IcoEntry {
|
|
82
|
+
buffer: Buffer;
|
|
83
|
+
size: number;
|
|
82
84
|
}
|
|
83
85
|
/** @internal Exported for testing */
|
|
84
|
-
|
|
85
|
-
//#
|
|
86
|
+
declare function createIcoFromPngs(entries: IcoEntry[]): Uint8Array;
|
|
87
|
+
//#endregion
|
|
88
|
+
export { FaviconLocaleConfig, FaviconPluginConfig, IcoEntry, createIcoFromPngs, faviconLinks, faviconPlugin };
|
|
89
|
+
//# sourceMappingURL=favicon2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"favicon2.d.ts","names":[],"sources":["../../../src/favicon.ts"],"mappings":";;;UA6BiB,mBAAA;;EAEf,MAAA;EAFkC;EAIlC,UAAA;AAAA;AAAA,UAGe,mBAAA;EAAA;EAEf,MAAA;;EAEA,UAAA;EAFA;EAIA,eAAA;EAAA;EAEA,IAAA;EAEA;EAAA,QAAA;EA0BA;;;;;EApBA,UAAA;EAoD2B;;;;;;;;AAmU7B;;;;;;;;;;;EAnWE,OAAA,GAAU,MAAA,SAAe,mBAAA;AAAA;;AAyZ3B;;;;;;;;;AAMA;;;;;;iBA/XgB,aAAA,CAAc,MAAA,EAAQ,mBAAA,GAAsB,MAAA;;;;;;;;;;;iBAmU5C,YAAA,CACd,MAAA,sBACA,MAAA,EAAQ,mBAAA,GACP,KAAA;EAAQ,GAAA;EAAa,IAAA;EAAe,KAAA;EAAgB,IAAA;AAAA;AAAA,UAmDtC,QAAA;EACf,MAAA,EAAQ,MAAA;EACR,IAAA;AAAA;;iBAIc,iBAAA,CAAkB,OAAA,EAAS,QAAA,KAAa,UAAA"}
|
package/lib/types/font.d.ts
CHANGED
|
@@ -1,81 +1,83 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/font.d.ts
|
|
4
|
+
interface FontConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Google Fonts families.
|
|
7
|
+
*
|
|
8
|
+
* Accepts both string shorthand and structured objects:
|
|
9
|
+
* - String: "Inter:wght@400;500;700" or "Inter:wght@100..900"
|
|
10
|
+
* - Object: { family: "Inter", weights: [400, 500, 700] }
|
|
11
|
+
* - Variable: { family: "Inter", variable: true, weightRange: [100, 900] }
|
|
12
|
+
*/
|
|
13
|
+
google?: GoogleFontInput[];
|
|
14
|
+
/** Local font files. */
|
|
15
|
+
local?: LocalFont[];
|
|
16
|
+
/** Default font-display strategy. Default: "swap" */
|
|
17
|
+
display?: FontDisplay;
|
|
18
|
+
/** Preload critical fonts. Default: true */
|
|
19
|
+
preload?: boolean;
|
|
20
|
+
/** Self-host Google Fonts at build time. Default: true */
|
|
21
|
+
selfHost?: boolean;
|
|
22
|
+
/** Fallback font metrics for reducing CLS. */
|
|
23
|
+
fallbacks?: Record<string, FallbackMetrics>;
|
|
22
24
|
}
|
|
23
25
|
/** Static Google Font config. */
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
interface GoogleFontStatic {
|
|
27
|
+
family: string;
|
|
28
|
+
weights: number[];
|
|
29
|
+
italic?: boolean;
|
|
30
|
+
variable?: false;
|
|
29
31
|
}
|
|
30
32
|
/** Variable Google Font config. */
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
interface GoogleFontVariable {
|
|
34
|
+
family: string;
|
|
35
|
+
/** Weight range as [min, max] tuple. e.g. [100, 900] */
|
|
36
|
+
weightRange: [number, number];
|
|
37
|
+
italic?: boolean;
|
|
38
|
+
variable: true;
|
|
37
39
|
}
|
|
38
40
|
/** Google font input: structured object or string shorthand. */
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
type GoogleFontInput = GoogleFontStatic | GoogleFontVariable | string;
|
|
42
|
+
interface LocalFont {
|
|
43
|
+
family: string;
|
|
44
|
+
src: string;
|
|
45
|
+
/** Single weight (400) or variable range ("100 900"). */
|
|
46
|
+
weight?: number | `${number} ${number}`;
|
|
47
|
+
style?: 'normal' | 'italic';
|
|
48
|
+
display?: FontDisplay;
|
|
47
49
|
}
|
|
48
|
-
|
|
50
|
+
type FontDisplay = 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
|
|
49
51
|
/** Metrics for generating size-adjusted fallback fonts to reduce CLS. */
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
interface FallbackMetrics {
|
|
53
|
+
/** The fallback font to adjust. e.g. "Arial", "Georgia" */
|
|
54
|
+
fallback: string;
|
|
55
|
+
/** Size adjustment factor. e.g. 1.05 */
|
|
56
|
+
sizeAdjust?: number;
|
|
57
|
+
/** Ascent override percentage. e.g. 90 */
|
|
58
|
+
ascentOverride?: number;
|
|
59
|
+
/** Descent override percentage. e.g. 22 */
|
|
60
|
+
descentOverride?: number;
|
|
61
|
+
/** Line gap override percentage. e.g. 0 */
|
|
62
|
+
lineGapOverride?: number;
|
|
61
63
|
}
|
|
62
64
|
interface ResolvedFontBase {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
family: string;
|
|
66
|
+
italic: boolean;
|
|
65
67
|
}
|
|
66
68
|
interface StaticFont extends ResolvedFontBase {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
variable: false;
|
|
70
|
+
weights: number[];
|
|
69
71
|
}
|
|
70
72
|
interface VariableFont extends ResolvedFontBase {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
variable: true;
|
|
74
|
+
weightRange: [number, number];
|
|
73
75
|
}
|
|
74
76
|
type ResolvedFont = StaticFont | VariableFont;
|
|
75
77
|
/**
|
|
76
78
|
* Normalize a GoogleFontInput (string or object) into a ResolvedFont.
|
|
77
79
|
*/
|
|
78
|
-
|
|
80
|
+
declare function resolveGoogleFont(input: GoogleFontInput): ResolvedFont;
|
|
79
81
|
/**
|
|
80
82
|
* Parse Google Fonts family string shorthand.
|
|
81
83
|
*
|
|
@@ -83,11 +85,11 @@ export declare function resolveGoogleFont(input: GoogleFontInput): ResolvedFont;
|
|
|
83
85
|
* Variable range: "Inter:wght@100..900"
|
|
84
86
|
* Variable with italic: "Inter:ital,wght@100..900"
|
|
85
87
|
*/
|
|
86
|
-
|
|
88
|
+
declare function parseGoogleFamily(input: string): ResolvedFont;
|
|
87
89
|
/**
|
|
88
90
|
* Generate a Google Fonts CSS URL.
|
|
89
91
|
*/
|
|
90
|
-
|
|
92
|
+
declare function googleFontsUrl(families: ResolvedFont[], display?: FontDisplay): string;
|
|
91
93
|
/**
|
|
92
94
|
* Zero font optimization Vite plugin.
|
|
93
95
|
*
|
|
@@ -110,10 +112,11 @@ export declare function googleFontsUrl(families: ResolvedFont[], display?: FontD
|
|
|
110
112
|
* ],
|
|
111
113
|
* }
|
|
112
114
|
*/
|
|
113
|
-
|
|
115
|
+
declare function fontPlugin(config?: FontConfig): Plugin;
|
|
114
116
|
/**
|
|
115
117
|
* Generate CSS variables for font families.
|
|
116
118
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
119
|
+
declare function fontVariables(families: Record<string, string>): string;
|
|
120
|
+
//#endregion
|
|
121
|
+
export { FallbackMetrics, FontConfig, FontDisplay, GoogleFontInput, GoogleFontStatic, GoogleFontVariable, LocalFont, fontPlugin, fontVariables, googleFontsUrl, parseGoogleFamily, resolveGoogleFont };
|
|
122
|
+
//# sourceMappingURL=font2.d.ts.map
|
package/lib/types/font.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"font2.d.ts","names":[],"sources":["../../../src/font.ts"],"mappings":";;;UAciB,UAAA;;AAAjB;;;;;;;EASE,MAAA,GAAS,eAAA;EAUS;EARlB,KAAA,GAAQ,SAAA;EAFR;EAIA,OAAA,GAAU,WAAA;EAFV;EAIA,OAAA;EAFA;EAIA,QAAA;EAFA;EAIA,SAAA,GAAY,MAAA,SAAe,eAAA;AAAA;;UAIZ,gBAAA;EACf,MAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;AAAA;;UAIe,kBAAA;EACf,MAAA;EANA;EAQA,WAAA;EACA,MAAA;EACA,QAAA;AAAA;;KAIU,eAAA,GAAkB,gBAAA,GAAmB,kBAAA;AAAA,UAEhC,SAAA;EACf,MAAA;EACA,GAAA;EATA;EAWA,MAAA;EACA,KAAA;EACA,OAAA,GAAU,WAAA;AAAA;AAAA,KAGA,WAAA;;UAGK,eAAA;EAdkD;EAgBjE,QAAA;EAdwB;EAgBxB,UAAA;EAVqB;EAYrB,cAAA;EAhBA;EAkBA,eAAA;EAfA;EAiBA,eAAA;AAAA;AAAA,UAGQ,gBAAA;EACR,MAAA;EACA,MAAA;AAAA;AAAA,UAGQ,UAAA,SAAmB,gBAAA;EAC3B,QAAA;EACA,OAAA;AAAA;AAAA,UAGQ,YAAA,SAAqB,gBAAA;EAC7B,QAAA;EACA,WAAA;AAAA;AAAA,KAGG,YAAA,GAAe,UAAA,GAAa,YAAA;;;;iBAKjB,iBAAA,CAAkB,KAAA,EAAO,eAAA,GAAkB,YAAA;;AAtB1D;;;;;AAIO;iBA+CQ,iBAAA,CAAkB,KAAA,WAAgB,YAAA;;;;iBA8DlC,cAAA,CAAe,QAAA,EAAU,YAAA,IAAgB,OAAA,GAAS,WAAA;;;;AAxGzD;;;;;;;;;AAKI;;;;;AAQb;;;;;iBAoSgB,UAAA,CAAW,MAAA,GAAQ,UAAA,GAAkB,MAAA;;;;iBAgHrC,aAAA,CAAc,QAAA,EAAU,MAAA"}
|