fix schemas

This commit is contained in:
yusing 2025-01-25 07:04:01 +08:00
parent 9e181d25ce
commit 322878b0b7
12 changed files with 48 additions and 23 deletions

View file

@ -95,7 +95,7 @@ build-docker:
# }
gen-schema-single:
bun run typescript-json-schema --noExtraProps --required --skipLibCheck --tsNodeRegister=true -o schemas/${OUT} schemas/${IN} ${CLASS}
bun --bun run typescript-json-schema --noExtraProps --required --skipLibCheck --tsNodeRegister=true -o schemas/${OUT} schemas/${IN} ${CLASS}
# minify
python3 -c "import json; f=open('schemas/${OUT}', 'r'); j=json.load(f); f.close(); f=open('schemas/${OUT}', 'w'); json.dump(j, f, separators=(',', ':'));"

View file

@ -1,6 +1,6 @@
{
"name": "godoxy-schemas",
"version": "0.9.0-10",
"version": "0.9.0-13",
"description": "JSON Schema and typescript types for GoDoxy configuration",
"license": "MIT",
"repository": {

File diff suppressed because one or more lines are too long

View file

@ -1,15 +1,18 @@
import { DomainOrWildcards as DomainsOrWildcards, Email } from "../types";
import { DomainOrWildcard, Email } from "../types";
export declare const AUTOCERT_PROVIDERS: readonly ["local", "cloudflare", "clouddns", "duckdns", "ovh"];
export type AutocertProvider = (typeof AUTOCERT_PROVIDERS)[number];
export type AutocertConfig = LocalOptions | CloudflareOptions | CloudDNSOptions | DuckDNSOptions | OVHOptionsWithAppKey | OVHOptionsWithOAuth2Config;
export interface AutocertConfigBase {
email: Email;
domains: DomainsOrWildcards;
domains: DomainOrWildcard[];
cert_path?: string;
key_path?: string;
}
export interface LocalOptions extends AutocertConfigBase {
export interface LocalOptions {
provider: "local";
cert_path?: string;
key_path?: string;
options?: {} | null;
}
export interface CloudflareOptions extends AutocertConfigBase {
provider: "cloudflare";

View file

@ -1,4 +1,4 @@
import { DomainOrWildcards as DomainsOrWildcards, Email } from "../types";
import { DomainOrWildcard, Email } from "../types";
export const AUTOCERT_PROVIDERS = [
"local",
@ -22,15 +22,20 @@ export interface AutocertConfigBase {
/* ACME email */
email: Email;
/* ACME domains */
domains: DomainsOrWildcards;
domains: DomainOrWildcard[];
/* ACME certificate path */
cert_path?: string;
/* ACME key path */
key_path?: string;
}
export interface LocalOptions extends AutocertConfigBase {
export interface LocalOptions {
provider: "local";
/* ACME certificate path */
cert_path?: string;
/* ACME key path */
key_path?: string;
options?: {} | null;
}
export interface CloudflareOptions extends AutocertConfigBase {

View file

@ -1,4 +1,4 @@
import { DomainNames } from "../types";
import { DomainName } from "../types";
import { AutocertConfig } from "./autocert";
import { EntrypointConfig } from "./entrypoint";
import { HomepageConfig } from "./homepage";
@ -16,7 +16,7 @@ export type Config = {
* @minItems 1
* @examples require(".").matchDomainsExamples
*/
match_domains?: DomainNames;
match_domains?: DomainName[];
homepage?: HomepageConfig;
/**
* Optional timeout before shutdown

View file

@ -1,4 +1,4 @@
import { DomainNames } from "../types";
import { DomainName } from "../types";
import { AutocertConfig } from "./autocert";
import { EntrypointConfig } from "./entrypoint";
import { HomepageConfig } from "./homepage";
@ -19,7 +19,7 @@ export type Config = {
* @minItems 1
* @examples require(".").matchDomainsExamples
*/
match_domains?: DomainNames;
match_domains?: DomainName[];
/* Optional homepage configuration */
homepage?: HomepageConfig;
/**

6
schemas/index.d.ts vendored
View file

@ -12,4 +12,8 @@ import * as IdleWatcher from "./providers/idlewatcher";
import * as LoadBalance from "./providers/loadbalance";
import * as Routes from "./providers/routes";
import * as GoDoxy from "./types";
export { AccessLog, Autocert, Config, Entrypoint, GoDoxy, Healthcheck, Homepage, IdleWatcher, LoadBalance, MiddlewareCompose, Middlewares, Notification, Providers, Routes, };
import ConfigSchema from "./config.schema.json";
import DockerRoutesSchema from "./docker_routes.schema.json";
import MiddlewareComposeSchema from "./middleware_compose.schema.json";
import RoutesSchema from "./routes.schema.json";
export { AccessLog, Autocert, Config, ConfigSchema, DockerRoutesSchema, Entrypoint, GoDoxy, Healthcheck, Homepage, IdleWatcher, LoadBalance, MiddlewareCompose, MiddlewareComposeSchema, Middlewares, Notification, Providers, Routes, RoutesSchema, };

View file

@ -12,4 +12,8 @@ import * as IdleWatcher from "./providers/idlewatcher";
import * as LoadBalance from "./providers/loadbalance";
import * as Routes from "./providers/routes";
import * as GoDoxy from "./types";
export { AccessLog, Autocert, Config, Entrypoint, GoDoxy, Healthcheck, Homepage, IdleWatcher, LoadBalance, MiddlewareCompose, Middlewares, Notification, Providers, Routes, };
import ConfigSchema from "./config.schema.json";
import DockerRoutesSchema from "./docker_routes.schema.json";
import MiddlewareComposeSchema from "./middleware_compose.schema.json";
import RoutesSchema from "./routes.schema.json";
export { AccessLog, Autocert, Config, ConfigSchema, DockerRoutesSchema, Entrypoint, GoDoxy, Healthcheck, Homepage, IdleWatcher, LoadBalance, MiddlewareCompose, MiddlewareComposeSchema, Middlewares, Notification, Providers, Routes, RoutesSchema, };

View file

@ -16,10 +16,17 @@ import * as Routes from "./providers/routes";
import * as GoDoxy from "./types";
import ConfigSchema from "./config.schema.json";
import DockerRoutesSchema from "./docker_routes.schema.json";
import MiddlewareComposeSchema from "./middleware_compose.schema.json";
import RoutesSchema from "./routes.schema.json";
export {
AccessLog,
Autocert,
Config,
ConfigSchema,
DockerRoutesSchema,
Entrypoint,
GoDoxy,
Healthcheck,
@ -27,8 +34,10 @@ export {
IdleWatcher,
LoadBalance,
MiddlewareCompose,
MiddlewareComposeSchema,
Middlewares,
Notification,
Providers,
Routes,
RoutesSchema,
};

8
schemas/types.d.ts vendored
View file

@ -28,13 +28,13 @@ export type HTTPCookie = string & {};
export type StatusCode = number | `${number}`;
export type StatusCodeRange = number | `${number}` | `${number}-${number}`;
/**
* @items.pattern ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
* @pattern ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
*/
export type DomainNames = string[];
export type DomainName = string & {};
/**
* @items.pattern ^(\*\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
* @pattern ^(\*\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
*/
export type DomainOrWildcards = string[];
export type DomainOrWildcard = string & {};
/**
* @format hostname
* @type string

View file

@ -45,13 +45,13 @@ export type StatusCode = number | `${number}`;
export type StatusCodeRange = number | `${number}` | `${number}-${number}`;
/**
* @items.pattern ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
* @pattern ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
*/
export type DomainNames = string[];
export type DomainName = string & {};
/**
* @items.pattern ^(\*\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
* @pattern ^(\*\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
*/
export type DomainOrWildcards = string[];
export type DomainOrWildcard = string & {};
/**
* @format hostname
* @type string