Initial Commit
This commit is contained in:
68
packages/api-stack/api/api-plugin-site/src/schemas/domain.ts
Normal file
68
packages/api-stack/api/api-plugin-site/src/schemas/domain.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import z from "zod";
|
||||
import { RecordIdSchema, SiteSchema } from "./site.js";
|
||||
|
||||
/**
|
||||
* Domain regex: standard DNS name, `localhost`, IPv4 literal.
|
||||
*
|
||||
* Mirrors the upstream `domain.schema.ts` regex — see `domain.md`
|
||||
* for the full grammar table.
|
||||
*/
|
||||
const DOMAIN_REGEX =
|
||||
/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$|^localhost$|^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/i;
|
||||
|
||||
/** Domain literal schema (1..253 chars, regex-validated). */
|
||||
export const DomainSchema = z
|
||||
.string()
|
||||
.min(1)
|
||||
.max(253)
|
||||
.regex(DOMAIN_REGEX, "Invalid domain format");
|
||||
|
||||
/** `POST /sites/:id/domains` body. */
|
||||
export const AddDomainRequestSchema = z.object({
|
||||
domain: DomainSchema,
|
||||
});
|
||||
|
||||
/** Response from `POST /sites/:id/domains`. */
|
||||
export const AddDomainResponseSchema = z.object({
|
||||
success: z.boolean(),
|
||||
domains: z.array(z.string()),
|
||||
error: z.string().optional(),
|
||||
});
|
||||
|
||||
/** `DELETE /sites/:id/domains` body. */
|
||||
export const RemoveDomainRequestSchema = z.object({
|
||||
domain: DomainSchema,
|
||||
});
|
||||
|
||||
/** Response from `DELETE /sites/:id/domains`. */
|
||||
export const RemoveDomainResponseSchema = z.object({
|
||||
success: z.boolean(),
|
||||
domains: z.array(z.string()),
|
||||
error: z.string().optional(),
|
||||
});
|
||||
|
||||
/** `GET /sites/resolve/:domain` path param. */
|
||||
export const DomainResolveParamSchema = z.object({
|
||||
domain: DomainSchema,
|
||||
});
|
||||
|
||||
/** Response from `GET /sites/resolve/:domain`. */
|
||||
export const DomainResolveResponseSchema = z.object({
|
||||
success: z.boolean(),
|
||||
site: SiteSchema.optional(),
|
||||
organization: z
|
||||
.object({
|
||||
id: RecordIdSchema,
|
||||
name: z.string(),
|
||||
slug: z.string(),
|
||||
})
|
||||
.optional(),
|
||||
error: z.string().optional(),
|
||||
});
|
||||
|
||||
export type AddDomainRequest = z.infer<typeof AddDomainRequestSchema>;
|
||||
export type AddDomainResponse = z.infer<typeof AddDomainResponseSchema>;
|
||||
export type RemoveDomainRequest = z.infer<typeof RemoveDomainRequestSchema>;
|
||||
export type RemoveDomainResponse = z.infer<typeof RemoveDomainResponseSchema>;
|
||||
export type DomainResolveParam = z.infer<typeof DomainResolveParamSchema>;
|
||||
export type DomainResolveResponse = z.infer<typeof DomainResolveResponseSchema>;
|
||||
Reference in New Issue
Block a user