cdk8s
Version:
This is the core library of Cloud Development Kit (CDK) for Kubernetes (cdk8s). cdk8s apps synthesize into standard Kubernetes manifests which can be applied to any Kubernetes cluster.
70 lines (69 loc) • 2 kB
TypeScript
type JsonSchema = boolean | ArraySchema | ObjectSchema | NumberSchema | StringSchema;
type JsonType = 'array' | 'object' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
interface CommonSchema {
type?: JsonType | JsonType[];
const?: unknown;
enum?: unknown[];
format?: string;
allOf?: JsonSchema[];
anyOf?: JsonSchema[];
oneOf?: JsonSchema[];
not?: JsonSchema;
if?: JsonSchema;
then?: JsonSchema;
else?: JsonSchema;
$id?: string;
$defs?: Record<string, JsonSchema>;
$anchor?: string;
$dynamicAnchor?: string;
$ref?: string;
$dynamicRef?: string;
$schema?: string;
$vocabulary?: Record<string, boolean>;
$comment?: string;
default?: unknown;
deprecated?: boolean;
readOnly?: boolean;
writeOnly?: boolean;
title?: string;
description?: string;
examples?: unknown[];
}
interface ArraySchema extends CommonSchema {
prefixItems?: JsonSchema[];
items?: JsonSchema;
contains?: JsonSchema;
unevaluatedItems?: JsonSchema;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
maxContains?: number;
minContains?: number;
}
interface ObjectSchema extends CommonSchema {
properties?: Record<string, JsonSchema>;
patternProperties?: Record<string, JsonSchema>;
additionalProperties?: JsonSchema;
propertyNames?: JsonSchema;
unevaluatedProperties?: JsonSchema;
maxProperties?: number;
minProperties?: number;
required?: string[];
dependentRequired?: Record<string, string[]>;
dependentSchemas?: Record<string, JsonSchema>;
}
interface StringSchema extends CommonSchema {
maxLength?: number;
minLength?: number;
patter?: string;
contentEncoding?: string;
contentMediaType?: string;
contentSchema?: JsonSchema;
}
interface NumberSchema extends CommonSchema {
multipleOf?: number;
maximum?: number;
exclusiveMaximum?: number;
minimum?: number;
exclusiveMinimum?: number;
}