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: 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 # 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=(',', ':'));" 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", "name": "godoxy-schemas",
"version": "0.9.0-10", "version": "0.9.0-13",
"description": "JSON Schema and typescript types for GoDoxy configuration", "description": "JSON Schema and typescript types for GoDoxy configuration",
"license": "MIT", "license": "MIT",
"repository": { "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 declare const AUTOCERT_PROVIDERS: readonly ["local", "cloudflare", "clouddns", "duckdns", "ovh"];
export type AutocertProvider = (typeof AUTOCERT_PROVIDERS)[number]; export type AutocertProvider = (typeof AUTOCERT_PROVIDERS)[number];
export type AutocertConfig = LocalOptions | CloudflareOptions | CloudDNSOptions | DuckDNSOptions | OVHOptionsWithAppKey | OVHOptionsWithOAuth2Config; export type AutocertConfig = LocalOptions | CloudflareOptions | CloudDNSOptions | DuckDNSOptions | OVHOptionsWithAppKey | OVHOptionsWithOAuth2Config;
export interface AutocertConfigBase { export interface AutocertConfigBase {
email: Email; email: Email;
domains: DomainsOrWildcards; domains: DomainOrWildcard[];
cert_path?: string; cert_path?: string;
key_path?: string; key_path?: string;
} }
export interface LocalOptions extends AutocertConfigBase { export interface LocalOptions {
provider: "local"; provider: "local";
cert_path?: string;
key_path?: string;
options?: {} | null;
} }
export interface CloudflareOptions extends AutocertConfigBase { export interface CloudflareOptions extends AutocertConfigBase {
provider: "cloudflare"; provider: "cloudflare";

View file

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

View file

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

View file

@ -1,4 +1,4 @@
import { DomainNames } from "../types"; import { DomainName } from "../types";
import { AutocertConfig } from "./autocert"; import { AutocertConfig } from "./autocert";
import { EntrypointConfig } from "./entrypoint"; import { EntrypointConfig } from "./entrypoint";
import { HomepageConfig } from "./homepage"; import { HomepageConfig } from "./homepage";
@ -19,7 +19,7 @@ export type Config = {
* @minItems 1 * @minItems 1
* @examples require(".").matchDomainsExamples * @examples require(".").matchDomainsExamples
*/ */
match_domains?: DomainNames; match_domains?: DomainName[];
/* Optional homepage configuration */ /* Optional homepage configuration */
homepage?: HomepageConfig; 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 LoadBalance from "./providers/loadbalance";
import * as Routes from "./providers/routes"; import * as Routes from "./providers/routes";
import * as GoDoxy from "./types"; 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 LoadBalance from "./providers/loadbalance";
import * as Routes from "./providers/routes"; import * as Routes from "./providers/routes";
import * as GoDoxy from "./types"; 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 * 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 { export {
AccessLog, AccessLog,
Autocert, Autocert,
Config, Config,
ConfigSchema,
DockerRoutesSchema,
Entrypoint, Entrypoint,
GoDoxy, GoDoxy,
Healthcheck, Healthcheck,
@ -27,8 +34,10 @@ export {
IdleWatcher, IdleWatcher,
LoadBalance, LoadBalance,
MiddlewareCompose, MiddlewareCompose,
MiddlewareComposeSchema,
Middlewares, Middlewares,
Notification, Notification,
Providers, Providers,
Routes, 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 StatusCode = number | `${number}`;
export type StatusCodeRange = number | `${number}` | `${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 * @format hostname
* @type string * @type string

View file

@ -45,13 +45,13 @@ export type StatusCode = number | `${number}`;
export type StatusCodeRange = number | `${number}` | `${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 * @format hostname
* @type string * @type string